Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2025-11-19 14:33:15 +01:00
67 changed files with 1363 additions and 198 deletions

View File

@@ -778,9 +778,9 @@ namespace BeWo
//{
// url += "/service45";
//}
if (url.IndexOf("/service") < 0)
if (url.IndexOf("/service_developer") < 0)
{
url += "/service";
url += "/service_developer";
}
return new Uri(String.Format("https://{0}", url));

View File

@@ -18,7 +18,7 @@ namespace BeWo.Converter
{
if(value is string val_str && parameter is ValidationType val_type)
{
return Validator.IsValid(val_type, val_str);
return GkvValidator.IsValid(val_type, val_str);
}
return null;

View File

@@ -22,7 +22,7 @@ namespace BeWo.Converter
if (value is bool val_bool && parameter is ValidationType val_type)
{
return val_bool ? null : Validator.InvalidTooltipTxt(val_type);
return val_bool ? null : GkvValidator.InvalidTooltipTxt(val_type);
}
return "xxx";

View File

@@ -133,10 +133,10 @@ namespace BeWo
new DebugConfig()
{
DebugConfigMode = DebugConfigMode.FeatureDakota,
AutoLogin = false,
SelectView = UIContext.Organisation,
SelectIndex = 8,
DefaultLoginUsername = "m1",
AutoLogin = true,
//SelectView = UIContext.Organisation,
//SelectIndex = 8,
DefaultLoginUsername = "admin",
DefaultLoginPassword = "bewobewo",
DefaultProfilename = "5000000000",
EnableAutoRemoteDebugging = true

View File

@@ -920,6 +920,7 @@ namespace BeWo.ViewModel
public StoredFileVM XRechnungStoredFileVM { get; set; }
public long? Oid => DataContract.InvoiceBaseOid;
public string InvoiceId => DataContract.InvoiceId;
public string SenderStreet => DataContract.SenderStreet;
public string SenderTown => DataContract.SenderTown;
public string SenderPostCode => DataContract.SenderPostCode;

View File

@@ -713,8 +713,8 @@ namespace BeWo.ViewModel
}
public bool IsIKNumberValid
=> Validator.IsIKNumberValid(IKKrankenkasse)
&& Validator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
=> GkvValidator.IsIKNumberValid(IKKrankenkasse)
&& GkvValidator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
public string IKKrankenkasse
{

View File

@@ -1,4 +1,5 @@
@model BeWoPlanerMobil.Models.MainModel
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.MainModel
<script type="text/javascript">
$(document).ready(() => {
@@ -86,15 +87,15 @@
closeButton.parentNode.replaceChild(closeButtonClone, closeButton);
function saveBtnListener(event) {
saveButtonEvent(serviceRecordOid);
singleSignatureSaveButtonEvent(serviceRecordOid);
}
function clearBtnListener(event) {
clearButtonEvent(signaturePad);
singleSignatureClearButtonEvent(signaturePad);
}
function closeBtnListener(event) {
cancelButtonEvent(signaturePad);
singleSignatureCloseButtonEvent(signaturePad);
}
saveButtonClone.addEventListener("click", saveBtnListener);
@@ -103,7 +104,7 @@
});
}
function saveButtonEvent(selectedServiceRecordOid) {
function singleSignatureSaveButtonEvent(selectedServiceRecordOid) {
const date = new Date();
const clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("single-signature-sketch-pad")));
@@ -117,32 +118,53 @@
const formattedDate = getDateAndTimeAsString(date, true);
const form = $("<form>",
{
method: "post",
action: "@Url.Action("SaveSignature", "Main")"
});
form.append(
$("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureBlobKey",
value: dataUrl
})
);
form.append($("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureDateKey",
value: formattedDate
}));
form.append($("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureRecordOidKey",
value: selectedServiceRecordOid
}));
showSpinner();
$(`#sr-sig-blob-${selectedServiceRecordOid}`).val(dataUrl);
$(`#sr-sig-date-${selectedServiceRecordOid}`).val(formattedDate);
$(`#save-signature-form-${selectedServiceRecordOid}`).submit();
$("#sr-sg-container").append(form);
form.submit();
$("#single-signature-modal").modal("hide");
}
function cancelButtonEvent(signaturePad) {
function singleSignatureCloseButtonEvent(signaturePad) {
$("#single-signature-modal").modal("hide");
signaturePad.clear();
return;
@* Es wird schon ein Popup angezeigt. Deswegen kann kein zweites angezeigt werden. Das läge nämlich unter dem ersten Popup! *@
showMessagePopupWithCallback("Unterschrift", "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?",
() => {
$("#single-signature-modal").modal("hide");
signaturePad.clear();
}, false);
}
function clearButtonEvent(signaturePad) {
function singleSignatureClearButtonEvent(signaturePad) {
signaturePad.clear();
}
</script>
@@ -167,6 +189,8 @@ else
var info = $"{nameAndDateOfBirth} | {supportConceptTimeSpan}";
<div id="sr-sg-container"></div>
<div id="single-signature-modal" class="modal" tabindex="-1" role="dialog" data-backdrop="static">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">

View File

@@ -37,6 +37,21 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -49,6 +64,7 @@
<Compile Include="DakotaUtils.cs" />
<Compile Include="Logic\DakotaKTDReader.cs" />
<Compile Include="Logic\DakotaManager.cs" />
<Compile Include="Logic\DakotaNumberManager.cs" />
<Compile Include="Models\Auftragsdatei\Auftragsdatei.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart2.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart3.cs" />
@@ -149,6 +165,7 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="KTDatei\AO.txt">
@@ -171,10 +188,6 @@
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj">
<Project>{b0d73e3d-4ae7-4024-93a6-db1f46d7ccee}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>

View File

@@ -1,5 +1,5 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -32,7 +32,7 @@ namespace Dakota
return false;
}
public static bool IsSozioTherapie(this InvoiceBase invoiceBase)
public static bool IsSozioTherapie(this IInvoiceBase invoiceBase)
{
try
{

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared.Core;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared;
using BS.Shared.DataContracts;
using Dakota.Models.Infos;
using Dakota.Models.Schlüssels;

View File

@@ -1,5 +1,5 @@
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Models;
using Dakota.Models.Infos;
using System;
using System.Collections.Generic;

View File

@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace Dakota.Logic
{
public class DakotaNumberManager
{
private readonly string _Filepath;
private readonly static object _LockObj = new object();
private Dictionary<string, Tuple<int, int>> _Numbers;
public DakotaNumberManager(string filePath)
{
_Filepath = filePath;
_Numbers = LoadNumbers();
}
private Dictionary<string, Tuple<int, int>> LoadNumbers()
{
if (!File.Exists(_Filepath))
{
return new Dictionary<string, Tuple<int, int>>
{
};
}
var json = File.ReadAllText(_Filepath);
return JsonSerializer.Deserialize<Dictionary<string, Tuple<int, int>>>(json) ?? new Dictionary<string, Tuple<int, int>>
{
};
}
private void SafeNumbers()
{
var json = JsonSerializer.Serialize(_Numbers, new JsonSerializerOptions()
{
WriteIndented = true
});
File.WriteAllText(_Filepath, json);
}
public Tuple<int, int> GetNextNumber(string datenannahmestelle, bool newDatenaustauschreferenz)
{
lock (_LockObj)
{
if (_Numbers.ContainsKey(datenannahmestelle))
{
var (datenaustauschreferenz, transfernummer) = _Numbers[datenannahmestelle];
if (newDatenaustauschreferenz)
datenaustauschreferenz++;
transfernummer++;
_Numbers[datenannahmestelle] = new Tuple<int, int>(datenaustauschreferenz, transfernummer);
}
else
{
_Numbers.Add(datenannahmestelle, new Tuple<int, int>(1, 0));
}
SafeNumbers();
return _Numbers[datenannahmestelle];
}
}
}
}

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using Dakota.Models;
using Dakota.Models.Auftragsdatei;
using Dakota.Models.Blocke;

View File

@@ -49,14 +49,7 @@ namespace Dakota.Models.Daten
if (!_IgnoreCheck)
{
if (_Value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
else if (_Value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
CheckValue(_Value);
}
return _Value;
@@ -90,15 +83,7 @@ namespace Dakota.Models.Daten
value = value.Trim();
if (value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
if (value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
CheckValue(value);
try
{
@@ -111,5 +96,23 @@ namespace Dakota.Models.Daten
throw new Exception($"Fehler bei Feld \'{Title}\' mit Wert \"{value}\"", e);
}
}
private void CheckValue(string value)
{
if (value.Length < MinStellen)
{
throw GetGkvException(value, true);
}
else if (value.Length > MaxStellen)
{
throw GetGkvException(value, false);
}
}
private GkvException GetGkvException(string value, bool isLess)
=> new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe " +
$"{(isLess ? $"muss es jedoch mindestens {MinStellen}" : $"darf es jedoch maximal {MaxStellen}")}" +
" Stellen haben");
}
}

View File

@@ -1,6 +1,6 @@
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Exceptions;
using BS.Shared.Models;
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;

View File

@@ -18,13 +18,9 @@
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -52,7 +48,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -62,6 +58,10 @@
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

13
Dakota/packages.config Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.11" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.IO.Pipelines" version="9.0.11" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="9.0.11" targetFramework="net472" />
<package id="System.Text.Json" version="9.0.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

View File

@@ -103,14 +103,14 @@ namespace DakotaSender
}
internal static void PrintFileInfo(DakotaSystemFile file)
{
Print($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}" );
Print($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
PrintLine($"(T:{file.Tenant}, U:{file.ApplicationUserOid}, P:{file.ProtokollOid}, D:{file.Datenannahmestelle})");
}
internal static void HandleException(Exception e, string tenant)
internal static void HandleException(Exception e, string tenant)
{
MailUtils.SendGkvModuleErrorMail("GkvSender Exception", e, tenant);
PrintLine(e.ToString());
PrintLine(e.ToString());
}
static void CheckDakotaStatus(bool sub = false)
@@ -196,7 +196,7 @@ namespace DakotaSender
var test = DakotaSenderUtils.IsTenantTest(tenant);
var allow = DakotaSenderUtils.IsTenantAllowed(tenant);
if(!test && !allow)
if (!test && !allow)
{
PrintLine($"{auft.FullName} wird ignoriert. Tenant \'{tenant}\' ungültig.");
return null;
@@ -216,7 +216,7 @@ namespace DakotaSender
return file;
}
catch(Exception e)
catch (Exception e)
{
HandleException(e, tenant);
}
@@ -263,47 +263,32 @@ namespace DakotaSender
}
static void HandleQueueFiles(List<DakotaSystemFile> files)
{
bool error = false;
foreach (var file in files)
{
if (!error)
var msg = HandleQueueFile(file, out bool success);
if (success)
{
var msg = HandleQueueFile(file, out bool success);
PrintLine(msg);
if (success)
{
PrintLine(msg);
Add2Results(file, GkvTransferResultType.Success);
Add2Results(file, GkvTransferResultType.Success);
FileController.CopyFileToCopy(file);
FileController.CopyFileToCopy(file);
FileController.CopyFileToSuccesss(file);
}
else
{
error = true;
PrintLine("Fehler gefunden. " + msg);
Add2Results(file, GkvTransferResultType.FailSoft, msg, "DS:Fehler");
FileController.CopyFileToCopy(file);
FileController.CopyFileToFailed(file);
}
FileController.CopyFileToSuccesss(file);
}
else
{
PrintLine($"Folgefehler: {file.SourceNutzdatendatei.Name}");
PrintLine("Fehler gefunden. " + msg);
Add2Results(file, GkvTransferResultType.FailFollowUp, "Wird neu erstellt und übertragen.", "DS:Folgefehler");
Add2Results(file, GkvTransferResultType.FailSoft, msg, "DS:Fehler");
FileController.CopyFileToCopy(file);
FileController.CopyFileToFailed(file);
}
FileController.DeleteQueueFile(file);
}
}
/// <summary>

View File

@@ -53,11 +53,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "661430035");
Assert.IsTrue(test.IKKrankenkasse == "661430035");
Assert.IsTrue(test.Item2 == "106492406");
Assert.IsTrue(test.IKKostentrager == "106492406");
Assert.IsTrue(test.Item3 == "105328415");
Assert.IsTrue(test.IKDatenannahmestelle == "105328415");
}
[TestMethod]
@@ -67,11 +67,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "104212516");
Assert.IsTrue(test.IKKrankenkasse == "104212516");
Assert.IsTrue(test.Item2 == "104212505");
Assert.IsTrue(test.IKKostentrager == "104212505");
Assert.IsTrue(test.Item3 == "104212505");
Assert.IsTrue(test.IKDatenannahmestelle == "104212505");
}
[TestMethod]
@@ -89,11 +89,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "109905003");
Assert.IsTrue(test.IKKrankenkasse == "109905003");
Assert.IsTrue(test.Item2 == "109905003");
Assert.IsTrue(test.IKKostentrager == "109905003");
Assert.IsTrue(test.Item3 == "109905003");
Assert.IsTrue(test.IKDatenannahmestelle == "109905003");
}
}
}

View File

@@ -435,7 +435,6 @@
<Compile Include="ICF\ICFDAO.cs" />
<Compile Include="LoggedInUserOperationContextExt.cs" />
<EmbeddedResource Include="Mappings\Bargeldtransaktionshistory.hbm.xml" />
<Compile Include="Models\AddressInformation.cs" />
<Compile Include="Models\XRechnung\XRBuyerBankAccount.cs" />
<Compile Include="Models\XRechnung\XRechnung.cs" />
<Compile Include="Models\XRechnung\XRSellerBankAccount.cs" />

View File

@@ -36,7 +36,7 @@ namespace Host
private string ResultFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath");
private string QueueFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath");
private string KostentragerdateiFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvKostentragerdateiFolderPath");
protected void Page_Load(object sender, EventArgs e)
{
try
@@ -67,6 +67,10 @@ namespace Host
GetStatus(GkvSender.DeserializeRequest<GkvServerGetStatusRequestDC>(str, SendInvalidInputResponse));
return;
case RequestType.GkvServerGetNumber:
GetNumber(GkvSender.DeserializeRequest<GkvServerGetNumberRequestDC>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse("RequestType unbekannt.");
return;
@@ -78,7 +82,18 @@ namespace Host
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
var ex_text = ex.Message + "\n\n" + ex.StackTrace;
if(ex.InnerException != null)
{
ex_text += "\n\n" + ex.InnerException.Message + "\n\n" + ex.InnerException.StackTrace;
if (ex.InnerException.InnerException != null)
{
ex_text += "\n\n" + ex.InnerException.InnerException.Message + "\n\n" + ex.InnerException.InnerException.StackTrace;
}
}
SendErrorResponse("Exception: " + ex_text);
}
@@ -110,7 +125,7 @@ namespace Host
if (string.IsNullOrEmpty(server))
return false;
var loginurl = string.Format(LOGINSERVER_URL, $"https://{server}/service");
var loginurl = string.Format(LOGINSERVER_URL, $"https://{server}/service_developer");
#if DEBUG
if (server.IndexOf("localhost") >= 0)
@@ -245,6 +260,23 @@ namespace Host
return;
}
private void GetNumber(GkvServerGetNumberRequestDC req)
{
var response = new GkvServerGetNumberResponseDC(false);
var path = ConfigurationManager.AppSettings.Get("GkvAbrechnungRootPath");
var filePath = Path.Combine(path, "numbers.json");
var manager = new DakotaNumberManager(filePath);
(response.Datenaustauschreferenz, response.Transfernummer)
= manager.GetNextNumber(req.IKDatenannahmestelle, req.NewDatenaustauschRef);
response.Success = true;
SendResponse(response);
return;
}
private string SaveFileInQueue(GkvServerSendNewRequestDC req)
{

View File

@@ -58,6 +58,18 @@
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Castle.DynamicProxy, Version=1.1.5.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.DynamicProxy.dll</HintPath>
</Reference>
<Reference Include="Castle.DynamicProxy2, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.DynamicProxy2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Mvvm.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Private>False</Private>
@@ -86,8 +98,8 @@
<Reference Include="DevExpress.XtraScheduler.v23.2.Core.Desktop, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v23.2.Reporting, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.11\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeAnalysis, Version=3.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.CodeAnalysis.Common.3.4.0\lib\netstandard2.0\Microsoft.CodeAnalysis.dll</HintPath>
@@ -110,6 +122,10 @@
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NHibernate.ByteCode.Castle, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\NHibernate.ByteCode.Castle.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
@@ -135,8 +151,12 @@
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.IO.Pipelines, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.9.0.11\lib\net462\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -153,8 +173,14 @@
<Reference Include="System.Text.Encoding.CodePages, Version=9.0.0.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.9.0.2\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.9.0.11\lib\net462\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Web.DynamicData" />

View File

@@ -19,7 +19,7 @@
<WebProjectProperties>
<StartPageUrl>
</StartPageUrl>
<StartAction>NoStartPage</StartAction>
<StartAction>CurrentPage</StartAction>
<AspNetDebugging>True</AspNetDebugging>
<SilverlightDebugging>False</SilverlightDebugging>
<NativeDebugging>False</NativeDebugging>
@@ -33,7 +33,7 @@
<StartWorkingDirectory>
</StartWorkingDirectory>
<EnableENC>True</EnableENC>
<AlwaysStartWebServerOnDebug>True</AlwaysStartWebServerOnDebug>
<AlwaysStartWebServerOnDebug>False</AlwaysStartWebServerOnDebug>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>

View File

@@ -25,12 +25,64 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -324,6 +376,7 @@
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
<add key="GkvAbrechnungRootPath" value="C:\GkvAbrechnung" />
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="App8IpAddress" value="88.198.50.220" />
<add key="GkvSumServerIPAdress" value="88.198.50.220" />

View File

@@ -25,11 +25,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -41,7 +41,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -75,6 +75,14 @@
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -287,7 +295,7 @@
</binding>
<binding name="webHttpStreamBindingConfig" transferMode="Streamed">
<!-- Optional: Maximale Nachrichten- und Puffergröße anpassen -->
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<security mode="None" />
<!-- Für ungesicherte Verbindungen (HTTP) -->
</binding>
@@ -339,7 +347,7 @@
<add name="AdminSecurityExtension" type="BeWo.Service.ServiceBehavior.AdminSecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="AdminHibernateSessionExtension" type="BeWo.Service.ServiceBehavior.AdminHibernateBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="JsonErrorExtension" type="BeWo.Service.ServiceBehavior.JsonError.JsonErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
@@ -377,6 +385,7 @@
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
<add key="GkvAbrechnungRootPath" value="C:\GkvAbrechnung" />
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="App8IpAddress" value="88.198.50.220" />
<add key="GkvSumServerIPAdress" value="88.198.50.220" />
@@ -388,7 +397,7 @@
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/"/>
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/" />
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/"/>
<add key="StoredFilesFolderPath" value="C:\BeWoPlaner\StoredFiles"/>

View File

@@ -3,7 +3,7 @@
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net472" />
<package id="jQuery" version="3.7.1" targetFramework="net472" />
<package id="jquery.mobile" version="1.3.0" targetFramework="net40" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.2" targetFramework="net472" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.11" targetFramework="net472" />
<package id="Microsoft.CodeAnalysis" version="3.4.0" targetFramework="net472" />
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.9.6" targetFramework="net472" developmentDependency="true" />
<package id="Microsoft.CodeAnalysis.Common" version="3.4.0" targetFramework="net472" />
@@ -21,10 +21,14 @@
<package id="System.Composition.Hosting" version="9.0.2" targetFramework="net472" />
<package id="System.Composition.Runtime" version="9.0.2" targetFramework="net472" />
<package id="System.Composition.TypedParts" version="9.0.2" targetFramework="net472" />
<package id="System.IO.Pipelines" version="9.0.11" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="9.0.2" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Encoding.CodePages" version="9.0.2" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="9.0.11" targetFramework="net472" />
<package id="System.Text.Json" version="9.0.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

BIN
Lib/System.Memory.dll Normal file

Binary file not shown.

View File

@@ -1,11 +1,11 @@
using BeWo.Data.Entities;
using BeWo.Data.Models;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Models;
using DevExpress.XtraPrinting.Drawing;
using System;
using System.Collections.Generic;

View File

@@ -70,6 +70,10 @@
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A6D3E7D4-3AE7-475E-A1FD-D816F0A88043}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BBIRheinSieg</RootNamespace>
<AssemblyName>6652760522_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\CustomerDlls\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\CustomerDlls\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Calculations\DefaultCalculations.cs" />
<Compile Include="Calculations\CustomGroupDurationCalculator.cs" />
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\CustomLWLDiggaBerechnung.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Reporting\CustomMitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="Reporting\CustomReportCreator.cs" />
<Compile Include="Service\CustomHomeContentGenerator.cs" />
<Compile Include="Service\CustomVacationService.cs" />
<Compile Include="Service\CustomVertretungsManager.cs" />
<Compile Include="Service\DefaultSaveInterceptor.cs" />
<Compile Include="Statistics\CustomServiceRecordStatisticFactory.cs" />
<Compile Include="Validation\ServiceRecordValidator.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Export\" />
<Folder Include="Import\" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
namespace TemplateNeuKunde.Calculations
{
//public class CustomGroupDurationCalculator : GroupDurationCalculator
//{
// public override GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
// {
// return new GroupDurationDC()
// {
// SingleDuration = (totalDuration / personCount) * employeeCount,
// TotalDuration = totalDuration
// };
// }
//}
}

View File

@@ -0,0 +1,25 @@
using System;
namespace TemplateNeuKunde.Calculations
{
//public class DefaultCalculations : BS.Shared.Services.Calculations
//{
// public override int GetRoundedDuration(int minuteInterval, decimal durationInMinutes)
// {
// decimal lRoundedDuration = durationInMinutes;
// if (minuteInterval > 0 && durationInMinutes >= 5)
// {
// lRoundedDuration = durationInMinutes % minuteInterval != 0
// ? durationInMinutes + (minuteInterval - (durationInMinutes % minuteInterval))
// : durationInMinutes;
// }
// return (int)Math.Round(lRoundedDuration, 0, MidpointRounding.AwayFromZero);
// }
//}
}

View File

@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
using Service.Invoicing;
namespace TemplateNeuKunde.Invoicing
{
// public class CustomInvoiceCreation : InvoiceCreation
//{
// //public override void SetInvoiceId(ServiceInvoice invoice)
// //{
// // //invoice.InvoiceBase.InvoiceId = "SBD";
// // //invoice.InvoiceBase.InvoiceTypeText = "";
// //}
// // //Setze für Selbstzahler die Adresse des Klienten
// // public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
// // {
// // if (costBearer.Organisation.Name == "Selbstzahler")
// // {
// // serviceInvoice.InvoiceBase.RecipientOrganisationOid = costBearer.Organisation.Oid;
// // if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept != null)
// // {
// // var cust = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.SupportConcept.Customer;
// // if (cust.Person.InvoiceAddress != null)
// // {
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.InvoiceAddress.CopyToNew();
// // }
// // else if (cust.Person.Address != null)
// // {
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.Address.CopyToNew();
// // }
// // serviceInvoice.InvoiceBase.RecipientPersonFirstName = cust.Person.FirstName;
// // serviceInvoice.InvoiceBase.RecipientPersonLastName = cust.Person.LastName;
// // serviceInvoice.InvoiceBase.RecipientCustomerOid = cust.Oid;
// // }
// // }
// // }
// }
}

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace TemplateNeuKunde.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
// public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
// {
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie einer Bewilligung abhängt
//foreach (var item in supportConcepts2ServiceRecords)
//{
// var csc = item.Key;
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(csc.CostBearerRelOids[0]);
// foreach (var scap in cb2sc.ApprovalPeriodList)
// {
// if (scap.ServiceCategory != null)
// {
// var ic = GetInvoiceCreatorForCategory(scap.ServiceCategory.Name);
// if (ic != null)
// return ic;
// }
// }
//}
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie oder Organisation eines ServiceRecords abhängt
//foreach (var list in supportConcepts2ServiceRecords.Values)
// {
// foreach (var sr in list)
// {
// //Hier wird Kategorie geprüft
// var ic = GetInvoiceCreatorForCategory(sr.ServiceDescription.Category.Name);
// if (ic != null)
// return ic;
// //Hier wird Organisation geprüft
// if (sr.CostBearer.Name.ToLower().Contains("selbstzahler"))
// {
// return new CustomInvoiceCreation();
// }
// }
// }
// return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
// }
// private InvoiceCreation GetInvoiceCreatorForCategory(String catName)
// {
// if (!String.IsNullOrEmpty(catName))
// {
// String cat = catName.ToLower().Trim();
// if (cat.IndexOf("assistenz") >= 0)
// return new CustomInvoiceCreation();
// }
// return null;
// }
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace TemplateNeuKunde.Invoicing
{
public class CustomLWLDiggaBerechnung : LWLDiggaBerechnung
{
public override void InitBerechnung()
{
//this.Umstellungsdatum = new DateTime(2025, 1, 1);
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("KundeXyz")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KundeXyz")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("c1fed668-adb9-47e0-b589-1389618e1b6e")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BS.Shared.Extensions;
namespace TemplateNeuKunde.Reporting
{
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
{
//Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch im VacationService einkommentiert werden
//public override decimal GetFeiertagsFaktor(DateTime start)
//{
// if (start.Month == 12)
// {
// if (start.Day == 24 || start.Day == 31)
// {
// return 0.5m;
// }
// }
// return base.GetFeiertagsFaktor(start);
//}
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.DefaultReports;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using DevExpress.XtraReports.UI;
namespace BBIRheinSieg.Reporting
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid, true, nurFehlende);
return CreateServiceOverviewReportForROs(lROs, orgaOid);
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServiceOverviewReportForROs(new List<ServicesOverviewRO> { ro }, orgaOid);
}
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
namespace TemplateNeuKunde.Service
{
//public class CustomHomeContentGenerator : HomeContentGenerator
//{
//Einkommentieren um Geburtstage auszublenden
// public override List<CompactPersonDC> GetPersonsHavingBirthday(DateTime birthdayUntil)
// {
// return new List<CompactPersonDC>();
// List<CompactPersonDC> alle = base.GetPersonsHavingBirthday(birthdayUntil);
// List<CompactPersonDC> nurMitarbeiter = new List<CompactPersonDC>();
// foreach (var compactPersonDc in alle)
// {
// if (compactPersonDc.PersonType == PersonType.Employee)
// {
// nurMitarbeiter.Add(compactPersonDc);
// }
// }
// return nurMitarbeiter;
// }
//}
}

View File

@@ -0,0 +1,45 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace TemplateNeuKunde.Service
{
//public class CustomVacationService : VacationService
//{
// //public override string Bundesland { get => "Bayern"; }
// // public override List<FeiertagDC> GetFeiertage(int year, String bundesland)
// // {
// // List<FeiertagDC> list = base.GetFeiertage(year, bundesland);
// // list.Add(new FeiertagDC { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
// // return list;
// // }
// //Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch in CustomMitarbeiterstundenkontoBerechnung einkommentiert werden
// //public override decimal GetFeiertagsFaktor(DateTime start)
// //{
// // if (start.Month == 12)
// // {
// // if (start.Day == 24 || start.Day == 31)
// // {
// // return 0.5m;
// // }
// // }
// // return base.GetFeiertagsFaktor(start);
// //}
//}
}

View File

@@ -0,0 +1,93 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.SBD;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace BBIRheinSieg.Service
{
public class CustomVertretungsManager : VertretungsManager
{
public override List<CompactVertreterEmployeeDC> SucheVertreter(VertreterSucheFilterDC filter)
{
var vertretungsListe = CreateVertretungsListe(filter.StartDate, filter.EndDate);
// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
var alleZugewiesenenVertreterEmpOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
vertretungsItem.Vertreter != null &&
vertretungsItem.Vertreter.ActivationType == ActivationTypeId.Active).Select(item => item.Vertreter.EmployeeOid).ToList();
// EmployeeOids von abwesenden Mitarbeitern
var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Vertretungsplanung").FirstOrDefault();
if (team != null)
{
var list = new List<CompactVertreterEmployeeDC>();
var allEmps = team.MemberList;
var empsInResult = new List<Employee>();
foreach (var emp in allEmps)
{
if (!alleZugewiesenenVertreterEmpOids.Contains(emp.Oid.Value) && !abwesenendeEmployeeOids.Contains(emp.Oid.Value) && !IsAbwesend(emp, filter.StartDate, filter.EndDate))
{
empsInResult.Add(emp);
var dc = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDC(emp);
list.Add(dc);
}
}
//Füge alle Employees zu, deren Kind krank sind
var schonVorhandeneEmps = empsInResult.Select(e => e.Oid.Value).ToList();
var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank && !schonVorhandeneEmps.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid).Distinct().ToList();
if (employeeOids.Count > 0)
{
var weitereEmps = DAOFactory.GenericDAO.LoadByIDs<Employee>(employeeOids);
list.AddRange(MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(weitereEmps));
}
return list;
}
return base.SucheVertreter(filter);
}
private bool IsAbwesend(Employee emp, DateTime startDate, DateTime endDate)
{
foreach (var at in emp.AbsenceTimes)
{
if (at.Start <= startDate && (!at.End.HasValue || at.End >= endDate))
{
return true;
}
}
return false;
}
}
}

View File

@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace TemplateNeuKunde.Validation
{
//public class DefaultSaveInterceptor : SaveInterceptor
// {
// public override string AllowSaveCustomer(CustomerDC c)
// {
// if (c.CustomerOid.HasValue)
// {
// return null;
// }
// if (!c.DateOfBirth.HasValue)
// {
// return "Bitte geben Sie ein Geburtsdatum an.";
// }
// if (!String.IsNullOrWhiteSpace(c.FirstName) && !String.IsNullOrWhiteSpace(c.LastName) && c.DateOfBirth.HasValue)
// {
// var duplicates = DAOFactory.SearchDAO.FindCustomer(c.FirstName, c.LastName, c.DateOfBirth.Value);
// if (duplicates != null && duplicates.Count > 0)
// {
// var dc = duplicates[0];
// String archiviert = "";
// if (dc.Person.Sex.HasValue && dc.Person.Sex.Value == Sex.Female)
// {
// if (dc.IsActive == ActivationTypeId.Archived)
// {
// archiviert = "archivierte ";
// }
// return String.Format(
// "Es gibt bereits eine {3}Klientin {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
// }
// else
// {
// if (dc.IsActive == ActivationTypeId.Archived)
// {
// archiviert = "archivierten ";
// }
// return String.Format(
// "Es gibt bereits einen {3}Klienten {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
// }
// }
// }
// return base.AllowSaveCustomer(c);
// }
// }
}

View File

@@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
namespace TemplateNeuKunde.Statistics
{
//public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
// {
// public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
// {
// var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
// var dc = new ServiceRecordStatisticsInfoDC();
// dc.Header = new string[4];
// dc.Header[0] = "Bewilligungszeitraum:";
// dc.Header[1] = "Geleistet diesen Monat/Gesamt:";
// dc.Header[2] = "Bewilligt diesen Monat/Gesamt:";
// dc.Header[3] = "Frei diesen Monat/Gesamt:";
// dc.ForegroundColor = new string[4];
// dc.ForegroundColor[0] = "#FF2B508B";
// dc.ForegroundColor[1] = "#FF2B508B";
// dc.ForegroundColor[2] = "#FF2B508B";
// dc.ForegroundColor[3] = "#FF2B508B";
// dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
// if (stats != null)
// {
// if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats))
// dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate));
// foreach (var pdc in stats.PeriodStatistics)
// {
// dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
// }
// }
// return dc;
// }
// public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate)
// {
// var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
// dc.LeftValues[0] = "Gesamt";
// dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60);
// dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
// dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60);
// dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
// dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60);
// dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60);
// return dc;
// }
// public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
// {
// var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
// if (periodStats.SupportConceptApprovalPeriod != null)
// {
// if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
// {
// dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}",
// periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
// periodStats.SupportConceptApprovalPeriod.StartDate,
// periodStats.SupportConceptApprovalPeriod.EndDate);
// }
// else
// {
// dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}",
// periodStats.SupportConceptApprovalPeriod.StartDate,
// periodStats.SupportConceptApprovalPeriod.EndDate);
// }
// }
// dc.LeftValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedThisMonth / 60);
// dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60);
// dc.LeftValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60);
// dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60);
// dc.LeftValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60);
// dc.RightValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
// return dc;
// }
// public override decimal GetApprovedMinutesPerMonth(SupportConceptPeriodStatisticsDC periodStats)
// {
// if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
// {
// if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly)
// {
// return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 60;
// }
// }
// return base.GetApprovedMinutesPerMonth(periodStats);
// }
// }
}

View File

@@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace TemplateNeuKunde.Validation
{
//public class CustomServiceRecordValidator : ServiceRecordValidator
//{
// public override string[] GetIgnoreCategoriesForOverlappingCheck()
// {
// return new[] { "Arbeitszeiterfassung" };
// }
// public override List<ServiceRecordValidationResultDC> ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics,
// int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
// {
// var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
// if (newServiceRecord.ServiceDescription.Category.IsBillable && newServiceRecord.RoundedDuration == 0)
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Die Dauer muss größer als 0 sein."
// });
// }
// var sd = newServiceRecord.ServiceDescription.Name.ToLower();
// var cat = newServiceRecord.ServiceDescription.Category.Name.ToLower();
// if (cat.Contains("arztbesuch") ||
// cat.Contains("krank") ||
// cat.Contains("fortbildung") ||
// cat.Contains("urlaub") ||
// cat.Contains("indirekte zeiten") ||
// (cat.Contains("betrieb") && cat.Contains("zeiten")))
// {
// if (sd.Contains("abwesend"))
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Dieser Eintrag kann nur von Fachleitungen oder Bereichsleitungen angelegt werden."
// });
// }
// }
// bool hasZukunftResult = false;
// foreach (var r in list)
// {
// if (r.ResultType == ServiceRecordValidationResult.Custom && r.Message.Contains("Zukunft"))
// {
// hasZukunftResult = true;
// }
// }
// if (!hasZukunftResult)
// {
// if (newServiceRecord.End.Value > DateTime.Now.AddMinutes(20))
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Das gewählte Datum darf nicht in der Zukunft liegen."
// });
// }
// }
// return list;
// }
// }
}

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.4000" newVersion="4.0.0.4000" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.4000" newVersion="3.1.0.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -62,6 +62,10 @@
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -34,10 +34,6 @@ namespace BeWo.Service.DCEntityMapper
isReady = false;
tooltip = "Fataler Fehler";
break;
case GkvState.ErrorFolgefehler:
isReady = false;
tooltip = "Folgefehler";
break;
case GkvState.Paid:
isReady = false;
tooltip = "Bereits bezahlt";
@@ -67,7 +63,7 @@ namespace BeWo.Service.DCEntityMapper
// Hole OrganisationLight
var orga = DAOFactory.GenericDAO.LoadByID<OrganisationLight>(orga_oid);
if (!Validator.IsOrganisationInformationValid(orga))
if (!GkvValidator.IsOrganisationInformationValid(orga))
{
isReady = false;
tooltip = "Organisation ist nicht Gkv Ready";

View File

@@ -146,8 +146,12 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.CustomerOid = customer.Oid.Value;
pDataContract.CustomerFirstName = customer.Person.FirstName;
pDataContract.CustomerLastName = customer.Person.LastName;
var error = Validator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
pDataContract.IsGkvValidError = error;
var error = GkvValidator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
if (error is null)
error = GkvValidator.ValidateInvoiceBase(pDataContract);
pDataContract.IsGkvValidError = error;
pDataContract.IsGkvValid = error is null;
}

View File

@@ -4,7 +4,6 @@ using System.Linq;
using System.ServiceModel;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models;
using BeWo.Data.Security;
using BeWo.Service.Configuration;
using BeWo.Service.Core;
@@ -15,6 +14,7 @@ using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Models;
namespace BeWo.Service.Plugins
{

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.ServiceModel;
using BeWo.Data.Models.XRechnung;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;

View File

@@ -28,7 +28,6 @@ using BS.Shared.Extensions;
using BS.Shared.Exceptions;
using BS.Shared.AppSender;
using BeWo.Data.Security;
using BeWo.Data.Models.XRechnung;
using BS.Shared.DataContracts.Invoicing.XRechnung;
using System.IO;
using BeWo.Service.ServiceUtils;

View File

@@ -852,7 +852,7 @@ namespace BeWo.Service.ServiceImplementations
IList<Organisation> list = DAOFactory.GenericDAO.GetAllActiveAndArchived<Organisation>();
list = list.Where(x => !x.GkvAusblenden &&
Validator.IsOrganisationInformationValid(x.IKDatenannahmestelle, x.IKKostentrager, x.IKKrankenkasse, x.BezDatenannahmestelle)).ToList();
GkvValidator.IsOrganisationInformationValid(x.IKDatenannahmestelle, x.IKKostentrager, x.IKKrankenkasse, x.BezDatenannahmestelle)).ToList();
return CreateCompactOrganisations(list);
}

View File

@@ -1,7 +1,6 @@
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models.XRechnung;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;

View File

@@ -1,7 +1,6 @@
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models.XRechnung;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;

View File

@@ -329,11 +329,10 @@ namespace BeWo.Service.ServiceImplementations
Message = app8res.Message,
Success = app8res.Success,
Hausanschrift = app8res.Hausanschrift ?? new AddressDC(),
Postfachanschrift=app8res.Postfachanschrift ?? new AddressDC(),
Grosskundenanschrift =app8res.Grosskundenanschrift ?? new AddressDC()
Postfachanschrift = app8res.Postfachanschrift ?? new AddressDC(),
Grosskundenanschrift = app8res.Grosskundenanschrift ?? new AddressDC()
};
// Schaue, ob IK Krankenkassen bereits bei einer anderen Organisation hinterlegt ist
if (res.Gefunden)
{
@@ -378,12 +377,12 @@ namespace BeWo.Service.ServiceImplementations
var manager = new DakotaManager();
var mandatordc = new OperationsServiceImp().GetMandator();
Validator.ValidateMandator(mandatordc);
GkvValidator.ValidateMandator(mandatordc);
var gkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkvAbrechnung);
var orgadc = gkvAbrechnungDC.Organisation;
Validator.ValidateOrganisation(orgadc);
GkvValidator.ValidateOrganisation(orgadc);
var datenannahmestelle = orgadc.IKDatenannahmestelle;
var (datenaustauschreferenz, transfernummer) = GetNextDatenaustauschreferenzTransfernummer(gkvAbrechnung, datenannahmestelle);
@@ -417,7 +416,7 @@ namespace BeWo.Service.ServiceImplementations
var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service);
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
Validator.ValidateCustomer(customerdc);
GkvValidator.ValidateCustomer(customerdc);
manager.Add(servicedc, orgadc, customerdc, addressInfo, dat_short, tra_short);
}
@@ -489,25 +488,23 @@ namespace BeWo.Service.ServiceImplementations
private Tuple<int, int> GetNextDatenaustauschreferenzTransfernummer(GkvAbrechnung gkvAbrechnung, string datenannahmestelle)
{
var datenaustauschref = DAOFactory.SearchDAO.GetNextDatenaustauschreferenz(datenannahmestelle);
int transfernummer;
bool newDatenaustauschref;
var state = gkvAbrechnung.GetState();
if (state == GkvState.NoSend)
{
transfernummer = DAOFactory.SearchDAO.GetNextTransfernummer(datenannahmestelle);
newDatenaustauschref = true;
}
else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal || state == GkvState.ErrorFolgefehler)
else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal)
{
transfernummer = gkvAbrechnung.GkvTransferProtokolle.Last().Transfernummer;
newDatenaustauschref = false;
}
else
{
throw new ArgumentException($"Versucht Transfernummer zu laden, invalid state: {state}", nameof(state));
}
return new Tuple<int, int>(datenaustauschref, transfernummer);
return SendApp8GetNumberRequest(datenannahmestelle, newDatenaustauschref, true);
}
private Tuple<int, int> ClearDatenaustauschreferenzTransfernummer(int datenaustauschreferenz, int transfernummer)
{
@@ -603,6 +600,37 @@ namespace BeWo.Service.ServiceImplementations
return false;
}
private Tuple<int, int> SendApp8GetNumberRequest(string ik_datenannahmestelle, bool newDatenaustauschref, bool newTransferNumber)
{
var request = new GkvServerGetNumberRequestDC();
request.IKDatenannahmestelle = ik_datenannahmestelle;
request.NewDatenaustauschRef = newDatenaustauschref;
request.NewTransferNumber = newTransferNumber;
GkvServerGetNumberResponseDC response_app8;
response_app8 = SendApp8Request<GkvServerGetNumberRequestDC, GkvServerGetNumberResponseDC>(request);
if (!response_app8.Success)
throw new GkvException("Success false - " + response_app8.Message);
return new Tuple<int, int>(response_app8.Datenaustauschreferenz, response_app8.Transfernummer);
// Kein Try-Catch, damit der Prozess oben abgebrochen wird
//try
//{
//}
//catch (Exception e)
//{
// MailUtils.SendGkvModuleErrorMail("GkvServerGetNumberRequest Error", e, Tenant);
//}
//return null;
}
public void HandleGkvServerResults(IEnumerable<GkvServerResultDC> results)
{
var protokolls = new List<GkvTransferProtokollLight>();
@@ -626,9 +654,6 @@ namespace BeWo.Service.ServiceImplementations
case GkvTransferResultType.FailFatal:
protokoll.SentApp8Success = false;
break;
case GkvTransferResultType.FailFollowUp:
protokoll.SentApp8Success = false;
break;
}
protokolls.Add(protokoll);
@@ -636,27 +661,6 @@ namespace BeWo.Service.ServiceImplementations
if (protokolls.Any())
DAOFactory.GenericDAO.Update(protokolls);
var follows = results.Where(x => x.ResultType == GkvTransferResultType.FailFollowUp);
if (follows.Any())
{
foreach (var follow in follows)
{
var protokoll_oid = follow.ProtokollOid;
var abrechnung_oid = DAOFactory.FinanceDAO.GetGkvParentByProtokollOid(protokoll_oid);
var new_req = new GkvAbrechnungSendRequestDC()
{
GkvAbrechnungOid = abrechnung_oid
};
var res = SendNewGkvAbrechnung(new_req);
if (!res.Success)
throw new GkvException("Success - " + res.Message);
}
}
}
private Res SendApp8Request<Req, Res>(Req request) where Req : GkvServerRequestDC where Res : GkvResponseDC

View File

@@ -74,6 +74,10 @@
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -39,10 +39,10 @@ namespace BS.Shared.AppSender
public static Res SendApp8Request<Req, Res>(Req request, string tenant) where Req : GkvServerRequestDC where Res : GkvResponseDC
{
string url = "https://app8.bewoplaner.de/service/GkvAbrechnungServer.aspx";
string url = "https://app8.bewoplaner.de/service_developer/GkvAbrechnungServer.aspx";
#if DEBUG
url = "http://localhost:3777/Host/GkvAbrechnungServer.aspx";
//url = "http://localhost:3777/Host/GkvAbrechnungServer.aspx";
#endif
Res app8_response;
@@ -69,7 +69,7 @@ namespace BS.Shared.AppSender
if (string.IsNullOrEmpty(server))
return null;
var url = string.Format(GKVCLIENT_URL, $"https://{server}/service");
var url = string.Format(GKVCLIENT_URL, $"https://{server}/service_developer");
#if DEBUG
if (server.IndexOf("localhost") > 0)

View File

@@ -1300,8 +1300,9 @@ namespace BS.Shared
GkvServerGetIKNumber,
GkvServerGetStatus,
GkvClientResult,
GkvClientSum
}
GkvClientSum,
GkvServerGetNumber,
}
public enum GkvTransferResultType
{
@@ -1309,7 +1310,6 @@ namespace BS.Shared
Success = 0, // Kein Fehler
FailSoft = 1, // Kann erneut senden
FailFatal = 2, // Kann nicht erneut senden
FailFollowUp = 3, // Muss neu berechnet werden
}
public enum GkvState
@@ -1317,7 +1317,6 @@ namespace BS.Shared
NoSend,
ErrorSoft,
ErrorFatal,
ErrorFolgefehler,
Paid,
WaitingForDakota,
WaitingForKrankenkasse,

View File

@@ -6,11 +6,12 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace BS.Shared.Core
{
public static class Validator
public static class GkvValidator
{
public static bool? IsValid(ValidationType val_type, string val_str)
{
@@ -73,7 +74,7 @@ namespace BS.Shared.Core
if (mandatordc == null)
throw new GkvException("Mandator ist null");
if (!Validator.IsIKNumberValid(mandatordc.IKLeistungserbringer))
if (!IsIKNumberValid(mandatordc.IKLeistungserbringer))
throw new GkvException($"Die IK Nummer des Leistungserbringers \"{mandatordc.IKLeistungserbringer}\" ist ungültig.");
}
public static void ValidateCustomer(CustomerDC customerDC)
@@ -110,16 +111,35 @@ namespace BS.Shared.Core
if (error != null)
throw new GkvException(error);
}
public static bool IsOrganisationInformationValid(IOrganisation orga)
public static string ValidateInvoiceBases(IEnumerable<IInvoiceBase> invoices)
{
foreach (var invoice in invoices)
{
if (ValidateInvoiceBase(invoice) is string error)
return error;
}
return null;
}
public static string ValidateInvoiceBase(IInvoiceBase invoice)
{
if (!IsInvoiceNumberValid(invoice.InvoiceNumber))
return $"Rechnungsnummer \"{invoice.InvoiceNumber}\" ist ungültig";
return null;
}
public static bool IsOrganisationInformationValid(IOrganisation orga)
{
return IsOrganisationInformationValid(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse, orga.BezDatenannahmestelle);
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
=> IsIKNumberValid(ik_datenannahmestelle, ik_kostentrager, ik_krankenkasse) && IsBezDatenannahmestelleValid(bez_datenannahmestelle);
public static bool IsIKNumberValid(params string[] iks)
=> iks?.All(IsIKNumberValid) ?? false;
public static bool IsBezDatenannahmestelleValid(string bez_datenannahmestelle)
public static bool IsBezDatenannahmestelleValid(string bez_datenannahmestelle)
{
return !string.IsNullOrWhiteSpace(bez_datenannahmestelle);
}
@@ -180,5 +200,11 @@ namespace BS.Shared.Core
return true;
}
public static bool IsInvoiceNumberValid(string invoiceNumber)
{
var pattern = @"^(?!.*[-/]{2})(?![-/])(?!.*[-/]$)[A-Za-z0-9]+(?:[/-][A-Za-z0-9]+)*$";
return Regex.IsMatch(invoiceNumber, pattern);
}
}
}

View File

@@ -7,6 +7,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace BS.Shared.Core
@@ -23,6 +24,8 @@ namespace BS.Shared.Core
error = "Unterschiedliche Rechnungspositionen";
else if (GetInvalidUnitDescription(invoiceBases) is IInvoiceItem invalid)
error = $"Ungültige Rechnungsposition: {invalid.ItemDescription}:{invalid.UnitDescription}";
else if (GkvValidator.ValidateInvoiceBases(invoiceBases) is string rtn_error)
error = rtn_error;
if(error is string)
throw new GkvException(error, "Validierung");
@@ -71,5 +74,7 @@ namespace BS.Shared.Core
return null;
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvServerGetNumberRequestDC : GkvServerRequestDC
{
public GkvServerGetNumberRequestDC()
: base(RequestType.GkvServerGetNumber) { }
public GkvServerGetNumberRequestDC(string tenant, string username, string password)
: base(RequestType.GkvServerGetNumber, tenant, username, password) { }
[DataMember] public string IKDatenannahmestelle { get; set; }
[DataMember] public bool NewDatenaustauschRef { get; set; }
[DataMember] public bool NewTransferNumber { 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
{
public class GkvServerGetNumberResponseDC : GkvResponseDC
{
public GkvServerGetNumberResponseDC() : base() { }
public GkvServerGetNumberResponseDC(bool success) : base(success) { }
public GkvServerGetNumberResponseDC(bool success, string message) : base(success, message) { }
[DataMember] public int Datenaustauschreferenz { get; set; }
[DataMember] public int Transfernummer { get; set; }
}
}

View File

@@ -24,9 +24,6 @@ namespace BS.Shared.Extensions
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailFatal)
return GkvState.ErrorFatal;
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailFollowUp)
return GkvState.ErrorFolgefehler;
if (gkvAbrechnung.LastTransferProtokoll.ResultType is null)
return GkvState.WaitingForDakota;

View File

@@ -9,6 +9,9 @@ namespace BS.Shared.Interface
public interface IInvoiceBase
{
long? Oid { get; }
string InvoiceNumber { get; }
string InvoiceTitle { get; }
string InvoiceId { get; }
string SenderStreet { get; }
string SenderTown { get; }
string SenderPostCode { get; }

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Models
namespace BS.Shared.Models
{
public class AddressInformation
{

View File

@@ -151,7 +151,7 @@
<Compile Include="Core\SecurityUtils.cs" />
<Compile Include="Core\TokenUtils.cs" />
<Compile Include="Core\Utilities\WebUtils.cs" />
<Compile Include="Core\Validator.cs" />
<Compile Include="Core\GkvValidator.cs" />
<Compile Include="Core\DebugUtils.cs" />
<Compile Include="Core\ImageUtils.cs" />
<Compile Include="Core\PersonFilterEnum.cs" />
@@ -187,6 +187,8 @@
<Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" />
<Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" />
<Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberRequestDC.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberResponseDC.cs" />
<Compile Include="DataContracts\Person2TeamDC.cs" />
<Compile Include="DataContracts\Feature\AI\AiConfigDC.cs" />
<Compile Include="DataContracts\Feature\AI\AiConversationDC.cs" />
@@ -416,6 +418,7 @@
<Compile Include="Interface\IOrganisation.cs" />
<Compile Include="Interface\IInvoiceItem.cs" />
<Compile Include="Interface\IStoredFile.cs" />
<Compile Include="Models\AddressInformation.cs" />
<Compile Include="Packet.cs" />
<Compile Include="ReportRequests\AbstractReportRequest.cs" />
<Compile Include="ReportRequests\GkvAbrechnungReportRequest.cs" />