temp
This commit is contained in:
@@ -651,7 +651,7 @@ namespace BeWo
|
||||
{
|
||||
String url = "";
|
||||
#if DEBUG
|
||||
url = String.Format("http://localhost:3777/Host");
|
||||
//url = String.Format("http://localhost:3777/Host");
|
||||
//return new Uri("https://app5.bewoplaner.de/service");
|
||||
//url = String.Format("app1.bewoplaner.de/service");
|
||||
#endif
|
||||
|
||||
@@ -18,18 +18,19 @@ namespace BeWo.Converter
|
||||
if (state is null)
|
||||
return null;
|
||||
|
||||
switch (state.Value)
|
||||
{
|
||||
case GkvState.NoSend: return "Erstellt";
|
||||
case GkvState.Waiting: return "Gesendet";
|
||||
case GkvState.Waiting4Urbelege: return "Urbelege per Post";
|
||||
case GkvState.Error: return "Fehler";
|
||||
case GkvState.ErrorFatal: return "Fataler Fehler";
|
||||
case GkvState.Paid: return "Bezahlt";
|
||||
case GkvState.OldAndNoFeedback: return "Keine Antwort";
|
||||
}
|
||||
switch (state.Value)
|
||||
{
|
||||
case GkvState.NoSend: return "Erstellt";
|
||||
case GkvState.Error: return "Fehler";
|
||||
case GkvState.ErrorFatal: return "Fataler Fehler";
|
||||
case GkvState.Paid: return "Bezahlt";
|
||||
case GkvState.WaitingForDakota: return "Warte auf Übertragung";
|
||||
case GkvState.WaitingForKrankenkasse: return "Warte auf Gkv";
|
||||
case GkvState.WaitingForKrankenkasseTooLong: return "Keine Antwort von Gkv";
|
||||
case GkvState.WaitingForUrbelege: return "Sende Urbelege";
|
||||
}
|
||||
|
||||
return state.ToString();
|
||||
return state.ToString();
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace BeWo
|
||||
{
|
||||
#if DEBUG
|
||||
|
||||
return _CurrentConfig ?? (_CurrentConfig = Feature_Dakota);
|
||||
return _CurrentConfig ?? (_CurrentConfig = null);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2097,7 +2097,7 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceNumberDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceNumberDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferFehlerlevel))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvAbrechnungApp8RequestTypeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC>))]
|
||||
@@ -6335,7 +6335,7 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InvoiceNumberDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceNumberDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferFehlerlevel))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvAbrechnungApp8RequestTypeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC>))]
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
x:Name="radioFilterByAccountingDate"
|
||||
Click="radioFilterByInvoiceDate_Click"
|
||||
Content="Nach Abrechnungszeitraum filtern"
|
||||
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. Jahr beinhalten." />
|
||||
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. das ausgewählte Jahr beinhalten." />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.Resources>
|
||||
|
||||
@@ -121,18 +121,28 @@ namespace BeWo.View.Detail.Accounting
|
||||
}
|
||||
private void NewGkvAbrechnungPopUpViewCreateButtonClicked(object sender, EventArgs<GkvAbrechnungDC> e)
|
||||
{
|
||||
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked).Select(x => x.DataContract.InvoiceBaseOid.Value).ToList();
|
||||
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked);
|
||||
|
||||
// MessageBox.Show("Sie haben keine Rechnung hinzugefügt.", "GKV-Abrechnung erstellen", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
if (checked_invoice_bases.Count == 0)
|
||||
if (!checked_invoice_bases.Any())
|
||||
return;
|
||||
|
||||
var already_used_invoices = checked_invoice_bases.Where(x => x.IsAlreadyInActiveGkvAbrechnung.Value);
|
||||
if (already_used_invoices.Any())
|
||||
{
|
||||
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
|
||||
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
|
||||
|
||||
if (result != MessageBoxResult.OK)
|
||||
return;
|
||||
}
|
||||
|
||||
MainControl.CloseCurrentPopUp();
|
||||
|
||||
var gkv_abrechnung = e.Data;
|
||||
var gkv_filter = new GkvAbrechnungRequestDC(gkv_abrechnung);
|
||||
|
||||
gkv_filter.SelectedInvoiceBases = checked_invoice_bases;
|
||||
gkv_filter.SelectedInvoiceBases = checked_invoice_bases.Select(x => x.DataContract.InvoiceBaseOid.Value).ToList();
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(x => x.CreateNewGkvAbrechnung(gkv_filter),
|
||||
cb => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
|
||||
@@ -205,24 +215,6 @@ namespace BeWo.View.Detail.Accounting
|
||||
can_send |= state == GkvState.ErrorFatal;
|
||||
#endif
|
||||
|
||||
if (!can_send)
|
||||
{
|
||||
string error;
|
||||
if (state == GkvState.Waiting)
|
||||
error = "Es wurde bereits übertragen ohne direkte Fehler.";
|
||||
else if (state == GkvState.ErrorFatal)
|
||||
error = "GKV-Abrechnung enthält schwere Fehler. Erstellen Sie die Rechnung erneut.";
|
||||
else if (state == GkvState.Paid)
|
||||
error = "GKV-Abrechnung ist bereits als bezahlt markiert.";
|
||||
else if (state == GkvState.OldAndNoFeedback)
|
||||
error = "GKV-Abrechnung ist älter als 28 Tage und als nicht bezahlt markiert. Wenden Sie sich bitte an Ihre Krankenkasse";
|
||||
else
|
||||
error = "def";
|
||||
|
||||
MessageBox.Show(error, "Übertragung nicht möglich");
|
||||
return;
|
||||
}
|
||||
|
||||
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
|
||||
|
||||
if (state == GkvState.Error)
|
||||
@@ -306,12 +298,12 @@ namespace BeWo.View.Detail.Accounting
|
||||
if (gkvAbrechnungVM is null)
|
||||
return;
|
||||
|
||||
if (gkvAbrechnungVM.GkvState == GkvState.OldAndNoFeedback)
|
||||
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong)
|
||||
{
|
||||
e.Result = Brushes.Orange;
|
||||
e.Handled = true;
|
||||
}
|
||||
else if (gkvAbrechnungVM.GkvState == GkvState.Waiting4Urbelege)
|
||||
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege)
|
||||
{
|
||||
e.Result = Brushes.Green;
|
||||
e.Handled = true;
|
||||
|
||||
@@ -224,6 +224,11 @@
|
||||
FieldName="IsPaid"
|
||||
Header="Bezahlt"
|
||||
IsEnabledBinding="{Binding Source=false}" />
|
||||
<dxg:GridColumn
|
||||
x:Name="AlreadyInActiveGkvAbrechnungColumn"
|
||||
FieldName="IsAlreadyInActiveGkvAbrechnung"
|
||||
Header="Bereits enthalten"
|
||||
IsEnabledBinding="{Binding Source=false}" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace BeWo.View.Detail.Accounting
|
||||
{
|
||||
_LoadedInvoiceBaseOid = costOid;
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBasesForCostBearerAndId(start, ende, (long)costOid, "RechnungSoziotherapie"), UpdateInvoiceList);
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBasesForCostBearerAndIdAndIsUsed(start, ende, (long)costOid, "RechnungSoziotherapie"), UpdateInvoiceList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -324,11 +324,17 @@ namespace BeWo.View.Detail
|
||||
|
||||
private void IKRequestCallback(GkvApp8GetIKRequest req, GkvApp8GetIKResponse response)
|
||||
{
|
||||
if(response is null || !response.Success)
|
||||
{
|
||||
MessageBox.Show($"Interner Serverfehler.", "Fehler");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!response.Gefunden)
|
||||
{
|
||||
MessageBox.Show($"Für die Organisation mit dem IK \"{req.IKKrankenkasse}\" und Leistungserbringergruppe \"{req.Leistungserbringergruppe}\" konnte keine Datenannahmestelle gefunden werden. " +
|
||||
$"Bitte informieren Sie sich bei der Krankenkasse, ob zum elektronischen Datenaustausch " +
|
||||
$"eine seperate Anmeldung benötigt wird.");
|
||||
$"eine seperate Anmeldung benötigt wird.", "Fehler");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,10 @@ namespace BeWo.View.Master
|
||||
}
|
||||
|
||||
private void RemoveView(TabItem pTabItem)
|
||||
=> AddView(pTabItem, null);
|
||||
{
|
||||
_OpenViews.Remove(pTabItem);
|
||||
pTabItem.Content = null;
|
||||
}
|
||||
|
||||
private void InitRights()
|
||||
{
|
||||
|
||||
@@ -12,11 +12,12 @@ using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.DataContracts.GkvAbrechnung;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Interface;
|
||||
using DevExpress.Xpf.Core;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>
|
||||
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>, IGkvAbrechnung
|
||||
{
|
||||
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
|
||||
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
|
||||
@@ -57,7 +58,6 @@ namespace BeWo.ViewModel
|
||||
|
||||
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumStart
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumStart; }
|
||||
@@ -76,8 +76,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumEnde
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumEnde; }
|
||||
@@ -92,8 +90,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime ErstelltAm
|
||||
{
|
||||
get { return this._ErstelltAm; }
|
||||
@@ -108,8 +104,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungOid
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
@@ -124,8 +118,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungVersion
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
@@ -140,7 +132,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Notice
|
||||
{
|
||||
get { return this._Notice; }
|
||||
@@ -155,8 +146,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public decimal Betrag
|
||||
{
|
||||
get { return this._Betrag; }
|
||||
@@ -171,8 +160,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public bool Bezahlt
|
||||
{
|
||||
get { return _Bezahlt; }
|
||||
@@ -189,7 +176,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool UrbelegeGesendet
|
||||
{
|
||||
get { return _UrbelegeGesendet; }
|
||||
@@ -204,12 +190,9 @@ namespace BeWo.ViewModel
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public GkvState GkvState
|
||||
{
|
||||
get { return GetState(); }
|
||||
get { return this.GetState(); }
|
||||
}
|
||||
|
||||
public bool IsChecked
|
||||
@@ -231,13 +214,11 @@ namespace BeWo.ViewModel
|
||||
get { return _InvoiceBases2; }
|
||||
set { _InvoiceBases2 = value; }
|
||||
}
|
||||
|
||||
public BindingList<InvoiceBaseVM> InvoiceBases
|
||||
{
|
||||
get { return _InvoiceBases; }
|
||||
set { _InvoiceBases = value; }
|
||||
}
|
||||
|
||||
public List<GkvTransferProtokollDC> TransferProtokolle
|
||||
{
|
||||
get { return _TransferProtokolle; }
|
||||
@@ -250,8 +231,6 @@ namespace BeWo.ViewModel
|
||||
FirePropertyChanged(nameof(LastTransferDateTime));
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public OrganisationDC Organisation
|
||||
{
|
||||
get { return this._Organisation; }
|
||||
@@ -266,7 +245,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GkvVerfahrensstufe Verfahrensstufe
|
||||
{
|
||||
get { return this._Verfahrensstufe; }
|
||||
@@ -281,7 +259,6 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int VerfahrensstufeInt
|
||||
{
|
||||
get { return (int)Verfahrensstufe; }
|
||||
@@ -296,6 +273,7 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
public IGkvTransferProtokoll LastTransferProtokoll => TransferProtokolle?.Last();
|
||||
|
||||
public string RecipientString
|
||||
{
|
||||
@@ -309,7 +287,6 @@ namespace BeWo.ViewModel
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public string Fehlermeldung
|
||||
{
|
||||
get
|
||||
@@ -325,7 +302,6 @@ namespace BeWo.ViewModel
|
||||
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime? LastTransferDateTime
|
||||
{
|
||||
get
|
||||
@@ -338,7 +314,6 @@ namespace BeWo.ViewModel
|
||||
return last.ErstelltAm;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsReady2Send
|
||||
{
|
||||
get { return _IsReady2Send; }
|
||||
@@ -351,7 +326,6 @@ namespace BeWo.ViewModel
|
||||
FirePropertyChanged(nameof(IsReady2Send));
|
||||
}
|
||||
}
|
||||
|
||||
public string SendTooltip
|
||||
{
|
||||
get { return _SendTooltip; }
|
||||
@@ -370,30 +344,6 @@ namespace BeWo.ViewModel
|
||||
public bool IsReady2Create
|
||||
=> InvoiceBases?.Where(x => x.IsChecked).Any() ?? false;
|
||||
|
||||
public GkvState GetState()
|
||||
{
|
||||
return GkvAbrechnungExtensions.GetState(
|
||||
this,
|
||||
() => Bezahlt,
|
||||
() => UrbelegeGesendet,
|
||||
() => TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
|
||||
public static GkvState GetState(GkvAbrechnungVM vm)
|
||||
{
|
||||
return GkvAbrechnungExtensions.GetState(
|
||||
vm,
|
||||
() => vm.Bezahlt,
|
||||
() => vm.UrbelegeGesendet,
|
||||
() => vm.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
|
||||
public void UpdateByDataContract(GkvAbrechnungDC pDataContract)
|
||||
{
|
||||
GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
|
||||
@@ -496,11 +446,11 @@ namespace BeWo.ViewModel
|
||||
|
||||
var protokoll = cb.TransferProtokoll;
|
||||
|
||||
if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Soft)
|
||||
if (protokoll.ResultType == GkvTransferResultType.Soft)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
|
||||
}
|
||||
else if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Fatal)
|
||||
else if (protokoll.ResultType == GkvTransferResultType.Fatal)
|
||||
{
|
||||
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
|
||||
}
|
||||
|
||||
@@ -207,6 +207,7 @@ namespace BeWo.ViewModel
|
||||
|
||||
public bool IsGkvValid { get; private set; }
|
||||
public string IsGkvValidError { get; private set; }
|
||||
public bool? IsAlreadyInActiveGkvAbrechnung { get; private set; }
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
@@ -1018,6 +1019,7 @@ namespace BeWo.ViewModel
|
||||
|
||||
IsGkvValid = pDataContract.IsGkvValid;
|
||||
IsGkvValidError = pDataContract.IsGkvValidError;
|
||||
IsAlreadyInActiveGkvAbrechnung = pDataContract.IsAlreadyInActiveGkvAbrechnung;
|
||||
}
|
||||
|
||||
protected override InvoiceBaseDC MapToDataContract(InvoiceBaseDC pDataContract, bool doCommit)
|
||||
|
||||
@@ -13,13 +13,15 @@
|
||||
<basicHttpBinding>
|
||||
<binding name="BeWoBasicEndpoint" closeTimeout="00:05:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
<!--<security mode="None" />-->
|
||||
<security mode="Transport" />
|
||||
<!-- mode="Transport" für https und "None" sonst-->
|
||||
</binding>
|
||||
<binding name="BeWoStreamingEndpoint" receiveTimeout="10:10:00" sendTimeout="10:01:00" maxBufferSize="65536" maxReceivedMessageSize="67108864" transferMode="StreamedRequest" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
<!-- mode="Transport" für https -->
|
||||
<!--<security mode="None" />-->
|
||||
<security mode="Transport" />
|
||||
<!-- mode="Transport" für https und "None" sonst-->
|
||||
</binding>
|
||||
<binding name="QueryServiceEndpoint" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DakotaSystemFile.cs" />
|
||||
<Compile Include="FehlerXml.cs" />
|
||||
<Compile Include="ResultXml.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="XmlFileConverter.cs" />
|
||||
|
||||
@@ -198,7 +198,12 @@ namespace DakotaSender
|
||||
error = e.ToString();
|
||||
}
|
||||
|
||||
if (error is string)
|
||||
if (error == string.Empty)
|
||||
{
|
||||
// Dakota läuft bereits.
|
||||
// Nächster Run
|
||||
}
|
||||
else if (error is string)
|
||||
{
|
||||
PrintLine(error);
|
||||
MoveQueueToFailed(file);
|
||||
@@ -206,8 +211,12 @@ namespace DakotaSender
|
||||
if (copied)
|
||||
DeleteDakotaFile(file);
|
||||
|
||||
CreateResultXmlFile(file, error);
|
||||
CreateResultFehlerXmlFile(file, error);
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateResultSuccessXmlFile(file);
|
||||
}
|
||||
}
|
||||
static string ProcessFile(DakotaSystemFile file, out bool copied)
|
||||
{
|
||||
@@ -233,7 +242,7 @@ namespace DakotaSender
|
||||
|
||||
DeleteDakotaFile(file);
|
||||
|
||||
return null;
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
if (!AcceptSendCodes.Contains(code))
|
||||
@@ -243,24 +252,29 @@ namespace DakotaSender
|
||||
DeleteQueueFile(file);
|
||||
return null;
|
||||
}
|
||||
static void CreateResultXmlFile(DakotaSystemFile file, string error)
|
||||
{
|
||||
Print("Speichere Fehler als Xml. ");
|
||||
|
||||
var fehler = new FehlerXml();
|
||||
static void CreateResultSuccessXmlFile(DakotaSystemFile file)
|
||||
=> CreateResultXmlFile(file, "Dakota Erfolg", "", 0);
|
||||
static void CreateResultFehlerXmlFile(DakotaSystemFile file, string error)
|
||||
=> CreateResultXmlFile(file, "Dakota Fehler", error, 1);
|
||||
static void CreateResultXmlFile(DakotaSystemFile file, string title, string nachricht, int fehler_level)
|
||||
{
|
||||
Print($"Speichere {title} als Xml. ");
|
||||
|
||||
fehler.Datum = DateTime.Now;
|
||||
fehler.Titel = "Dakota Fehler";
|
||||
fehler.Nachricht = error;
|
||||
fehler.Level = 1;
|
||||
fehler.Oid = file.ProtokollOid;
|
||||
var result = new ResultXml();
|
||||
|
||||
result.Datum = DateTime.Now;
|
||||
result.Titel = title;
|
||||
result.Nachricht = nachricht;
|
||||
result.Level = fehler_level;
|
||||
result.Oid = file.ProtokollOid;
|
||||
|
||||
var folder = GetResultFolderTenant(file.Tenant).FullName;
|
||||
var path = Path.Combine(folder, $"P{file.ProtokollOid}.xml");
|
||||
|
||||
Print($"Path: {path}");
|
||||
Print($"Path: {path}. ");
|
||||
|
||||
XmlFileConverter.Save(fehler, path);
|
||||
XmlFileConverter.Save(result, path);
|
||||
|
||||
PrintLine("Ok.");
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ using System.Xml.Serialization;
|
||||
namespace DakotaSender
|
||||
{
|
||||
[Serializable()]
|
||||
[XmlRoot("Fehler")]
|
||||
public class FehlerXml
|
||||
[XmlRoot("Result")]
|
||||
public class ResultXml
|
||||
{
|
||||
[XmlAttribute("Oid")]
|
||||
public long Oid { get; set; }
|
||||
@@ -12,10 +12,10 @@ namespace DakotaSender
|
||||
/// <summary>
|
||||
/// Saves to an xml file
|
||||
/// </summary>
|
||||
/// <param name="FileName">File path of the new xml file</param>
|
||||
public static void Save<T>(T obj, string FileName) where T : class
|
||||
/// <param name="fileName">File path of the new xml file</param>
|
||||
public static void Save<T>(T obj, string fileName) where T : class
|
||||
{
|
||||
using (var writer = new System.IO.StreamWriter(FileName))
|
||||
using (var writer = new System.IO.StreamWriter(fileName))
|
||||
{
|
||||
var serializer = new XmlSerializer(obj.GetType());
|
||||
serializer.Serialize(writer, obj);
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace DakotaUnitTest
|
||||
[TestMethod]
|
||||
public void ValidateXmlParse()
|
||||
{
|
||||
var convert = GkvApp8FehlerXml.GetFehlerXml("fehler_example.xml");
|
||||
var convert = GkvApp8ResultXml.GetResultXml("fehler_example.xml");
|
||||
|
||||
Assert.IsNotNull(convert);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Fehler Oid="31">
|
||||
<Result Oid="31">
|
||||
<Titel>31</Titel>
|
||||
<Datum>2024-06-01T09:00:00</Datum>
|
||||
<Nachricht>TestNach</Nachricht>
|
||||
<Level>1</Level>
|
||||
</Fehler>
|
||||
</Result>
|
||||
@@ -5940,7 +5940,7 @@ namespace BeWo.Data.Access
|
||||
public int GetNextDatenaustauschreferenz(string datenannahmestelle)
|
||||
{
|
||||
var criteria = CreateCriteria<GkvTransferProtokoll>()
|
||||
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentSuccess && x.IKDatenannahmestelle == datenannahmestelle))
|
||||
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentApp8Success && x.IKDatenannahmestelle == datenannahmestelle))
|
||||
.SetProjection(Projections.Max("Datenaustauschreferenz"));
|
||||
|
||||
var t = criteria.List<int?>().SingleOrDefault();
|
||||
@@ -5951,7 +5951,7 @@ namespace BeWo.Data.Access
|
||||
public int GetNextTransfernummer(string datenannahmestelle)
|
||||
{
|
||||
var criteria = CreateCriteria<GkvTransferProtokoll>()
|
||||
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentSuccess && x.IKDatenannahmestelle == datenannahmestelle))
|
||||
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentApp8Success && x.IKDatenannahmestelle == datenannahmestelle))
|
||||
.SetProjection(Projections.Max("Transfernummer"));
|
||||
|
||||
var t = criteria.List<int?>().SingleOrDefault();
|
||||
|
||||
@@ -3,10 +3,11 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Interface;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class GkvAbrechnung : BeWoEntityBase
|
||||
public class GkvAbrechnung : BeWoEntityBase, IGkvAbrechnung
|
||||
{
|
||||
public GkvAbrechnung()
|
||||
{
|
||||
@@ -25,17 +26,9 @@ namespace BeWo.Data.Entities
|
||||
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
|
||||
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
|
||||
|
||||
public static GkvState GetState(GkvAbrechnung entity) =>
|
||||
GkvAbrechnungExtensions.GetState(
|
||||
entity,
|
||||
() => entity.Bezahlt,
|
||||
() => entity.UrbelegeGesendet,
|
||||
() => entity.GkvTransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
public IGkvTransferProtokoll LastTransferProtokoll { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
||||
|
||||
public virtual Organisation GetOrganisation()
|
||||
public virtual Organisation GetOrganisation()
|
||||
{
|
||||
return InvoiceBases.First().CostBearer2SupportConcept.CostBearer.Organisation;
|
||||
}
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.Interface;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class GkvTransferProtokoll : BeWoEntityBase
|
||||
public class GkvTransferProtokoll : BeWoEntityBase, IGkvTransferProtokoll
|
||||
{
|
||||
public GkvTransferProtokoll()
|
||||
{
|
||||
@@ -36,11 +37,12 @@ namespace BeWo.Data.Entities
|
||||
public virtual string Nutzdatendatei { get; set; }
|
||||
public virtual string Auftragsdatei { get; set; }
|
||||
|
||||
public virtual bool SentSuccess { get; set; }
|
||||
public virtual bool SentApp8Success { get; set; }
|
||||
public virtual bool SentDakotaSuccess { get; set; }
|
||||
|
||||
public virtual GkvTransferResultType? ResultType { get; set; }
|
||||
public virtual string Fehlertitel { get; set; }
|
||||
public virtual DateTime? Fehlerdatum { get; set; }
|
||||
public virtual string Fehlernachricht { get; set; }
|
||||
public virtual GkvTransferFehlerlevel Fehlerlevel { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -33,10 +33,11 @@
|
||||
<property column="Transfernummer" type="int" name="Transfernummer" />
|
||||
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
|
||||
|
||||
<property column="SentSuccess" type="Boolean" name="SentSuccess" />
|
||||
<property column="Fehlertitel" type="string" name="Fehlertitel" />
|
||||
<property column="Fehlerdatum" type="DateTime" name="Fehlerdatum" />
|
||||
<property column="Fehlernachricht" type="string" name="Fehlernachricht" />
|
||||
<property column="Fehlerlevel" type="BS.Shared.GkvTransferFehlerlevel, BS.Shared" name="Fehlerlevel" />
|
||||
<property column="SentApp8Success" type="Boolean" name="SentApp8Success" />
|
||||
<property column="SentDakotaSuccess" type="Boolean" name="SentDakotaSuccess" />
|
||||
<property column="ResultType" type="BS.Shared.GkvTransferResultType, BS.Shared" name="ResultType" />
|
||||
<property column="Fehlertitel" type="string" name="Fehlertitel" />
|
||||
<property column="Fehlerdatum" type="DateTime" name="Fehlerdatum" />
|
||||
<property column="Fehlernachricht" type="string" name="Fehlernachricht" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
||||
@@ -33,6 +33,7 @@ using System.Xml.Linq;
|
||||
using System.Diagnostics;
|
||||
using System.Xml.Serialization;
|
||||
using Dakota.Logic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Host
|
||||
{
|
||||
@@ -49,6 +50,8 @@ namespace Host
|
||||
|
||||
public GkvApp8Request GkvRequest { get; set; }
|
||||
|
||||
public void Sleep() => Thread.Sleep(5000);
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
@@ -83,8 +86,6 @@ namespace Host
|
||||
SendErrorResponse("GkvAbrechnungType unbekannt.");
|
||||
return;
|
||||
}
|
||||
|
||||
SendErrorResponse("Unbekannter Fehler");
|
||||
}
|
||||
catch (ThreadAbortException eee)
|
||||
{
|
||||
@@ -94,7 +95,6 @@ namespace Host
|
||||
{
|
||||
var ex_text = ex.Message + "\n" + ex.StackTrace;
|
||||
SendErrorResponse(ex_text);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +105,8 @@ namespace Host
|
||||
response.Success = false;
|
||||
response.Message = message;
|
||||
|
||||
Sleep();
|
||||
|
||||
SendResponse(JsonConvert.SerializeObject(response));
|
||||
}
|
||||
private void SendResponse(object res) => SendResponse(JsonConvert.SerializeObject(res));
|
||||
@@ -139,21 +141,21 @@ namespace Host
|
||||
private bool TryLogin() => TryLogin(GkvRequest);
|
||||
private bool TryLogin(GkvApp8Request gkv_request)
|
||||
{
|
||||
if (gkv_request.Tenant == "demo" && gkv_request.Username == "demo" && gkv_request.DebugMode == "fozc4897b6ztvf978AFCRRG244fvFV2532fvf324AF")
|
||||
{
|
||||
gkv_request.Tenant = "7375324044";
|
||||
return true;
|
||||
}
|
||||
|
||||
var server = GetServerFromTenant(gkv_request.Tenant);
|
||||
|
||||
if (string.IsNullOrEmpty(server))
|
||||
return false;
|
||||
|
||||
var loginurl = string.Format(LOGINSERVER_URL, $"https://{server}/service");
|
||||
|
||||
#if DEBUG
|
||||
//loginurl = string.Format(LOGINSERVER_URL, "https://app4.bewoplaner.de");
|
||||
loginurl = string.Format(LOGINSERVER_URL, "http://localhost:3777/Host");
|
||||
if(server.IndexOf("localhost") > 0)
|
||||
loginurl = string.Format(LOGINSERVER_URL, $"http://{server}/Host");
|
||||
#endif
|
||||
|
||||
bool successful = false;
|
||||
bool successful;
|
||||
byte[] result;
|
||||
string result_str;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -164,9 +166,8 @@ namespace Host
|
||||
nvc.Add("username", gkv_request.Username);
|
||||
nvc.Add("tenant", gkv_request.Tenant);
|
||||
|
||||
var loginresponse = client.UploadValues(loginurl, "POST", nvc);
|
||||
|
||||
successful = BitConverter.ToBoolean(loginresponse, 0);
|
||||
result = client.UploadValues(loginurl, "POST", nvc);
|
||||
result_str = Encoding.Default.GetString(result);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -174,6 +175,8 @@ namespace Host
|
||||
throw new DakotaException($"loginurl: {loginurl} | " + e.ToString());
|
||||
}
|
||||
|
||||
successful = Convert.ToBoolean(result_str);
|
||||
|
||||
return successful;
|
||||
}
|
||||
|
||||
@@ -186,16 +189,16 @@ namespace Host
|
||||
|
||||
try
|
||||
{
|
||||
SaveFileInFileSystem(req, true);
|
||||
var finalpath = SaveFileInFileSystem(req);
|
||||
|
||||
req.GkvTransferProtokoll.SentSuccess = true;
|
||||
req.GkvTransferProtokoll.SentApp8Success = true;
|
||||
|
||||
response.Success = true;
|
||||
}
|
||||
catch (DakotaException e)
|
||||
{
|
||||
protokoll.ResultType = GkvTransferResultType.Soft;
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
|
||||
protokoll.Fehlertitel = "App8";
|
||||
protokoll.Fehlernachricht = e.Message;
|
||||
|
||||
@@ -203,8 +206,8 @@ namespace Host
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
protokoll.ResultType = GkvTransferResultType.Soft;
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
|
||||
protokoll.Fehlertitel = "App8";
|
||||
protokoll.Fehlernachricht = e.Message;
|
||||
|
||||
@@ -221,7 +224,7 @@ namespace Host
|
||||
|
||||
var tuple_count = req.Oids.Length;
|
||||
|
||||
response.Fehler = new GkvApp8FehlerDC[tuple_count];
|
||||
response.Result = new GkvApp8ResultDC[tuple_count];
|
||||
|
||||
try
|
||||
{
|
||||
@@ -235,7 +238,7 @@ namespace Host
|
||||
|
||||
if (results.TryGetValue(gkv_transfer_oid, out var fehlerDC))
|
||||
{
|
||||
response.Fehler[i] = fehlerDC;
|
||||
response.Result[i] = fehlerDC;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,24 +281,13 @@ namespace Host
|
||||
SendResponse(response);
|
||||
}
|
||||
|
||||
private string SaveFileInFileSystem(GkvApp8SendNewRequest req, bool debug_mode = false)
|
||||
private string SaveFileInFileSystem(GkvApp8SendNewRequest req)
|
||||
=> SaveFileInFileSystem(req.GkvTransferProtokoll.GkvTransferProtokollOid.Value, GkvRequest.Tenant, req.GkvTransferProtokoll.IKDatenannahmestelle, req.GkvTransferProtokoll.Transfername,
|
||||
req.GkvTransferProtokoll.Nutzdatendatei, req.GkvTransferProtokoll.Auftragsdatei, debug_mode);
|
||||
private string SaveFileInFileSystem(long protokoll_oid, string tenant, string datenannahmestelle, string transfername, string nutzdaten, string auftragsdatei, bool debug_mode = false)
|
||||
req.GkvTransferProtokoll.Nutzdatendatei, req.GkvTransferProtokoll.Auftragsdatei);
|
||||
private string SaveFileInFileSystem(long protokoll_oid, string tenant, string datenannahmestelle, string transfername, string nutzdaten, string auftragsdatei)
|
||||
{
|
||||
string root_path;
|
||||
string file_path;
|
||||
if (debug_mode)
|
||||
{
|
||||
root_path = QueueFolderPath;
|
||||
file_path = $@"{tenant}_{protokoll_oid}_{datenannahmestelle}_{transfername}";
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new DakotaException("No Debugmode impl");
|
||||
//root_path = $@"C:\GkvAbrechnung\{tenant}\{datenannahmestelle}\";
|
||||
//file_path = $@"{transfername}";
|
||||
}
|
||||
string root_path = QueueFolderPath;
|
||||
string file_path = $@"{tenant}_{protokoll_oid}_{datenannahmestelle}_{transfername}";
|
||||
|
||||
Directory.CreateDirectory(root_path);
|
||||
|
||||
@@ -316,9 +308,11 @@ namespace Host
|
||||
|
||||
private string GetServerFromTenant(string tenant)
|
||||
{
|
||||
#if DEBUG
|
||||
// return "localhost:3777";
|
||||
#endif
|
||||
try
|
||||
{
|
||||
|
||||
String url = String.Format(GETSERVER_URL, tenant);
|
||||
using (WebClient client = new WebClient())
|
||||
{
|
||||
@@ -345,15 +339,15 @@ namespace Host
|
||||
|
||||
foreach (var file in folder.GetFiles())
|
||||
{
|
||||
var xml_obj = GkvApp8FehlerXml.GetFehlerXml(file.FullName);
|
||||
var xml_obj = GkvApp8ResultXml.GetResultXml(file.FullName);
|
||||
|
||||
if (xml_obj is GkvApp8FehlerXml xml && oids.Contains(xml.Oid))
|
||||
if (xml_obj is GkvApp8ResultXml xml && oids.Contains(xml.Oid))
|
||||
continue;
|
||||
|
||||
file.Delete();
|
||||
}
|
||||
}
|
||||
private Dictionary<long, GkvApp8FehlerDC> GetResultFile(string tenant)
|
||||
private Dictionary<long, GkvApp8ResultDC> GetResultFile(string tenant)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -372,15 +366,15 @@ namespace Host
|
||||
return null;
|
||||
}
|
||||
|
||||
var dict = new Dictionary<long, GkvApp8FehlerDC>();
|
||||
var dict = new Dictionary<long, GkvApp8ResultDC>();
|
||||
foreach (var file in folder.GetFiles("*.xml"))
|
||||
{
|
||||
var xml = GkvApp8FehlerXml.GetFehlerXml(file.FullName);
|
||||
var xml = GkvApp8ResultXml.GetResultXml(file.FullName);
|
||||
|
||||
if (xml is null)
|
||||
continue;
|
||||
|
||||
dict.Add(xml.Oid, GkvApp8FehlerXml.ToDC(xml));
|
||||
dict.Add(xml.Oid, GkvApp8ResultXml.ToDC(xml));
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
@@ -23,15 +23,24 @@ namespace Host
|
||||
if (string.IsNullOrEmpty(password))
|
||||
password = null;
|
||||
|
||||
var user = DAOFactory.UserDAO.FindUserByLoginName(username);
|
||||
var b = false;
|
||||
try
|
||||
{
|
||||
var user = DAOFactory.UserDAO.FindUserByLoginName(username);
|
||||
|
||||
var result = user.BCryptPassword == password;
|
||||
|
||||
if (!result)
|
||||
{
|
||||
System.Threading.Thread.Sleep(3000);
|
||||
b = user.BCryptPassword == password;
|
||||
}
|
||||
catch(Exception exc)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
if (!b)
|
||||
{
|
||||
System.Threading.Thread.Sleep(5000);
|
||||
}
|
||||
|
||||
string result = b ? "True" : "False";
|
||||
Response.Write(result);
|
||||
Response.End();
|
||||
}
|
||||
|
||||
4
Model/Changes_2024_10_23 GkvUpdate.txt
Normal file
4
Model/Changes_2024_10_23 GkvUpdate.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE `gkvtransferprotokoll`
|
||||
ADD COLUMN `SentDakotaSuccess` TINYINT NOT NULL DEFAULT 0 AFTER `SentApp8Success`,
|
||||
CHANGE COLUMN `Fehlerlevel` `ResultType` INT NULL DEFAULT NULL AFTER `SentDakotaSuccess`,
|
||||
CHANGE COLUMN `SentSuccess` `SentApp8Success` TINYINT NOT NULL DEFAULT 0 ;
|
||||
@@ -48,32 +48,38 @@ namespace BeWo.Service.DCEntityMapper
|
||||
{
|
||||
case BS.Shared.GkvState.NoSend:
|
||||
isReady = true;
|
||||
tooltip = "Senden";
|
||||
break;
|
||||
case BS.Shared.GkvState.Waiting:
|
||||
isReady = false;
|
||||
tooltip = "Warte";
|
||||
tooltip = "Senden";
|
||||
break;
|
||||
case BS.Shared.GkvState.Waiting4Urbelege:
|
||||
isReady = false;
|
||||
tooltip = "Warte, Urbelege noch nicht gesendet";
|
||||
break;
|
||||
case BS.Shared.GkvState.Error:
|
||||
isReady = true;
|
||||
tooltip = "Erneut senden";
|
||||
break;
|
||||
case BS.Shared.GkvState.ErrorFatal:
|
||||
isReady = false;
|
||||
isReady = true;
|
||||
tooltip = "Fataler Fehler";
|
||||
break;
|
||||
case BS.Shared.GkvState.Paid:
|
||||
isReady = false;
|
||||
tooltip = "Bereits bezahlt";
|
||||
break;
|
||||
case BS.Shared.GkvState.OldAndNoFeedback:
|
||||
case BS.Shared.GkvState.WaitingForDakota:
|
||||
isReady = false;
|
||||
tooltip = "Informieren sie sich bei der jeweiligen GKV";
|
||||
tooltip = "Warte auf Übertragung";
|
||||
break;
|
||||
case BS.Shared.GkvState.WaitingForKrankenkasse:
|
||||
isReady = false;
|
||||
tooltip = "Warte auf Gkv";
|
||||
break;
|
||||
case BS.Shared.GkvState.WaitingForKrankenkasseTooLong:
|
||||
isReady = false;
|
||||
tooltip = "Informieren sie sich bei der jeweiligen Gkv";
|
||||
break;
|
||||
case BS.Shared.GkvState.WaitingForUrbelege:
|
||||
isReady = false;
|
||||
tooltip = "Urbelege noch nicht gesendet";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (isReady)
|
||||
|
||||
@@ -37,11 +37,12 @@ namespace BeWo.Service.DCEntityMapper
|
||||
|
||||
pDataContract.ErstelltAm = pEntity.ErstelltAm;
|
||||
|
||||
pDataContract.SentSuccess = pEntity.SentSuccess;
|
||||
pDataContract.SentApp8Success = pEntity.SentApp8Success;
|
||||
pDataContract.SentDakotaSuccess = pEntity.SentDakotaSuccess;
|
||||
|
||||
pDataContract.HasFehler = pEntity.Fehlerdatum.HasValue || !string.IsNullOrWhiteSpace(pEntity.Fehlernachricht);
|
||||
//pDataContract.HasFehler = pEntity.Fehlerdatum.HasValue || !string.IsNullOrWhiteSpace(pEntity.Fehlernachricht);
|
||||
pDataContract.ResultType = pEntity.ResultType;
|
||||
pDataContract.Fehlerdatum = pEntity.Fehlerdatum;
|
||||
pDataContract.Fehlerlevel = pEntity.Fehlerlevel;
|
||||
pDataContract.Fehlernachricht = pEntity.Fehlernachricht;
|
||||
pDataContract.Fehlertitel = pEntity.Fehlertitel;
|
||||
|
||||
@@ -76,9 +77,11 @@ namespace BeWo.Service.DCEntityMapper
|
||||
|
||||
pEntity.ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
pEntity.SentSuccess = pDataContract.SentSuccess;
|
||||
pEntity.SentApp8Success = pDataContract.SentApp8Success;
|
||||
pEntity.SentDakotaSuccess = pDataContract.SentDakotaSuccess;
|
||||
|
||||
pEntity.ResultType = pDataContract.ResultType;
|
||||
pEntity.Fehlerdatum = pDataContract.Fehlerdatum;
|
||||
pEntity.Fehlerlevel = pDataContract.Fehlerlevel;
|
||||
pEntity.Fehlernachricht = pDataContract.Fehlernachricht;
|
||||
pEntity.Fehlertitel = pDataContract.Fehlertitel;
|
||||
|
||||
|
||||
@@ -905,9 +905,9 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(oid);
|
||||
|
||||
var state = GkvAbrechnung.GetState(entity);
|
||||
var state = entity.GetState();
|
||||
|
||||
if (state == GkvState.Waiting || state == GkvState.OldAndNoFeedback || state == GkvState.Paid)
|
||||
if (entity.IsWaiting() || state == GkvState.Paid)
|
||||
{
|
||||
response.Message = "Validierung fehlgeschlagen";
|
||||
return response;
|
||||
@@ -940,15 +940,15 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
catch (DakotaException de)
|
||||
{
|
||||
protokoll.ResultType = GkvTransferResultType.Soft;
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
|
||||
protokoll.Fehlernachricht = de.Message;
|
||||
protokoll.Fehlertitel = de.Title ?? "Default";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
protokoll.ResultType = GkvTransferResultType.Fatal;
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Fatal;
|
||||
protokoll.Fehlernachricht = e.ToString();
|
||||
protokoll.Fehlertitel = "Erstellung (kritisch)";
|
||||
}
|
||||
@@ -1079,7 +1079,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
var datenaustauschref = DAOFactory.SearchDAO.GetNextDatenaustauschreferenz(datenannahmestelle);
|
||||
int transfernummer;
|
||||
|
||||
var state = GkvAbrechnung.GetState(gkvAbrechnung);
|
||||
var state = gkvAbrechnung.GetState();
|
||||
|
||||
if (state == GkvState.NoSend)
|
||||
{
|
||||
@@ -1115,14 +1115,9 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var request_app8 = new GkvApp8SendNewRequest
|
||||
{
|
||||
SendDirect = true,
|
||||
GkvTransferProtokoll = gkv_transfer_dc
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
request_app8.SendDirect = false;
|
||||
#endif
|
||||
|
||||
var response_app8 = SendApp8Request<GkvApp8SendNewRequest, GkvApp8SendNewResponse>(request_app8);
|
||||
|
||||
if (!response_app8.Success)
|
||||
@@ -1173,21 +1168,21 @@ namespace BeWo.Service.ServiceImplementations
|
||||
for (int id = 0; id < updateables_len; id++)
|
||||
{
|
||||
var gkv_abrechnung = updateables[id];
|
||||
var fehler = response_app8.Fehler[id];
|
||||
var result = response_app8.Result[id];
|
||||
|
||||
if (fehler is null)
|
||||
if (result is null)
|
||||
continue;
|
||||
|
||||
allAreUpToDate = false;
|
||||
|
||||
var gkv_abrechnung_entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(gkv_abrechnung.GkvAbrechnungOid.Value);
|
||||
|
||||
var protokoll = gkv_abrechnung_entity.GkvTransferProtokolle.First(x => x.Oid == fehler.Oid);
|
||||
var protokoll = gkv_abrechnung_entity.GkvTransferProtokolle.First(x => x.Oid == result.Oid);
|
||||
|
||||
protokoll.Fehlerdatum = fehler.Datum;
|
||||
protokoll.Fehlerlevel = fehler.Level;
|
||||
protokoll.Fehlernachricht = fehler.Nachricht;
|
||||
protokoll.Fehlertitel = fehler.Titel;
|
||||
protokoll.ResultType = result.ResultType;
|
||||
protokoll.Fehlerdatum = result.Datum;
|
||||
protokoll.Fehlernachricht = result.Nachricht;
|
||||
protokoll.Fehlertitel = result.Titel;
|
||||
|
||||
DAOFactory.GenericDAO.Update(gkv_abrechnung_entity);
|
||||
}
|
||||
@@ -1226,15 +1221,13 @@ namespace BeWo.Service.ServiceImplementations
|
||||
return SendApp8Request<GkvApp8GetIKRequest, GkvApp8GetIKResponse>(request);
|
||||
}
|
||||
|
||||
private T2 SendApp8Request<T, T2>(T request, string url = null) where T : GkvApp8Request where T2 : GkvApp8Response
|
||||
private T2 SendApp8Request<T, T2>(T request) where T : GkvApp8Request where T2 : GkvApp8Response
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
|
||||
string url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
|
||||
|
||||
#if DEBUG
|
||||
url = "http://localhost:3777/Host/GkvAbrechnungView.aspx";
|
||||
url = "http://localhost:3777/Host/GkvAbrechnungView.aspx";
|
||||
#endif
|
||||
}
|
||||
|
||||
var user = LoggedInUserOperationContextExt.Current?.User ?? SessionFacade.LoggedInUser;
|
||||
if (user == null)
|
||||
|
||||
@@ -1268,7 +1268,7 @@ namespace BS.Shared
|
||||
GetIKNumber
|
||||
}
|
||||
|
||||
public enum GkvTransferFehlerlevel
|
||||
public enum GkvTransferResultType
|
||||
{
|
||||
None = 0, // Kein Fehler
|
||||
Soft = 1, // Kann erneut senden
|
||||
@@ -1278,12 +1278,13 @@ namespace BS.Shared
|
||||
public enum GkvState
|
||||
{
|
||||
NoSend,
|
||||
Waiting,
|
||||
Waiting4Urbelege,
|
||||
Error,
|
||||
ErrorFatal,
|
||||
Paid,
|
||||
OldAndNoFeedback
|
||||
WaitingForDakota,
|
||||
WaitingForKrankenkasse,
|
||||
WaitingForKrankenkasseTooLong,
|
||||
WaitingForUrbelege,
|
||||
}
|
||||
|
||||
public enum GkvVerfahrensstufe
|
||||
|
||||
@@ -1,56 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Interface;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[DataContract]
|
||||
public class GkvAbrechnungDC : IDataContract
|
||||
{
|
||||
[DataMember]
|
||||
public long? GkvAbrechnungOid { get; set; }
|
||||
[DataContract]
|
||||
public class GkvAbrechnungDC : IDataContract, IGkvAbrechnung
|
||||
{
|
||||
[DataMember] public long? GkvAbrechnungOid { get; set; }
|
||||
[DataMember] public long? GkvAbrechnungVersion { get; set; }
|
||||
[DataMember] public string Notice { get; set; }
|
||||
[DataMember] public DateTime? AbrechnungsZeitraumStart { get; set; }
|
||||
[DataMember] public DateTime? AbrechnungsZeitraumEnde { get; set; }
|
||||
[DataMember] public decimal Betrag { get; set; }
|
||||
[DataMember] public bool Bezahlt { get; set; }
|
||||
[DataMember] public bool UrbelegeGesendet { get; set; }
|
||||
[DataMember] public DateTime ErstelltAm { get; set; }
|
||||
[DataMember] public GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
[DataMember] public IList<InvoiceBaseDC> InvoiceBases { get; set; }
|
||||
[DataMember] public OrganisationDC Organisation { get; set; }
|
||||
[DataMember] public IList<GkvTransferProtokollDC> TransferProtokolle { get; set; }
|
||||
[DataMember] public bool IsReady2Send { get; set; }
|
||||
[DataMember] public string SendTooltip { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? GkvAbrechnungVersion { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Notice { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? AbrechnungsZeitraumStart { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? AbrechnungsZeitraumEnde { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public decimal Betrag { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool Bezahlt { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool UrbelegeGesendet { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IList<InvoiceBaseDC> InvoiceBases { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public OrganisationDC Organisation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IList<GkvTransferProtokollDC> TransferProtokolle { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsReady2Send { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string SendTooltip { get; set; }
|
||||
}
|
||||
public IGkvTransferProtokoll LastTransferProtokoll => TransferProtokolle?.Last();
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[DataContract]
|
||||
public class GkvApp8FehlerDC
|
||||
{
|
||||
[DataMember]
|
||||
public long Oid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Titel { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? Datum { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Nachricht { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferFehlerlevel Level { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
public class GkvApp8GetStatusResponse : GkvApp8Response
|
||||
{
|
||||
[DataMember]
|
||||
public GkvApp8FehlerDC[] Fehler { get; set; }
|
||||
public GkvApp8ResultDC[] Result { get; set; }
|
||||
|
||||
public GkvApp8GetStatusResponse()
|
||||
{
|
||||
|
||||
20
Shared/DataContracts/GkvAbrechnung/GkvApp8ResultDC.cs
Normal file
20
Shared/DataContracts/GkvAbrechnung/GkvApp8ResultDC.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[DataContract]
|
||||
public class GkvApp8ResultDC
|
||||
{
|
||||
[DataMember] public long Oid { get; set; }
|
||||
[DataMember] public string Titel { get; set; }
|
||||
[DataMember] public DateTime? Datum { get; set; }
|
||||
[DataMember] public string Nachricht { get; set; }
|
||||
[DataMember] public GkvTransferResultType ResultType { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ using System.Xml.Serialization;
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[Serializable()]
|
||||
[XmlRoot("Fehler")]
|
||||
public class GkvApp8FehlerXml
|
||||
[XmlRoot("Result")]
|
||||
public class GkvApp8ResultXml
|
||||
{
|
||||
[XmlAttribute("Oid")]
|
||||
public long Oid { get; set; }
|
||||
@@ -28,33 +28,33 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[XmlElement("Level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
public static GkvApp8FehlerXml Parse(XElement element)
|
||||
public static GkvApp8ResultXml Parse(XElement element)
|
||||
{
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8FehlerXml));
|
||||
return (GkvApp8FehlerXml)serializer.Deserialize(element.CreateReader());
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8ResultXml));
|
||||
return (GkvApp8ResultXml)serializer.Deserialize(element.CreateReader());
|
||||
}
|
||||
|
||||
public static GkvApp8FehlerDC ToDC(GkvApp8FehlerXml fehler)
|
||||
public static GkvApp8ResultDC ToDC(GkvApp8ResultXml fehler)
|
||||
{
|
||||
var dc = new GkvApp8FehlerDC();
|
||||
var dc = new GkvApp8ResultDC();
|
||||
|
||||
dc.Oid = fehler.Oid;
|
||||
dc.Titel = fehler.Titel;
|
||||
dc.Datum = fehler.Datum;
|
||||
dc.Nachricht = fehler.Nachricht;
|
||||
dc.Level = (GkvTransferFehlerlevel)fehler.Level;
|
||||
dc.ResultType = (GkvTransferResultType)fehler.Level;
|
||||
|
||||
return dc;
|
||||
}
|
||||
|
||||
public static GkvApp8FehlerXml GetFehlerXml(string file_path)
|
||||
public static GkvApp8ResultXml GetResultXml(string file_path)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var stream = File.OpenRead(file_path))
|
||||
{
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8FehlerXml));
|
||||
return serializer.Deserialize(stream) as GkvApp8FehlerXml;
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8ResultXml));
|
||||
return serializer.Deserialize(stream) as GkvApp8ResultXml;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -12,9 +12,6 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember]
|
||||
public GkvTransferProtokollDC GkvTransferProtokoll { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool SendDirect { get; set; }
|
||||
|
||||
public GkvApp8SendNewRequest()
|
||||
{
|
||||
Type = GkvAbrechnungApp8RequestTypeDC.SendNew;
|
||||
|
||||
@@ -2,88 +2,41 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Interface;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[DataContract]
|
||||
public class GkvTransferProtokollDC : IDataContract
|
||||
{
|
||||
[DataMember]
|
||||
public long? GkvTransferProtokollOid { get; set; }
|
||||
[DataContract]
|
||||
public class GkvTransferProtokollDC : IDataContract, IGkvTransferProtokoll
|
||||
{
|
||||
[DataMember] public long? GkvTransferProtokollOid { get; set; }
|
||||
[DataMember] public long? GkvTransferProtokollVersion { get; set; }
|
||||
[DataMember] public string Notice { get; set; }
|
||||
[DataMember] public long GkvAbrechnungOid { get; set; }
|
||||
[DataMember] public string AbsenderBezeichnung { get; set; }
|
||||
[DataMember] public string EmpfangerBezeichnung { get; set; }
|
||||
[DataMember] public string IKLeistungserbringer { get; set; }
|
||||
[DataMember] public string IKKrankenkasse { get; set; }
|
||||
[DataMember] public string IKKostentrager { get; set; }
|
||||
[DataMember] public string IKDatenannahmestelle { get; set; }
|
||||
[DataMember] public string Rechnungsnummer { get; set; }
|
||||
[DataMember] public int Datenaustauschreferenz { get; set; }
|
||||
[DataMember] public int Transfernummer { get; set; }
|
||||
[DataMember] public string Transfername { get; set; }
|
||||
[DataMember] public DateTime? ErstelltAm { get; set; }
|
||||
[DataMember] public string Dateityp { get; set; }
|
||||
[DataMember] public string Dateiname { get; set; }
|
||||
[DataMember] public int Dateigrosse { get; set; }
|
||||
[DataMember] public string Nutzdatendatei { get; set; }
|
||||
[DataMember] public string Auftragsdatei { get; set; }
|
||||
[DataMember] public bool SentApp8Success { get; set; }
|
||||
[DataMember] public bool SentDakotaSuccess { get; set; }
|
||||
//[DataMember]
|
||||
//public bool HasFehler { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? GkvTransferProtokollVersion { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Notice { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long GkvAbrechnungOid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string AbsenderBezeichnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string EmpfangerBezeichnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKLeistungserbringer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKKrankenkasse { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKKostentrager { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKDatenannahmestelle { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Rechnungsnummer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Datenaustauschreferenz { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Transfernummer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Transfername { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Dateityp { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Dateiname { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Dateigrosse { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Nutzdatendatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Auftragsdatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool SentSuccess { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool HasFehler { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Fehlertitel { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? Fehlerdatum { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Fehlernachricht { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferFehlerlevel Fehlerlevel { get; set; }
|
||||
}
|
||||
[DataMember] public GkvTransferResultType? ResultType { get; set; }
|
||||
[DataMember] public string Fehlertitel { get; set; }
|
||||
[DataMember] public DateTime? Fehlerdatum { get; set; }
|
||||
[DataMember] public string Fehlernachricht { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ namespace BS.Shared.DataContracts
|
||||
public string CreatorLastName { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsAlreadyInActiveGkvAbrechnung { get; set; }
|
||||
public bool? IsAlreadyInActiveGkvAbrechnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsGkvValid { get; set; }
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BS.Shared.DataContracts.GkvAbrechnung;
|
||||
using BS.Shared.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -7,80 +8,52 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.Extensions
|
||||
{
|
||||
public static class GkvAbrechnungExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Lässt sich besser über Interface lösen....
|
||||
/// </summary>
|
||||
/// <param name="gkvAbrechnungDC"></param>
|
||||
/// <returns></returns>
|
||||
public static GkvState GetState(this GkvAbrechnungDC gkvAbrechnungDC) => GetState(
|
||||
gkvAbrechnungDC,
|
||||
() => gkvAbrechnungDC.Bezahlt,
|
||||
() => gkvAbrechnungDC.UrbelegeGesendet,
|
||||
() => gkvAbrechnungDC.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
public static class GkvAbrechnungExtensions
|
||||
{
|
||||
public static GkvState GetState(this IGkvAbrechnung gkvAbrechnung)
|
||||
{
|
||||
if (gkvAbrechnung.Bezahlt)
|
||||
return GkvState.Paid;
|
||||
|
||||
public static GkvState GetState<T2>(
|
||||
object gkvAbrechnung,
|
||||
Func<bool> bezahlt,
|
||||
Func<bool> urbelege,
|
||||
Func<IList<T2>> protokoll,
|
||||
Func<T2, DateTime?> fehlerdatum,
|
||||
Func<T2, GkvTransferFehlerlevel> fehlerlevel,
|
||||
Func<T2, DateTime> created)
|
||||
{
|
||||
if (gkvAbrechnung is null)
|
||||
throw new ArgumentNullException(nameof(gkvAbrechnung));
|
||||
if (gkvAbrechnung.LastTransferProtokoll is null)
|
||||
return GkvState.NoSend;
|
||||
|
||||
if (bezahlt())
|
||||
return GkvState.Paid;
|
||||
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.Soft)
|
||||
return GkvState.Error;
|
||||
|
||||
var protokolle = protokoll();
|
||||
if (protokolle is null || !protokolle.Any())
|
||||
return GkvState.NoSend;
|
||||
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.Fatal)
|
||||
return GkvState.ErrorFatal;
|
||||
|
||||
var last_transfer = protokolle.Last();
|
||||
if (fehlerdatum(last_transfer).HasValue)
|
||||
{
|
||||
if (fehlerlevel(last_transfer) == GkvTransferFehlerlevel.Fatal)
|
||||
return GkvState.ErrorFatal;
|
||||
else
|
||||
return GkvState.Error;
|
||||
}
|
||||
if (gkvAbrechnung.LastTransferProtokoll.ResultType is null)
|
||||
return GkvState.WaitingForDakota;
|
||||
|
||||
// Kein Fehler
|
||||
if (!urbelege())
|
||||
return GkvState.Waiting4Urbelege;
|
||||
if (!gkvAbrechnung.UrbelegeGesendet)
|
||||
return GkvState.WaitingForUrbelege;
|
||||
|
||||
if (DateTime.Now - created(last_transfer) > TimeSpan.FromDays(28))
|
||||
{
|
||||
return GkvState.OldAndNoFeedback;
|
||||
}
|
||||
if (DateTime.Now - gkvAbrechnung.ErstelltAm <= TimeSpan.FromDays(28))
|
||||
return GkvState.WaitingForKrankenkasse;
|
||||
|
||||
return GkvState.Waiting;
|
||||
}
|
||||
return GkvState.WaitingForKrankenkasseTooLong;
|
||||
}
|
||||
|
||||
public static bool IsWaiting(this GkvAbrechnungDC gkvAbrechnungDC)
|
||||
{
|
||||
var state = gkvAbrechnungDC.GetState();
|
||||
public static bool IsWaiting(this IGkvAbrechnung gkvAbrechnung)
|
||||
=> gkvAbrechnung.GetState().IsWaiting();
|
||||
public static bool IsWaiting(this GkvState state)
|
||||
{
|
||||
if (state == GkvState.WaitingForKrankenkasse || state == GkvState.WaitingForKrankenkasseTooLong)
|
||||
return true;
|
||||
|
||||
if (state == GkvState.Waiting || state == GkvState.OldAndNoFeedback)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public static bool IsSent(this IGkvAbrechnung gkvAbrechnung)
|
||||
{
|
||||
return gkvAbrechnung.LastTransferProtokoll is object;
|
||||
}
|
||||
|
||||
public static bool IsSend(this GkvAbrechnungDC gkvAbrechnung)
|
||||
{
|
||||
return gkvAbrechnung.TransferProtokolle is object && gkvAbrechnung.TransferProtokolle.Any();
|
||||
}
|
||||
|
||||
public static bool IsUpToDate(this GkvAbrechnungDC gkvAbrechnungDC, GkvAbrechnungDC compareTo)
|
||||
{
|
||||
return gkvAbrechnungDC.GetState() == compareTo.GetState();
|
||||
}
|
||||
}
|
||||
public static bool IsSameState(this IGkvAbrechnung gkvAbrechnung, IGkvAbrechnung compareTo)
|
||||
{
|
||||
return gkvAbrechnung.GetState() == compareTo.GetState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
Shared/Interface/IGkvAbrechnung.cs
Normal file
16
Shared/Interface/IGkvAbrechnung.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.Interface
|
||||
{
|
||||
public interface IGkvAbrechnung
|
||||
{
|
||||
bool Bezahlt { get; set; }
|
||||
bool UrbelegeGesendet { get; set; }
|
||||
DateTime ErstelltAm { get; set; }
|
||||
IGkvTransferProtokoll LastTransferProtokoll { get; }
|
||||
}
|
||||
}
|
||||
13
Shared/Interface/IGkvTransferProtokoll.cs
Normal file
13
Shared/Interface/IGkvTransferProtokoll.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.Interface
|
||||
{
|
||||
public interface IGkvTransferProtokoll
|
||||
{
|
||||
GkvTransferResultType? ResultType { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -200,8 +200,8 @@
|
||||
<Compile Include="DataContracts\DokumentvorlageDC.cs" />
|
||||
<Compile Include="DataContracts\AdditionalServiceNoticeDC.cs" />
|
||||
<Compile Include="DataContracts\GeschenkterUrlaubstagDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8FehlerDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8FehlerXml.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8ResultDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8ResultXml.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8SendNewResponse.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvTransferProtokollDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetIKRequest.cs" />
|
||||
@@ -347,6 +347,8 @@
|
||||
<Compile Include="Extensions\ICollectionExtensions.cs" />
|
||||
<Compile Include="Extensions\IDictionaryTExtensions.cs" />
|
||||
<Compile Include="Extensions\TimeIntervalExtensions.cs" />
|
||||
<Compile Include="Interface\IGkvAbrechnung.cs" />
|
||||
<Compile Include="Interface\IGkvTransferProtokoll.cs" />
|
||||
<Compile Include="Packet.cs" />
|
||||
<Compile Include="Rss\RssManager.cs" />
|
||||
<Compile Include="Services\BillingData.cs" />
|
||||
|
||||
Reference in New Issue
Block a user