Zwischenstand GetSTatus GetIK

This commit is contained in:
2024-05-06 13:14:35 +02:00
parent c8187356c4
commit 0851e1ab68
33 changed files with 817 additions and 460 deletions

View File

@@ -2046,12 +2046,14 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceInvoicePeriodDC))]
[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.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.DateTime>))]
@@ -6054,12 +6056,14 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceInvoicePeriodDC))]
[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.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.DateTime>))]
@@ -9387,31 +9391,35 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/InsertNewGkvAbrechnungen", ReplyAction="http://tempuri.org/IAccountingService/InsertNewGkvAbrechnungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/InsertNewGkvAbrechnungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<long> InsertNewGkvAbrechnungen(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> dc);
System.Collections.Generic.List<long> InsertNewGkvAbrechnungen(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> dc);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/GetGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/GetGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/GetGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnungDC GetGkvAbrechnung(long oid);
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC GetGkvAbrechnung(long oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/GetAllGkvAbrechnungen", ReplyAction="http://tempuri.org/IAccountingService/GetAllGkvAbrechnungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/GetAllGkvAbrechnungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> GetAllGkvAbrechnungen();
System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> GetAllGkvAbrechnungen();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/GetFilteredGkvAbrechnungen", ReplyAction="http://tempuri.org/IAccountingService/GetFilteredGkvAbrechnungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/GetFilteredGkvAbrechnungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> GetFilteredGkvAbrechnungen(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC gkvAbrechnungViewFilter);
System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> GetFilteredGkvAbrechnungen(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC gkvAbrechnungViewFilter);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC request);
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC request);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/UpdateGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/UpdateGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/UpdateGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnungDC UpdateGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungDC abrechnung);
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC UpdateGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC abrechnung);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/DeleteGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/DeleteGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/DeleteGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeleteGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungDC abrechnung);
void DeleteGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC abrechnung);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/SendNewGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/SendNewGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/SendNewGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC req);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -9603,40 +9611,45 @@ namespace BeWo.ServiceProxy
base.Channel.StorniereInvoiceBases(invoices);
}
public System.Collections.Generic.List<long> InsertNewGkvAbrechnungen(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> dc)
public System.Collections.Generic.List<long> InsertNewGkvAbrechnungen(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> dc)
{
return base.Channel.InsertNewGkvAbrechnungen(dc);
}
public BS.Shared.DataContracts.GkvAbrechnungDC GetGkvAbrechnung(long oid)
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC GetGkvAbrechnung(long oid)
{
return base.Channel.GetGkvAbrechnung(oid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> GetAllGkvAbrechnungen()
public System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> GetAllGkvAbrechnungen()
{
return base.Channel.GetAllGkvAbrechnungen();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC> GetFilteredGkvAbrechnungen(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC gkvAbrechnungViewFilter)
public System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC> GetFilteredGkvAbrechnungen(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungViewFilterDC gkvAbrechnungViewFilter)
{
return base.Channel.GetFilteredGkvAbrechnungen(gkvAbrechnungViewFilter);
}
public BS.Shared.DataContracts.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC request)
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC request)
{
return base.Channel.CreateNewGkvAbrechnung(request);
}
public BS.Shared.DataContracts.GkvAbrechnungDC UpdateGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungDC abrechnung)
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC UpdateGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC abrechnung)
{
return base.Channel.UpdateGkvAbrechnung(abrechnung);
}
public void DeleteGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungDC abrechnung)
public void DeleteGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC abrechnung)
{
base.Channel.DeleteGkvAbrechnung(abrechnung);
}
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC req)
{
return base.Channel.SendNewGkvAbrechnung(req);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

View File

@@ -55,10 +55,11 @@
</Button>
<Button Click="btn_edit_Click" Content="@" Padding="0" Margin="1" ToolTip="Editieren" Foreground="#FFFFFF" FontSize="13" FontFamily="Webdings" x:Name="btn_edit" Height="20" Width="20" VerticalAlignment="Center" />
<Button Click="btn_storno_Click" Content="S" Padding="0" Margin="1" ToolTip="Stornieren" Foreground="#FFFFFF" FontSize="13" x:Name="btn_storno" Height="20" Width="20" VerticalAlignment="Center" Initialized="btn_storno_Initialized"/>-->
<Button Click="btn_details_Click" Content="¥" Padding="0" Margin="1" ToolTip="Details anzeigen" Foreground="#FFFFFF" FontSize="13" FontFamily="Webdings" x:Name="btn_details" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_details_Click" Content="*" Padding="0" Margin="1" ToolTip="Details anzeigen" Foreground="#FFFFFF" FontSize="11" FontFamily="Wingdings" x:Name="btn_details" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_nutz_Click" Content="¥" Padding="0" Margin="1" ToolTip="Nutzdatendatei" Foreground="#00FF00" FontSize="13" FontFamily="Webdings" x:Name="btn_nutz" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_auf_Click" Content="¥" Padding="0" Margin="1" ToolTip="Auftragsdatei" Foreground="#00FF00" FontSize="13" FontFamily="Webdings" x:Name="btn_auf" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_delete_Click" Content="r" Padding="0" Margin="1" ToolTip="Löschen" Foreground="#FF0000" FontSize="13" FontFamily="Webdings" x:Name="btn_delete" Height="20" Width="20" VerticalAlignment="Center" />
<Button Click="btn_send_Click" Content="8" Padding="0" Margin="1" ToolTip="Senden" Foreground="#FFFF00" FontSize="13" FontFamily="Webdings" x:Name="btn_send" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_delete_Click" Content="r" Padding="0" Margin="1" ToolTip="Löschen" Foreground="#FF0000" FontSize="13" FontFamily="Webdings" x:Name="btn_delete" Height="17" Width="20" VerticalAlignment="Center" />
<UserControl Background="Transparent" Width="10"/>
</StackPanel>
</ControlTemplate>

View File

@@ -18,6 +18,7 @@ using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using DevExpress.Data.Filtering;
using DevExpress.Mvvm;
@@ -56,6 +57,8 @@ namespace BeWo.View.Detail.Accounting
CheckRights();
RefreshGkvAbrechnungenList();
UpdateDataGridFilter();
}
public DownloadLinkEngine DownloadLinkEngine { get; set; }
@@ -84,7 +87,10 @@ namespace BeWo.View.Detail.Accounting
}
private void UpdateDataGridFilter()
{
if(ShowAllInvoices)
datagrid_gkvAbrechnungen.FixedFilter = null;
gridView.BestFitColumns();
if (ShowAllInvoices)
{
datagrid_gkvAbrechnungen.FixedFilter = null;
}
@@ -118,8 +124,7 @@ namespace BeWo.View.Detail.Accounting
(Action)delegate
{
_Viewmodel.UpdateList(dcList);
this.gridView.BestFitColumns();
//_Viewmodel.UpdateList(dcList);
UpdateDataGridFilter();
});
}
@@ -175,6 +180,19 @@ namespace BeWo.View.Detail.Accounting
BeWoWindowBuilder.GetGkvAbrechnungDetailWindow(vm).ShowDialog();
}
private void btn_send_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?", "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
var req = new GkvAbrechnungSendRequestDC();
req.GkvAbrechnungDC = vm.CommitToDataContract();
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req));
}
}
private void btn_delete_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();

View File

@@ -10,6 +10,7 @@ using BeWo.ViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using DevExpress.Xpf.Grid;

View File

@@ -6,6 +6,7 @@ using BeWo.Validation;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using DevExpress.Xpf.Core;
namespace BeWo.ViewModel
@@ -516,7 +517,7 @@ AntwortEntschluesseltAm
pDataContract.Betrag = _Betrag;
pDataContract.Bezahlt = _Bezahlt;
pDataContract.Datenaustauschreferenz = _Datenaustauschreferenz;
pDataContract.InvoiceBases = _InvoiceBases2.Select(vm => vm.CommitToDataContract()).ToList();
pDataContract.InvoiceBases = _InvoiceBases.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
pDataContract.Organisation = _Organisation;
return pDataContract;
@@ -528,7 +529,7 @@ AntwortEntschluesseltAm
if(Notice != dc.Notice || Bezahlt != dc.Bezahlt)
{
throw new NotImplementedException("Notiz/Bezahlt wurde nicht korrekt übernommen");
}
}
}

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
namespace BeWo.ViewModel.ListViewModel
{

View File

@@ -71,7 +71,7 @@ namespace BeWo.Data
private static bool ShouldConfigureHibernateSession(HttpApplication context)
{
return string.IsNullOrEmpty(context.Request.FilePath) || context.Request.FilePath.IndexOf("Admin.aspx") < 0;
return string.IsNullOrEmpty(context.Request.FilePath) || context.Request.FilePath.IndexOf("Admin.aspx") < 0 || context.Request.FilePath.IndexOf("GkvAbrechnungView.aspx") < 0;
}
private static bool ConfigureHibernateSession(HttpApplication context)

View File

@@ -163,7 +163,8 @@ namespace BeWo.Data
public static bool TenantExists()
{
String path = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, @"Multitenancy\" + MultitenancyOperationContextExt.Current.Tenant + ".config");
var tenant = MultitenancyOperationContextExt.Current?.Tenant ?? SessionFacade.Tenant;
String path = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, @"Multitenancy\" + tenant + ".config");
return File.Exists(path);
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GkvAbrechnungView.aspx.cs" Inherits="Host.GkvAbrechnungView" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GkvAbrechnungView.aspx.cs" Inherits="Host.GkvAbrechnungView"%>
<%@ Register assembly="DevExpress.XtraReports.v23.2.Web.WebForms, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.XtraReports.Web" tagprefix="dxxr" %>

View File

@@ -17,266 +17,228 @@ using DevExpress.XtraReports.UI;
using Page = System.Web.UI.Page;
using System.Text;
using Newtonsoft.Json;
using BS.Shared.DataContracts.GkvAbrechnung;
using System.Net;
using System.Collections.Specialized;
using BeWo.Data.Access;
namespace Host
{
public partial class GkvAbrechnungView : Page
{
private Dictionary<string, object> slicedToken;
private AbstractReportCreator reportCreator;
private string GETSERVER_URL = "https://support.bewoplaner.de/api/getserver.php?k={0}&t=0";
private string LOGINSERVER_URL = "{0}/Host/Login.aspx";
protected void Page_Load(object sender, EventArgs e)
public GkvApp8Request GkvRequest { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
try
{
//if(!SessionFacade.IsUserLoggedIn())
//{
// throw new SecurityException("Anmeldung erforderlich!");
//}
//https://app8.bewoplaner.de/Host/GkvAbrechungview?k=12345&username=meier&password=test
var report = CreateReport();
using (var repxStream = new MemoryStream())
var str = new StreamReader(Request.InputStream).ReadToEnd();
if (string.IsNullOrEmpty(str))
SendErrorResponse("Ungültige Eingabe");
GkvRequest = JsonConvert.DeserializeObject<GkvApp8Request>(str);
if (!CheckValues())
SendErrorResponse("Check Fehlgeschlagen");
if (!TryLogin())
SendErrorResponse("Login Fehlgeschlagen");
switch (GkvRequest.Type)
{
report.PrintingSystem.SaveDocument(repxStream, new NativeFormatOptions { Compressed = true });
//var test = new XtraReport();
//test.PrintingSystem.LoadDocument(repxStream);
var bytesToWrite = repxStream.ToArray();
Response.OutputStream.Write(bytesToWrite, 0, bytesToWrite.Length);
case GkvAbrechnungApp8RequestTypeDC.SendNew:
SendNew(JsonConvert.DeserializeObject<GkvApp8SendNewRequest>(str));
break;
case GkvAbrechnungApp8RequestTypeDC.GetStatus:
GetStatus(JsonConvert.DeserializeObject<GkvApp8GetStatusRequest>(str));
break;
case GkvAbrechnungApp8RequestTypeDC.GetIKNumber:
GetIK(JsonConvert.DeserializeObject<GkvApp8GetIKRequest>(str));
break;
default:
SendErrorResponse("GkvAbrechnungType unbekannt.");
break;
}
}
catch (Exception ex)
{
Response.Write(ex.Message + "\n\n" + ex.StackTrace);
var ex_text = ex.Message + "\n\n" + ex.StackTrace;
SendErrorResponse(ex_text);
}
}
private XtraReport CreateReport()
{
String kundennummer = Request.Params["Kundennummer"];
String ikDatenannahmestelle = Request.Params["IKDatenannahmestelle"];
String ikEmpfang = Request.Params["IKEmpfang"];
String transferName = Request.Params["TransferName"];
String nutzdatendatei = Request.Params["Nutzdatendatei"];
String auftragsdatei = Request.Params["Auftragsdatei"];
var auftragsdateiEncoded = Encoding.GetEncoding("ISO-8859-1").GetBytes(auftragsdatei);
var basePath = $@"C:\GkvAbrechnung\{kundennummer}\{ikDatenannahmestelle}";
var nutzdatendateiPath = $@"{basePath}\{transferName}";
var auftragsdateiPath = $@"{basePath}\{transferName}.auf";
Directory.CreateDirectory(basePath);
File.WriteAllText(nutzdatendateiPath, nutzdatendatei);
File.WriteAllBytes(auftragsdateiPath, auftragsdateiEncoded);
/*
var token = Request.Params["token"].Split(',')[0];
if (SecurityUtils.CheckToken(token, Request.Url.ToString()))
{
slicedToken = SecurityUtils.sliceToken(Request.Params["token"].Split(',')[0], Request.Url.ToString());
reportCreator = GetReportCreator();
var lType = Utils.EnumParse<ReportTypes>(Request.Params["type"]);
XtraReport report;
switch (lType)
{
case ReportTypes.Settlement:
report = CreateSettlementReport();
break;
case ReportTypes.ServiceOverviewAllCustomers:
return CreateServiceOverviewAllCustomersReport();
case ReportTypes.ServicesOverviewNew:
report = CreateServiceOverviewNew();
break;
case ReportTypes.ValidationMessageReport:
report = CreateValidationMessageListReport();
break;
default:
report = CreateQueryReport();
break;
}
if (report != null && lType != ReportTypes.ServiceOverviewAllCustomers &&
lType != ReportTypes.ServiceInvoice)
{
if (report.Pages.Count == 0)
{
report.CreateDocument();
}
}
return report;
}
*/
Response.Write("GkvAbrechnung.View erfolgreich aufgerufen :)");
return new XtraReport();
}
private XtraReport CreateTestReportKalender()
{
var abc = Request.Params["r"].Split('-');
var rightsList = abc.Select(r => (UserRightType)Int32.Parse(r)).ToList();
//employeeOid, viewType
var datesList = new List<DateTime>();
string datesString = Request.Params["d"];
for (var i = 0; i < datesString.Length; i += 8)
{
var x = datesString.Substring(i, 8);
datesList.Add(new DateTime(Convert.ToInt32(x.Substring(4, 4)), Convert.ToInt32(x.Substring(2, 2)), Convert.ToInt32(x.Substring(0, 2))));
}
var vt = (AppointmentViewType) int.Parse(Request.Params["vt"]);
var s = DateTime.Parse(Request.Params["s"]);
var e = DateTime.Parse(Request.Params["e"]);
var employeeOid = long.Parse(Request.Params["eOid"]);
return reportCreator.CreateKalenderReport(employeeOid, vt, s, e, datesList, rightsList);
}
private XtraReport CreateQueryReport()
{
var queryOid = long.Parse(Request.Params["qoid"]);
var queryReportId = Request.Params["dcid"];
return reportCreator.CreateQueryReport(queryOid, queryReportId);
SendErrorResponse("Unbekannter Fehler");
}
private XtraReport CreateServiceOverviewAllCustomersReport()
{
int month = int.Parse(this.Request.Params["month"]);
int year = int.Parse(this.Request.Params["year"]);
long orgaOid = long.Parse(this.Request.Params["orgaOid"]);
long empOid = long.Parse(this.Request.Params["empOid"]);
int startDay = 1;
if (Request.Params["start"] != null)
{
startDay = int.Parse(Request.Params["start"]);
}
int endDay = DateTime.DaysInMonth(year, month);
if (Request.Params["end"] != null)
{
endDay = int.Parse(Request.Params["end"]);
}
long? scOid = null;
if (Request.Params["scOid"] != null)
scOid = long.Parse(Request.Params["scOid"]);
return reportCreator.CreateServiceOverviewAllCustomersReport(month, year, orgaOid, empOid, scOid, startDay, endDay, false);
}
private XtraReport CreateServiceOverviewNew()
private void SendErrorResponse(string message)
{
int month = int.Parse(Request.Params["month"]);
int year = int.Parse(Request.Params["year"]);
int filterType = int.Parse(Request.Params["ft"]);
var response = new GkvApp8Response();
long? customerOid = null;
if (Request.Params["cOid"] != null)
{
customerOid = long.Parse(Request.Params["cOid"]);
}
response.Success = false;
response.Message = message;
long? teamOid = null;
if (Request.Params["tOid"] != null)
{
teamOid =long.Parse(Request.Params["tOid"]);
}
SendResponse(JsonConvert.SerializeObject(response));
}
private void SendResponse(object res) => SendResponse(JsonConvert.SerializeObject(res));
private void SendResponse(string str)
{
Response.Write(str);
long? orgaOid = null;
if (Request.Params["orgaOid"] != null)
{
orgaOid = long.Parse(Request.Params["orgaOid"]);
}
long? empOid = null;
if (Request.Params["empOid"] != null)
{
empOid = long.Parse(Request.Params["empOid"]);
}
int startDay = 1;
if (Request.Params["start"] != null)
{
startDay = int.Parse(Request.Params["start"]);
}
int endDay = DateTime.DaysInMonth(year, month);
if (Request.Params["end"] != null)
{
endDay = int.Parse(Request.Params["end"]);
}
long? scOid;
if (Request.Params["scOid"] != null)
scOid = long.Parse(Request.Params["scOid"]);
else
scOid = null;
//nf = nur fehlende:-)
bool nf = false;
if (Request.Params["nf"] != null && Request.Params["nf"] == "1")
{
nf = true;
}
return reportCreator.CreateServiceOverviewReportNew(month, year, (QBFilterEnum)filterType, customerOid, teamOid, empOid, orgaOid, scOid, startDay, endDay, nf);
Context.ApplicationInstance.CompleteRequest();
}
private XtraReport CreateSettlementReport()
private bool CheckValues() => CheckValues(GkvRequest);
private bool CheckValues(GkvApp8Request request)
{
String dcId = Request.Params["dcid"];
if (request == null)
return false;
if (request.Type == GkvAbrechnungApp8RequestTypeDC.Default)
return false;
if (string.IsNullOrWhiteSpace(request.Username))
return false;
if (string.IsNullOrWhiteSpace(request.Tenant))
return false;
if (string.IsNullOrWhiteSpace(request.Password))
return false;
long? invoiceBaseOid = null;
if (Request.Params["ibid"] != null)
invoiceBaseOid = long.Parse(Request.Params["ibid"]);
return reportCreator.CreateSettlementReport(dcId, invoiceBaseOid);
return true;
}
private XtraReport CreateValidationMessageListReport()
private bool TryLogin() => TryLogin(GkvRequest);
private bool TryLogin(GkvApp8Request gkv_request)
{
DateTime start = DateTime.Now.Date;
DateTime end = start.AddMonths(1).AddTicks(-1);
var server = GetServerFromTenant(gkv_request.Tenant);
var loginurl = string.Format(LOGINSERVER_URL, server);
return reportCreator.CreateValidationMessageListReport(start, end);
}
private AbstractReportCreator GetReportCreator()
{
long? templateOid = null;
if (Request.Params["template"] != null)
{
templateOid = long.Parse(Request.Params["template"]);
}
String t = slicedToken["tenant"].ToString();
SessionFacade.Tenant = t;
AbstractReportCreator creator = PluginLoader.FindClass<DefaultReportCreator>();
if (creator == null)
creator = new DefaultReportCreator();
creator.TemplateOid = templateOid;
#if DEBUG
creator.TempPath = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, @"demo\temp");
#else
creator.TempPath = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, t + @"\temp");
//loginurl = string.Format(LOGINSERVER_URL, "https://app4.bewoplaner.de");
loginurl = string.Format(LOGINSERVER_URL, "http://localhost:3777");
#endif
bool successful = false;
using (WebClient client = new WebClient())
{
var nvc = new NameValueCollection();
nvc.Add("password", gkv_request.Password);
nvc.Add("username", gkv_request.Username);
nvc.Add("tenant", gkv_request.Tenant);
return creator;
}
var loginresponse = client.UploadValues(loginurl, "POST", nvc);
successful = BitConverter.ToBoolean(loginresponse, 0);
}
return successful;
}
private void SendNew(GkvApp8SendNewRequest req)
{
var debug_mode = true;
// Save File
SaveFileInFileSystem(req, debug_mode);
// Make DB Entry
// DAOFactory.GenericDAO.Insert(req)
// Dakota Send
// Response
var response = new GkvApp8Response();
response.Success = true;
SendResponse(response);
}
private void SaveFileInFileSystem(GkvApp8SendNewRequest req, bool debug_mode = false)
{
string root_path;
string file_path;
if (debug_mode)
{
root_path = $@"C:\GkvAbrechnung\";
file_path = $@"kundennummer-{req.GkvAbrechnung.IKDatenannahmestelle}-{req.GkvAbrechnung.Transfername}";
}
else
{
root_path = $@"C:\GkvAbrechnung\kundennummer\{req.GkvAbrechnung.IKDatenannahmestelle}\";
file_path = $@"{req.GkvAbrechnung.Transfername}";
}
Directory.CreateDirectory(root_path);
var finalpath = root_path + file_path;
File.WriteAllText(finalpath, req.GkvAbrechnung.Nutzdatendatei);
var auftragsdatei2 = Encoding.GetEncoding("ISO-8859-1").GetBytes(req.GkvAbrechnung.Auftragsdatei);
File.WriteAllBytes(finalpath + ".auf", auftragsdatei2);
}
private void GetStatus(GkvApp8GetStatusRequest req)
{
// Get Keys
//var gkv_oid = req.GkvAbrechnungDC.GkvAbrechnungOid;
//var kundennummer = req.GkvAbrechnungDC.Kundennummer;
// Get Entry
//
// Compare if newer
// Response
var response = new GkvApp8GetStatusResponse();
response.Success = true;
response.IsUpToDate = true;
response.NewStatus = null;
SendResponse(response);
}
private void GetIK(GkvApp8GetIKRequest req)
{
var input = req.KrankenkassenIK;
var response = new GkvApp8GetIKResponse();
response.Success = true;
response.IKVersichertenKarte = input;
response.IKDatenannahmestelle = "111222333";
response.IKKostenträger = "333444555";
SendResponse(response);
}
private string GetServerFromTenant(string tenant)
{
try
{
String url = String.Format(GETSERVER_URL, tenant);
using (WebClient client = new WebClient())
{
//MessageBox.Show(hostAddress);
byte[] response = client.UploadValues(url, "POST", new NameValueCollection());
String server = System.Text.Encoding.ASCII.GetString(response);
return server;
}
}
catch (Exception ex)
{
return null;
}
}
}
}

View File

@@ -99,6 +99,7 @@
<Reference Include="Microsoft.CodeAnalysis.Workspaces, Version=3.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.CodeAnalysis.Workspaces.Common.3.4.0\lib\netstandard2.0\Microsoft.CodeAnalysis.Workspaces.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" />
<Reference Include="NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\NHibernate.dll</HintPath>

View File

@@ -1,4 +1,14 @@
using System;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Service.ServiceImplementations;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
namespace Host
@@ -7,6 +17,21 @@ namespace Host
{
protected void Page_Load(object sender, EventArgs e)
{
var username = Request.Form["username"];
var password = Request.Form["password"];
var service = new UserServiceImp();
var result_valid = service.IsUserValid(username, password);
var result = result_valid == BS.Shared.UserValidationResult.UserValid;
if (!result)
{
System.Threading.Thread.Sleep(3000);
}
Response.Write(result);
Response.End();
}
}
}

View File

@@ -962,7 +962,6 @@ namespace Host
AbstractReportCreator creator = PluginLoader.FindClass<DefaultReportCreator>();
if (creator == null)
creator = new DefaultReportCreator();
creator.TemplateOid = templateOid;

View File

@@ -2,6 +2,7 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using NHibernate.Linq;
using System.Collections.Generic;
using System.Linq;

View File

@@ -5,6 +5,7 @@ using System.ServiceModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts.Reports;
namespace BeWo.Service.ServiceContracts
@@ -163,5 +164,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
void DeleteGkvAbrechnung(GkvAbrechnungDC abrechnung);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(GkvAbrechnungSendRequestDC req);
}
}

View File

@@ -20,13 +20,18 @@ using BeWo.Service.Invoicing;
using Dakota.Logic;
using Dakota;
using Dakota.Models;
using System.Net;
using System.Collections.Specialized;
using Newtonsoft.Json;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
namespace BeWo.Service.ServiceImplementations
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
public class AccountingServiceImp : IAccountingService
{
public void DeactivateInvoiceBases(List<InvoiceBaseDC> invoices)
{
try
@@ -34,7 +39,7 @@ namespace BeWo.Service.ServiceImplementations
var s = PluginLoader.FindClass<AccountingService>();
s.DeactivateInvoiceBases(invoices);
}
catch (Exception e)
{
@@ -112,20 +117,20 @@ namespace BeWo.Service.ServiceImplementations
}
}
public List<InvoiceBaseDC> GetInvoiceBases(DateTime? startDate, DateTime? endDate)
{
try
{
var s = PluginLoader.FindClass<AccountingService>();
public List<InvoiceBaseDC> GetInvoiceBases(DateTime? startDate, DateTime? endDate)
{
try
{
var s = PluginLoader.FindClass<AccountingService>();
return s.GetInvoiceBases(startDate, endDate);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
return s.GetInvoiceBases(startDate, endDate);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<InvoiceBaseDC> GetInvoiceBases2(DateTime? startDate, DateTime? endDate, bool filterByInvoiceDate)
{
@@ -233,7 +238,7 @@ namespace BeWo.Service.ServiceImplementations
return y.InvoiceBase.InvoiceDate.Value.Date.CompareTo(x.InvoiceBase.InvoiceDate.Value.Date);
});
var dcList = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDCs(entities);
foreach (var serviceInvoice in dcList)
@@ -314,27 +319,27 @@ namespace BeWo.Service.ServiceImplementations
{
ib.SenderContactInformations = new List<ContactDC>();
foreach (var contact in loggedInUser.Employee.Person.Contacts)
{
var newContact = new ContactDC();
newContact.ContactType = contact.Type;
newContact.ContactValue = contact.Value;
ib.SenderContactInformations.Add(newContact);
}
}
}
var newInvoices = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewEntities(invoices);
int count = 0;
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
foreach (var ib in newInvoices)
{
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
foreach (var ib in newInvoices)
{
if (ib.Type == InvoiceType.General)
{
foreach (var item in ib.InvoiceItems)
@@ -342,24 +347,24 @@ namespace BeWo.Service.ServiceImplementations
item.AmountTotal = Math.Round(item.AmountTotal ?? 0, 2, MidpointRounding.AwayFromZero);
}
}
var nextNumber = inc.GetNextInvoiceNumber(count, ib);
if (!String.IsNullOrEmpty(nextNumber))
{
if (!String.IsNullOrEmpty(ib.InvoiceNumber)) // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
{
if (ib.InvoiceNumber == nextNumber)
//Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
{
count++;
}
}
else
{
ib.InvoiceNumber = nextNumber;
count++;
}
}
}
var nextNumber = inc.GetNextInvoiceNumber(count, ib);
if (!String.IsNullOrEmpty(nextNumber))
{
if (!String.IsNullOrEmpty(ib.InvoiceNumber)) // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
{
if (ib.InvoiceNumber == nextNumber)
//Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
{
count++;
}
}
else
{
ib.InvoiceNumber = nextNumber;
count++;
}
}
}
var factory = PluginLoader.FindClass<InvoiceFactory>();
@@ -379,13 +384,13 @@ namespace BeWo.Service.ServiceImplementations
}
}
}
DAOFactory.GenericDAO.Insert(newInvoices);
inc.IncreaseInvoiceNumber(count, newInvoices);
return newInvoices.Select(i => i.Oid.Value).ToList();
@@ -419,38 +424,38 @@ namespace BeWo.Service.ServiceImplementations
var newInvoices = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewEntities(neueRechnungen);
newInvoices.AddRange(MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewEntities(diffRechnungen));
if (newInvoices.Count > 0)
{
int count = 0;
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
if (newInvoices.Count > 0)
{
int count = 0;
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
foreach (var i in newInvoices)
{
var nextNumber = inc.GetNextInvoiceNumber(count, i.InvoiceBase);
if (!String.IsNullOrEmpty(nextNumber))
{
//if (!String.IsNullOrEmpty(i.InvoiceBase.InvoiceNumber) && newInvoices.Count == 1)
// // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
//{
// if (i.InvoiceBase.InvoiceNumber == nextNumber || newInvoices.Count > 1)
// //Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
// {
// count++;
// }
//}
//else
//{
i.InvoiceBase.InvoiceNumber = nextNumber;
count++;
//}
}
}
foreach (var i in newInvoices)
{
var nextNumber = inc.GetNextInvoiceNumber(count, i.InvoiceBase);
if (!String.IsNullOrEmpty(nextNumber))
{
//if (!String.IsNullOrEmpty(i.InvoiceBase.InvoiceNumber) && newInvoices.Count == 1)
// // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
//{
// if (i.InvoiceBase.InvoiceNumber == nextNumber || newInvoices.Count > 1)
// //Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
// {
// count++;
// }
//}
//else
//{
i.InvoiceBase.InvoiceNumber = nextNumber;
count++;
//}
}
}
DAOFactory.GenericDAO.Insert(newInvoices);
DAOFactory.GenericDAO.Insert(newInvoices);
inc.IncreaseInvoiceNumber(count, newInvoices);
}
return newInvoices.Select(i => i.Oid.Value).ToList();
inc.IncreaseInvoiceNumber(count, newInvoices);
}
return newInvoices.Select(i => i.Oid.Value).ToList();
}
catch (Exception e)
{
@@ -466,28 +471,28 @@ namespace BeWo.Service.ServiceImplementations
var newInvoices = MapperFactory.SettlementDC_SettlementInvoice.MapToNewEntities(invoices);
int count = 0;
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
foreach (var i in newInvoices)
{
var nextNumber = inc.GetNextInvoiceNumber(count, i.InvoiceBase);
if (!String.IsNullOrEmpty(nextNumber))
{
if (!String.IsNullOrEmpty(i.InvoiceBase.InvoiceNumber)) // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
{
if (i.InvoiceBase.InvoiceNumber == nextNumber)
//Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
{
count++;
}
}
else
{
i.InvoiceBase.InvoiceNumber = nextNumber;
count++;
}
}
}
foreach (var i in newInvoices)
{
var nextNumber = inc.GetNextInvoiceNumber(count, i.InvoiceBase);
if (!String.IsNullOrEmpty(nextNumber))
{
if (!String.IsNullOrEmpty(i.InvoiceBase.InvoiceNumber)) // Rechnungsnummer schon vorher erzeugt oder per Hand vergeben.
{
if (i.InvoiceBase.InvoiceNumber == nextNumber)
//Die per Hand vergebene Rechnungsnummer ist gleich der nächsten berechneten Rechnungsnummer, daher Rechnungsnummerzähler erhöhen
{
count++;
}
}
else
{
i.InvoiceBase.InvoiceNumber = nextNumber;
count++;
}
}
}
DAOFactory.GenericDAO.Insert(newInvoices);
@@ -614,23 +619,23 @@ namespace BeWo.Service.ServiceImplementations
{
var originals = DAOFactory.GenericDAO.LoadByIDs<SettlementInvoice>(invoices.Select(i => i.SettlementIvoiceOid.Value));
MapperFactory.SettlementDC_SettlementInvoice.MergeWithEntitys(invoices, originals);
//originals.ForEach(
//originals.ForEach(
// i =>
// {
//i.InvoiceBase.Type = InvoiceType.Settlement;
//i.InvoiceBase.Type = InvoiceType.Settlement;
// We´ll add an invoiceitem, so we can treat a settlement like any other invoice
//i.InvoiceBase.InvoiceItems.Clear();
//i.InvoiceBase.InvoiceItems.Add(
// new InvoiceItem
// {
// AmountTotal = i.Claim,
// ItemPeriodStart = i.InvoiceBase.AccountingPeriodStart,
// ItemPeriodEnd = i.InvoiceBase.AccountingPeriodEnd,
// ItemDescription = "Spitzabrechung"
// });
//});
// We´ll add an invoiceitem, so we can treat a settlement like any other invoice
//i.InvoiceBase.InvoiceItems.Clear();
//i.InvoiceBase.InvoiceItems.Add(
// new InvoiceItem
// {
// AmountTotal = i.Claim,
// ItemPeriodStart = i.InvoiceBase.AccountingPeriodStart,
// ItemPeriodEnd = i.InvoiceBase.AccountingPeriodEnd,
// ItemDescription = "Spitzabrechung"
// });
//});
DAOFactory.GenericDAO.Update(originals);
}
catch (Exception e)
@@ -639,15 +644,15 @@ namespace BeWo.Service.ServiceImplementations
}
}
public List<InvoiceNumberDC> LoadInvoiceNumberList()
{
try
{
var numbers = DAOFactory.GenericDAO.GetAllActive<InvoiceNumber>();
return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDCs(numbers);
}
catch (Exception e)
{
@@ -721,6 +726,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
private GkvApp8GetStatusResponse GetApp8Status()
{
return null;
}
public GkvAbrechnungResponseDC CreateNewGkvAbrechnung(GkvAbrechnungRequestDC request)
{
var response = new GkvAbrechnungResponseDC();
@@ -803,8 +813,10 @@ namespace BeWo.Service.ServiceImplementations
response.Success = true;
response.GkvAbrechnungDC = new_gkv_abrechnung_dc;
return response;
}
catch(DakotaException exc)
catch (DakotaException exc)
{
response.Error = exc.Message;
}
@@ -850,18 +862,89 @@ namespace BeWo.Service.ServiceImplementations
public List<long> InsertNewGkvAbrechnungen(List<GkvAbrechnungDC> dcList)
{
//try
//{
// var newGkvAbrechnungen = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntities(dcList);
// DAOFactory.GenericDAO.Insert(newGkvAbrechnungen);
// return newGkvAbrechnungen.Select(i => i.Oid.Value).ToList();
//}
//catch (Exception e)
//{
// throw Utils.CreateBeWoFaultException(e);
//}
return null;
}
public GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(GkvAbrechnungSendRequestDC req)
{
var response = new GkvAbrechnungSendResponseDC();
response.Successful = false;
var user = LoggedInUserOperationContextExt.Current?.User ?? SessionFacade.LoggedInUser;
if (user == null)
{
response.Message = "User unbekannt";
return response;
}
try
{
var newGkvAbrechnungen = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntities(dcList);
var oid = req.GkvAbrechnungDC.GkvAbrechnungOid.Value;
DAOFactory.GenericDAO.Insert(newGkvAbrechnungen);
var entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(oid);
return newGkvAbrechnungen.Select(i => i.Oid.Value).ToList();
var gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(entity);
String url = "http://localhost:3777/Host/GkvAbrechnungView.aspx";
//String url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
string response_app8_str;
using (WebClient client = new WebClient())
{
//MessageBox.Show(hostAddress);
var request_app8 = new GkvApp8SendNewRequest();
request_app8.GkvAbrechnung = gkv_abrechnung_dc;
request_app8.Type = GkvAbrechnungApp8RequestTypeDC.SendNew;
request_app8.Username = user.LoginName;
request_app8.Password = user.RC2EncryptedHash;
request_app8.Tenant = MultitenancyOperationContextExt.Current.Tenant;
var dataString = JsonConvert.SerializeObject(request_app8);
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
response_app8_str = client.UploadString(url, "POST", dataString);
}
if (string.IsNullOrEmpty(response_app8_str))
{
response.Message = "App8 leere Antwort";
return response;
}
var response_app8 = JsonConvert.DeserializeObject<GkvApp8Response>(response_app8_str);
response.Successful = response_app8.Success;
if (!response.Successful)
response.Message = response_app8.Message;
else
response.Message = "Erfolgreich gesendet";
return response;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
throw new NotImplementedException();
}
}
}

View File

@@ -393,6 +393,8 @@ namespace BeWo.Service.ServiceImplementations
}
}
public UserValidationResult IsUserValid(string pUserName, string pPassword) => IsUserValid(pUserName, pPassword, null);
public UserValidationResult IsUserValidTwoFactor(string username, string password, string twoFactorPin, string supportPin)
{
return IsUserValid(username, password, supportPin, "BeWoClient", true, twoFactorPin);

View File

@@ -1222,4 +1222,12 @@ namespace BS.Shared
ManuallyDeleted = 3,
AutomaticallyDeleted = 4
}
public enum GkvAbrechnungApp8RequestTypeDC
{
Default,
SendNew,
GetStatus,
GetIKNumber
}
}

View File

@@ -1,77 +1,77 @@
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using BS.Shared.DataContracts.Compact;
namespace BS.Shared.DataContracts
{
[DataContract]
public class GkvAbrechnungDC : IDataContract
{
[DataMember]
public long? GkvAbrechnungOid { get; set; }
[DataMember]
public long? GkvAbrechnungVersion { get; set; }
[DataMember]
public string Notice { get; set; }
[DataMember]
public string IKLeistungserbringer { get; set; }
[DataMember]
public string IKVersichertenKarte { get; set; }
[DataMember]
public string IKKostenträger { get; set; }
[DataMember]
public string IKDatenannahmestelle { get; set; }
[DataMember]
public DateTime? AbrechnungsZeitraumStart { get; set; }
[DataMember]
public DateTime? AbrechnungsZeitraumEnde { get; set; }
[DataMember]
public string Nutzdatendatei { get; set; }
[DataMember]
public string Auftragsdatei { get; set; }
[DataMember]
public string Transfername { get; set; }
[DataMember]
public int Datenaustauschreferenz { get; set; }
[DataMember]
public DateTime? ErstelltAm { get; set; }
[DataMember]
public DateTime? VerschluesseltAm { get; set; }
[DataMember]
public DateTime? UebertragenAm { get; set; }
[DataMember]
public DateTime? AntwortErhaltenAm { get; set; }
[DataMember]
public DateTime? AntwortEntschluesseltAm { get; set; }
[DataMember]
public decimal Betrag { get; set; }
[DataMember]
public bool Bezahlt { get; set; }
[DataMember]
public IList<InvoiceBaseDC> InvoiceBases { get; set; }
[DataMember]
public OrganisationDC Organisation { get; set; }
}
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using BS.Shared.DataContracts.Compact;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungDC : IDataContract
{
[DataMember]
public long? GkvAbrechnungOid { get; set; }
[DataMember]
public long? GkvAbrechnungVersion { get; set; }
[DataMember]
public string Notice { get; set; }
[DataMember]
public string IKLeistungserbringer { get; set; }
[DataMember]
public string IKVersichertenKarte { get; set; }
[DataMember]
public string IKKostenträger { get; set; }
[DataMember]
public string IKDatenannahmestelle { get; set; }
[DataMember]
public DateTime? AbrechnungsZeitraumStart { get; set; }
[DataMember]
public DateTime? AbrechnungsZeitraumEnde { get; set; }
[DataMember]
public string Nutzdatendatei { get; set; }
[DataMember]
public string Auftragsdatei { get; set; }
[DataMember]
public string Transfername { get; set; }
[DataMember]
public int Datenaustauschreferenz { get; set; }
[DataMember]
public DateTime? ErstelltAm { get; set; }
[DataMember]
public DateTime? VerschluesseltAm { get; set; }
[DataMember]
public DateTime? UebertragenAm { get; set; }
[DataMember]
public DateTime? AntwortErhaltenAm { get; set; }
[DataMember]
public DateTime? AntwortEntschluesseltAm { get; set; }
[DataMember]
public decimal Betrag { get; set; }
[DataMember]
public bool Bezahlt { get; set; }
[DataMember]
public IList<InvoiceBaseDC> InvoiceBases { get; set; }
[DataMember]
public OrganisationDC Organisation { get; set; }
}
}

View File

@@ -5,7 +5,7 @@ using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungRequestDC : IDataContract

View File

@@ -5,7 +5,7 @@ using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungResponseDC : IDataContract

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungSendRequestDC : IDataContract
{
[DataMember]
public GkvAbrechnungDC GkvAbrechnungDC { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungSendResponseDC : IDataContract
{
[DataMember]
public bool Successful { get; set; }
[DataMember]
public string Message { get; set; }
}
}

View File

@@ -5,7 +5,7 @@ using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvAbrechnungViewFilterDC : IDataContract

View 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;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvApp8GetIKRequest : GkvApp8Request
{
[DataMember]
public string KrankenkassenIK { get; set; }
public GkvApp8GetIKRequest()
{
Type = GkvAbrechnungApp8RequestTypeDC.GetIKNumber;
}
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvApp8GetIKResponse : GkvApp8Response
{
[DataMember]
public string IKVersichertenKarte { get; set; }
[DataMember]
public string IKKostenträger { get; set; }
[DataMember]
public string IKDatenannahmestelle { get; set; }
}
}

View 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;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvApp8GetStatusRequest : GkvApp8Request
{
[DataMember]
public GkvAbrechnungDC GkvAbrechnungDC { get; set; }
public GkvApp8GetStatusRequest()
{
Type = GkvAbrechnungApp8RequestTypeDC.GetStatus;
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvApp8GetStatusResponse : GkvApp8Response
{
[DataMember]
public bool IsUpToDate { get; set; }
[DataMember]
public GkvAbrechnungDC NewStatus { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
[DataContract]
public class GkvApp8Request : IDataContract
{
[DataMember]
public string Username { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public string Tenant { get; set; }
[DataMember]
public GkvAbrechnungApp8RequestTypeDC Type { get; set; }
}
}

View File

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

View 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;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvApp8SendNewRequest : GkvApp8Request
{
[DataMember]
public GkvAbrechnungDC GkvAbrechnung { get; set; }
public GkvApp8SendNewRequest()
{
Type = GkvAbrechnungApp8RequestTypeDC.SendNew;
}
}
}

View File

@@ -0,0 +1,47 @@
using BS.Shared.DataContracts.GkvAbrechnung;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.Extensions
{
public static class GkvAbrechnungExtensions
{
/// <summary>
/// 1 - nicht verschlüsselt
/// 2 - nicht übertragen
/// 3 - keine antwort
/// 4 - antwort nicht entschlüsselt
/// 5 - fertig
/// </summary>
/// <param name="gkvAbrechnungDC"></param>
/// <returns></returns>
public static int GetState(this GkvAbrechnungDC gkvAbrechnungDC)
{
if (!gkvAbrechnungDC.VerschluesseltAm.HasValue)
return 1;
if (!gkvAbrechnungDC.UebertragenAm.HasValue)
return 2;
if (!gkvAbrechnungDC.AntwortErhaltenAm.HasValue)
return 3;
if (!gkvAbrechnungDC.AntwortEntschluesseltAm.HasValue)
return 4;
return 5;
}
public static bool IsStatusComplete(this GkvAbrechnungDC gkvAbrechnungDC)
{
return gkvAbrechnungDC.VerschluesseltAm.HasValue
&& gkvAbrechnungDC.UebertragenAm.HasValue
&& gkvAbrechnungDC.AntwortErhaltenAm.HasValue
&& gkvAbrechnungDC.AntwortEntschluesseltAm.HasValue;
}
public static bool IsUpToDate(this GkvAbrechnungDC gkvAbrechnungDC, GkvAbrechnungDC compareTo)
{
return gkvAbrechnungDC.GetState() != compareTo.GetState();
}
}
}

View File

@@ -186,11 +186,20 @@
<Compile Include="DataContracts\DokumentvorlageDC.cs" />
<Compile Include="DataContracts\AdditionalServiceNoticeDC.cs" />
<Compile Include="DataContracts\GeschenkterUrlaubstagDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungResponseDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungViewFilterDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungRequestDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetIKRequest.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetIKResponse.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8Request.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetStatusResponse.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8Response.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetStatusRequest.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8SendNewRequest.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungSendResponseDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungSendRequestDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungResponseDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungViewFilterDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungRequestDC.cs" />
<Compile Include="DataContracts\GoalRatingDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungDC.cs" />
<Compile Include="DataContracts\GkvAbrechnung\GkvAbrechnungDC.cs" />
<Compile Include="DataContracts\PlatzhalterDC.cs" />
<Compile Include="DataContracts\PreisDC.cs" />
<Compile Include="DataContracts\QuittierungsbelegsstatusDC.cs" />
@@ -312,6 +321,7 @@
<Compile Include="DataContracts\ServiceRecordHistoryDC.cs" />
<Compile Include="DataContracts\SupportPinDC.cs" />
<Compile Include="Extensions\EnumExtensions.cs" />
<Compile Include="Extensions\GkvAbrechnungExtensions.cs" />
<Compile Include="Extensions\GridExtensions.cs" />
<Compile Include="Extensions\ICollectionExtensions.cs" />
<Compile Include="Extensions\IDictionaryTExtensions.cs" />