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