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

# Conflicts:
#	Service/Invoicing/SettlementInvoiceCreation.cs
#	Shared/Shared.csproj
This commit is contained in:
Christian
2024-11-05 14:36:22 +01:00
176 changed files with 10103 additions and 7574 deletions

View File

@@ -962,7 +962,6 @@
<DependentUpon>BSLogoControl.xaml</DependentUpon>
</Compile>
<Compile Include="Converter\AnonymizationRight2VisibilityConverter.cs" />
<Compile Include="Converter\AppSettingsConverter.cs" />
<Compile Include="Converter\BooleanOrVisibilityMultiConverter.cs" />
<Compile Include="Converter\BooleanAndVisibilityMultiConverter.cs" />
<Compile Include="Converter\BoolNullCheckConverter.cs" />
@@ -994,7 +993,8 @@
<Compile Include="Converter\Rights2DefaultBooleanConverter.cs" />
<Compile Include="Converter\StringLengthVisibilityConverter.cs" />
<Compile Include="Converter\StringLengthVisibilityMultiConverter.cs" />
<Compile Include="Converter\UserRightType2BoolConverter.cs" />
<Compile Include="Converter\TooltipTextConverter.cs" />
<Compile Include="Converter\UserPermission2BoolConverter.cs" />
<Compile Include="Converter\ValueConverterGroup.cs" />
<Compile Include="Core\AutoLockUI.cs" />
<Compile Include="Core\BeWoUtils.cs" />
@@ -1180,6 +1180,7 @@
<Compile Include="ViewModel\AdditionalServiceGroupOfPeopleVM.cs" />
<Compile Include="ViewModel\AdditionalServiceRegionVM.cs" />
<Compile Include="ViewModel\AdditionalServiceVM.cs" />
<Compile Include="ViewModel\BaseVM.cs" />
<Compile Include="ViewModel\CustomerVermittlungArbeitVM.cs" />
<Compile Include="ViewModel\ListViewModel\AbstractListVM.cs" />
<Compile Include="ViewModel\ListViewModel\CustomerVermittlungArbeitListVM.cs" />
@@ -2800,7 +2801,7 @@
<Name>Controls</Name>
</ProjectReference>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>

View File

@@ -73,15 +73,6 @@
<conv:BoolEnabledToTabitemBackgroundConverter />
</conv:ValueConverterGroup>
<conv:BoolToParameterReturnConverter x:Key="IsNewToTooltip" />
<conv:UserRightType2BoolConverter x:Key="UserRightType2Enabled" />
<conv:ValueConverterGroup x:Key="UserRightType2NotEnabled">
<conv:UserRightType2BoolConverter />
<conv:BoolReverseConverter />
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="UserRightType2Visible">
<conv:UserRightType2BoolConverter />
<conv:BoolVisibilityConverter />
</conv:ValueConverterGroup>
<conv:IndividualGoalMassnahmeUncheckPreventConverter x:Key="IndividualGoalMassnahmeUncheckPreventConverter" />
<conv:Rights2DefaultBooleanConverter x:Key="Rights2DefaultBooleanConverter" />
<conv:CollectionCountToVisibilityConverter x:Key="CollectionCountToVisibilityConverter" />
@@ -90,9 +81,15 @@
<conv:GkvState2StringConverter x:Key="GkvState2StringConverter" />
<conv:RadioBoolToIntConverter x:Key="RadioBoolToIntConverter" />
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
<conv:AppSettingsConverter x:Key="AppSettingsConverter" />
<conv:ValueConverterGroup x:Key="AppSettings2Visible">
<conv:AppSettingsConverter />
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:UserPermission2BoolConverter x:Key="UserPermission2BoolConverter" />
<conv:ValueConverterGroup x:Key="UserPermission2ReverseBoolConverter">
<conv:UserPermission2BoolConverter />
<conv:BoolReverseConverter />
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="UserPermission2VisibleConverter">
<conv:UserPermission2BoolConverter />
<conv:BoolVisibilityCollapsedConverter />
</conv:ValueConverterGroup>

View File

@@ -605,6 +605,8 @@ namespace BeWo
AppSettings.ShowWorktime = true;
AppSettings.ShowPersehImport = true;
AppSettings.ShowWohnhilfe = true;
//AppSettings.AllowGkvAbrechnung = true;
//AppSettings.AllowGkvAbrechnung = false;
//showInfoButtonInCalender = true;
#endif
@@ -654,7 +656,7 @@ namespace BeWo
{
String url = "";
#if DEBUG
url = String.Format("http://localhost:3777/Host");
//url = String.Format("http://localhost:3777/Host");
//return new Uri("https://app5.bewoplaner.de/service");
//url = String.Format("app1.bewoplaner.de/service");
#endif

View File

@@ -18,18 +18,19 @@ namespace BeWo.Converter
if (state is null)
return null;
switch (state.Value)
{
case GkvState.NoSend: return "Erstellt";
case GkvState.Waiting: return "Gesendet";
case GkvState.Waiting4Urbelege: return "Urbelege per Post";
case GkvState.Error: return "Fehler";
case GkvState.ErrorFatal: return "Fataler Fehler";
case GkvState.Paid: return "Bezahlt";
case GkvState.OldAndNoFeedback: return "Keine Antwort";
}
switch (state.Value)
{
case GkvState.NoSend: return "Erstellt";
case GkvState.ErrorSoft: return "Fehler";
case GkvState.ErrorFatal: return "Fataler Fehler";
case GkvState.Paid: return "Bezahlt";
case GkvState.WaitingForDakota: return "Warte auf Übertragung";
case GkvState.WaitingForKrankenkasse: return "Warte auf Gkv";
case GkvState.WaitingForKrankenkasseTooLong: return "Keine Antwort von Gkv";
case GkvState.WaitingForUrbelege: return "Sende Urbelege";
}
return state.ToString();
return state.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

View File

@@ -1,4 +1,5 @@
using System;
using BeWo.ViewModel;
using System;
using System.Globalization;
using System.Windows.Data;
@@ -8,7 +9,10 @@ namespace BeWo.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
if (value is null)
return null;
return "Test";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

View File

@@ -0,0 +1,40 @@
using BeWo.ViewModel;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BeWo.Converter
{
public class TooltipTextConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is GkvAbrechnungVM gkv)
{
if (parameter is string s)
{
if (s == "Send")
{
return gkv.SendTooltip;
}
}
}
if (value is InvoiceBaseVM invoice)
{
return invoice.IsGkvValidError;
}
return "xxx";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -1,4 +1,4 @@
using BeWo.Core.Config;
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
@@ -10,17 +10,22 @@ using System.Windows.Data;
namespace BeWo.Converter
{
public class AppSettingsConverter : IValueConverter
public class UserPermission2BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter == null)
return false;
if(parameter is string setting)
if (value is UserRightType type)
{
return BeWoApp.HasLoggedOnUserRight(type);
}
if (parameter is UserRightType type2)
{
return BeWoApp.HasLoggedOnUserRight(type2);
}
if (parameter is string setting && !string.IsNullOrWhiteSpace(setting))
{
// Kann gerne erweitert werden
// Achtung! Verwende bei Parameter SettingsKeys
if (setting == SettingsKeys.AllowGkvAbrechnung)
return BeWoApp.AppSettings.AllowGkvAbrechnung;
}

View File

@@ -1,34 +0,0 @@
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BeWo.Converter
{
public class UserRightType2BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is UserRightType type)
{
return BeWoApp.HasLoggedOnUserRight(type);
}
if (parameter is UserRightType type2)
{
return BeWoApp.HasLoggedOnUserRight(type2);
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -32,9 +32,12 @@ namespace BeWo
}
}
public DebugConfigMode DebugConfigMode { get; set; }
public static string Username { get; set; } = "m1";
public static string Password { get; set; } = "bewobewo";
public static string Profilename { get; set; } = "5000000000";
public bool AutoLogin { get; set; }
public UIContext? SelectView { get; set; }
/// <summary>

View File

@@ -31,6 +31,7 @@ using BeWo.View;
using BeWo.View.Detail;
using BS.Shared.Translation;
using Path = System.IO.Path;
using System.Linq;
namespace BeWo
{
@@ -198,6 +199,11 @@ namespace BeWo
{
#if DEBUG
//selectedProfile = ReadSelectedProfile();
if (DebugConfig.CurrentConfig is DebugConfig current && !string.IsNullOrWhiteSpace(DebugConfig.Profilename))
{
selectedProfile = ProfileList.FirstOrDefault(x => x.Name == DebugConfig.Profilename);
}
#else
selectedProfile = ReadSelectedProfile();
#endif
@@ -712,9 +718,18 @@ namespace BeWo
}
#if DEBUG
if (DebugConfig.CurrentConfig is object && DebugConfig.CurrentConfig.AutoLogin)
if (DebugConfig.CurrentConfig is DebugConfig current)
{
button_login_Click(this, new RoutedEventArgs());
if (!string.IsNullOrWhiteSpace(DebugConfig.Username))
TextBox_Username.Text = DebugConfig.Username;
if (!string.IsNullOrWhiteSpace(DebugConfig.Password))
PasswordBox_Password.Password = DebugConfig.Password;
if (current.AutoLogin)
button_login_Click(this, new RoutedEventArgs());
}
#endif
}
@@ -957,7 +972,7 @@ namespace BeWo
{
return s.IsUserValid(tempUsername, lPassword, lPin);
}
catch (Exception)
catch (Exception e)
{
return UserValidationResult.UnkownError;
}

View File

@@ -491,7 +491,7 @@ namespace BeWo
Grid.SetRowSpan(_WaitLayer, 3);
grid_main.Children.Add(_WaitLayer);
Panel.SetZIndex(_WaitLayer, int.MaxValue);
_WaitLayer.RefreshUI();
//_WaitLayer.RefreshUI();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1385,6 +1385,10 @@ namespace BeWo.ServiceProxy
public interface ICustomerService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungen", ReplyAction="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC> GetAllActiveWohnheimbuchungen();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetWohnheimbuchung", ReplyAction="http://tempuri.org/ICustomerService/GetWohnheimbuchungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetWohnheimbuchungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.WohnheimbuchungDC GetWohnheimbuchung(long oid);
@@ -1789,6 +1793,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnhilfe.Staatsangehorigkeit))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<object>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<long, System.Collections.Generic.List<long>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.WohnheimbuchungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Wohnheimbuchung2Costbearer2SupportConceptRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnheimbuchung2Costbearer2SupportConceptRelationDC))]
@@ -1855,7 +1860,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.MedArtDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DarreichungsformDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DepotRhythmusDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceReasonDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.WohnheimDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimCustomerRelationDC>))]
@@ -2094,17 +2098,21 @@ 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(BS.Shared.DataContracts.AppResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferFehlerlevel))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<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.GkvAbrechnungCreateRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.DateTime>))]
@@ -2170,6 +2178,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/ImportSupportConceptBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.ImportSupportConceptResultDC ImportSupportConcept(BS.Shared.DataContracts.HilfeplanImportDC hidc);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/UpdateCustomer", ReplyAction="http://tempuri.org/ICustomerService/UpdateCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
long UpdateCustomer(BS.Shared.DataContracts.CustomerDC pCustomerDC);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/UpdateCustomersAbsenceTimes", ReplyAction="http://tempuri.org/ICustomerService/UpdateCustomersAbsenceTimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateCustomersAbsenceTimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void UpdateCustomersAbsenceTimes(long pCustomerOid, System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC> pAbsenceTimes);
@@ -2438,10 +2450,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllActiveWohnheimeCompactBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactWohnheimDC> GetAllActiveWohnheimeCompact();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungen", ReplyAction="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllActiveWohnheimbuchungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC> GetAllActiveWohnheimbuchungen();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/ArchiveCustomer", ReplyAction="http://tempuri.org/ICustomerService/ArchiveCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/ArchiveCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void ArchiveCustomer(long pOid, long pVersion);
@@ -2596,6 +2604,11 @@ namespace BeWo.ServiceProxy
"WoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactOrganisationDC> GetAllActiveAndArchivedOrganisationsCompact();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllGkvValidOrganisationsCompact", ReplyAction="http://tempuri.org/ICustomerService/GetAllGkvValidOrganisationsCompactResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllGkvValidOrganisationsCompactBeWoFaultFa" +
"ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactOrganisationDC> GetAllGkvValidOrganisationsCompact();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/ArchiveWohnheim", ReplyAction="http://tempuri.org/ICustomerService/ArchiveWohnheimResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/ArchiveWohnheimBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void ArchiveWohnheim(long pOid, long pVersion);
@@ -2713,10 +2726,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/AllowSavingCustomer", ReplyAction="http://tempuri.org/ICustomerService/AllowSavingCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/AllowSavingCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
string AllowSavingCustomer(BS.Shared.DataContracts.CustomerDC pCustomerDC);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/UpdateCustomer", ReplyAction="http://tempuri.org/ICustomerService/UpdateCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
long UpdateCustomer(BS.Shared.DataContracts.CustomerDC pCustomerDC);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -2753,6 +2762,11 @@ namespace BeWo.ServiceProxy
{
}
public System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC> GetAllActiveWohnheimbuchungen()
{
return base.Channel.GetAllActiveWohnheimbuchungen();
}
public BS.Shared.DataContracts.WohnheimbuchungDC GetWohnheimbuchung(long oid)
{
return base.Channel.GetWohnheimbuchung(oid);
@@ -3048,6 +3062,11 @@ namespace BeWo.ServiceProxy
return base.Channel.ImportSupportConcept(hidc);
}
public long UpdateCustomer(BS.Shared.DataContracts.CustomerDC pCustomerDC)
{
return base.Channel.UpdateCustomer(pCustomerDC);
}
public void UpdateCustomersAbsenceTimes(long pCustomerOid, System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC> pAbsenceTimes)
{
base.Channel.UpdateCustomersAbsenceTimes(pCustomerOid, pAbsenceTimes);
@@ -3363,11 +3382,6 @@ namespace BeWo.ServiceProxy
return base.Channel.GetAllActiveWohnheimeCompact();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC> GetAllActiveWohnheimbuchungen()
{
return base.Channel.GetAllActiveWohnheimbuchungen();
}
public void ArchiveCustomer(long pOid, long pVersion)
{
base.Channel.ArchiveCustomer(pOid, pVersion);
@@ -3543,6 +3557,11 @@ namespace BeWo.ServiceProxy
return base.Channel.GetAllActiveAndArchivedOrganisationsCompact();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactOrganisationDC> GetAllGkvValidOrganisationsCompact()
{
return base.Channel.GetAllGkvValidOrganisationsCompact();
}
public void ArchiveWohnheim(long pOid, long pVersion)
{
base.Channel.ArchiveWohnheim(pOid, pVersion);
@@ -3682,11 +3701,6 @@ namespace BeWo.ServiceProxy
{
return base.Channel.AllowSavingCustomer(pCustomerDC);
}
public long UpdateCustomer(BS.Shared.DataContracts.CustomerDC pCustomerDC)
{
return base.Channel.UpdateCustomer(pCustomerDC);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -6022,6 +6036,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnhilfe.Staatsangehorigkeit))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<object>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<long, System.Collections.Generic.List<long>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.WohnheimbuchungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Wohnheimbuchung2Costbearer2SupportConceptRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnheimbuchung2Costbearer2SupportConceptRelationDC))]
@@ -6088,7 +6103,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.MedArtDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DarreichungsformDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DepotRhythmusDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimbuchungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceReasonDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.WohnheimDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.WohnheimCustomerRelationDC>))]
@@ -6327,17 +6341,21 @@ 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(BS.Shared.DataContracts.AppResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferFehlerlevel))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.GkvTransferResultType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvTransferProtokollDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<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.GkvAbrechnungCreateRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungSendResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.DateTime>))]
@@ -9589,6 +9607,12 @@ namespace BeWo.ServiceProxy
"ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceBaseDC> GetInvoiceBasesForCostBearerAndId(System.Nullable<System.DateTime> startDate, System.Nullable<System.DateTime> endDate, long costBearerOid, string invoiceId);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/GetInvoiceBasesForCostBearerAndIdAndIsUsed", ReplyAction="http://tempuri.org/IAccountingService/GetInvoiceBasesForCostBearerAndIdAndIsUsedR" +
"esponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/GetInvoiceBasesForCostBearerAndIdAndIsUsedB" +
"eWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceBaseDC> GetInvoiceBasesForCostBearerAndIdAndIsUsed(System.Nullable<System.DateTime> startDate, System.Nullable<System.DateTime> endDate, long costBearerOid, string invoiceId);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/GetGeneralInvoiceBasesForCustomer", ReplyAction="http://tempuri.org/IAccountingService/GetGeneralInvoiceBasesForCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/GetGeneralInvoiceBasesForCustomerBeWoFaultF" +
"ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -9707,7 +9731,7 @@ namespace BeWo.ServiceProxy
[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.GkvAbrechnung.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC request);
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateRequestDC 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")]
@@ -9720,6 +9744,10 @@ namespace BeWo.ServiceProxy
[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.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/SendGetIKRequest", ReplyAction="http://tempuri.org/IAccountingService/SendGetIKRequestResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/SendGetIKRequestBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC SendGetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC req);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -9796,6 +9824,11 @@ namespace BeWo.ServiceProxy
return base.Channel.GetInvoiceBasesForCostBearerAndId(startDate, endDate, costBearerOid, invoiceId);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceBaseDC> GetInvoiceBasesForCostBearerAndIdAndIsUsed(System.Nullable<System.DateTime> startDate, System.Nullable<System.DateTime> endDate, long costBearerOid, string invoiceId)
{
return base.Channel.GetInvoiceBasesForCostBearerAndIdAndIsUsed(startDate, endDate, costBearerOid, invoiceId);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.InvoiceBaseDC> GetGeneralInvoiceBasesForCustomer(long customerOid)
{
return base.Channel.GetGeneralInvoiceBasesForCustomer(customerOid);
@@ -9926,7 +9959,7 @@ namespace BeWo.ServiceProxy
return base.Channel.GetFilteredGkvAbrechnungen(gkvAbrechnungViewFilter);
}
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungRequestDC request)
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungCreateRequestDC request)
{
return base.Channel.CreateNewGkvAbrechnung(request);
}
@@ -9945,6 +9978,11 @@ namespace BeWo.ServiceProxy
{
return base.Channel.SendNewGkvAbrechnung(req);
}
public BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKResponseDC SendGetIKRequest(BS.Shared.DataContracts.GkvAbrechnung.GkvAbrechnungGetIKRequestDC req)
{
return base.Channel.SendGetIKRequest(req);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

View File

@@ -136,4 +136,18 @@
</DataTrigger>
</Style.Triggers>
</Style>
<Style
x:Key="HideDisabledButtonSmall"
BasedOn="{StaticResource HideDisabledButton}"
TargetType="{x:Type Button}">
<Setter Property="Height" Value="21" />
</Style>
<Style
x:Key="PrimaryButtonSmall"
BasedOn="{StaticResource PrimaryButton}"
TargetType="{x:Type Button}">
<Setter Property="Height" Value="21" />
</Style>
</ResourceDictionary>

View File

@@ -40,5 +40,4 @@
<Style BasedOn="{StaticResource BaseRadioButton}" TargetType="RadioButton" />
<Style BasedOn="{StaticResource TextBoxBase}" TargetType="TextBox" />
<Style BasedOn="{StaticResource BaseTextEdit}" TargetType="dxe:TextEdit" />
</ResourceDictionary>

View File

@@ -58,7 +58,7 @@
Grid.Row="0"
Grid.Column="2"
Margin="3"
IsReadOnly="True"
IsEnabled="False"
Text="{Binding GkvAbrechnungOid}" />
<Label
Grid.Row="5"
@@ -69,7 +69,7 @@
Grid.Row="5"
Grid.Column="2"
Margin="3"
IsReadOnly="True"
IsEnabled="False"
Text="{Binding AbrechnungsZeitraumStart}" />
<Label
Grid.Row="6"
@@ -80,7 +80,7 @@
Grid.Row="6"
Grid.Column="2"
Margin="3"
IsReadOnly="True"
IsEnabled="False"
Text="{Binding AbrechnungsZeitraumEnde}" />
<Label
Grid.Row="9"
@@ -91,7 +91,7 @@
Grid.Row="9"
Grid.Column="2"
Margin="3"
IsReadOnly="True"
IsEnabled="False"
Text="{Binding ErstelltAm}" />
<Label
Grid.Row="10"
@@ -103,6 +103,7 @@
Grid.Row="10"
Grid.Column="2"
Margin="3"
IsEnabled="False"
Orientation="Horizontal">
<RadioButton
Margin="3"
@@ -157,7 +158,7 @@
Grid.Row="15"
Grid.Column="2"
Margin="3"
IsReadOnly="True"
IsEnabled="False"
Text="{Binding Betrag, StringFormat={}{0:0.00 €}}" />
<!--<TextBox Grid.Row="15" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Bezahlt}"/>-->
<Label
@@ -290,7 +291,7 @@
AllowEditing="False"
FieldName="IsPaid"
Header="Bezahlt"
ReadOnly="True" />
IsEnabledBinding="{Binding Source=false}" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView
@@ -403,19 +404,19 @@
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="SentSuccess"
Header="Dakota Übertragen"
ReadOnly="True" />
FieldName="SentApp8Success"
Header="Sent App 8"
IsEnabledBinding="{Binding Source=false}" />
<dxg:GridColumn
AllowEditing="False"
FieldName="Fehlertitel"
Header="Fehlertitel"
ReadOnly="True" />
FieldName="SentDakotaSuccess"
Header="Sent Dakota"
IsEnabledBinding="{Binding Source=false}" />
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="Fehlerdatum"
Header="Fehlerdatum"
Header="Ergebnisdatum"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings
@@ -424,17 +425,22 @@
MaskType="DateTime" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="False"
FieldName="ResultType"
Header="Ergebnis"
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="Fehlertitel"
Header="Fehlertitel"
ReadOnly="True" />
<dxg:GridColumn
MinWidth="200"
AllowEditing="False"
FieldName="Fehlernachricht"
Header="Fehlernachricht"
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="Fehlerlevel"
Header="Fehlerlevel"
ReadOnly="True" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView

View File

@@ -2,30 +2,23 @@
x:Class="BeWo.View.Detail.Accounting.GkvAbrechnungOverview"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
xmlns:r="clr-namespace:BeWo.Security"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<Grid>
<Grid Loaded="BeWoView_Loaded">
<GroupBox
x:Name="groupbox_editArea"
Grid.Row="0"
Margin="0"
Padding="0"
Header="GKV-Abrechnungen"
Style="{DynamicResource ObjectEditGroupBox}">
@@ -65,9 +58,16 @@
x:Name="radioFilterByAccountingDate"
Click="radioFilterByInvoiceDate_Click"
Content="Nach Abrechnungszeitraum filtern"
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. Jahr beinhalten." />
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. das ausgewählte Jahr beinhalten." />
</StackPanel>
<Grid Grid.Column="2">
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
@@ -82,7 +82,7 @@
Click="NewButton_OnClick"
Content="Neue Abrechnung"
ToolTip="Neue GKV-Abrechnung erstellen"
Visibility="{Binding Converter={StaticResource UserRightType2Visible}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Create}}" />
Visibility="{Binding Path=Itself, Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Create}}" />
<Button
x:Name="button_reload"
Grid.Column="1"
@@ -103,7 +103,14 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
DataSource="{Binding VMList}"
Visibility="Collapsed">
Visibility="Visible">
<dxg:GridControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</dxg:GridControl.Resources>
<dxg:GridControl.Effect>
<DropShadowEffect Color="#FFC7D9E2" />
</dxg:GridControl.Effect>
@@ -123,7 +130,9 @@
Header=" ">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<ControlTemplate.Resources />
<StackPanel Margin="1" Orientation="Horizontal">
<StackPanel.Resources />
<Button
x:Name="btn_details"
Width="20"
@@ -147,12 +156,14 @@
Padding="0"
VerticalAlignment="Center"
Click="btn_send_Click"
Visibility="{Binding Converter={StaticResource UserRightType2Visible}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Send}}"
Content="*"
FontFamily="Wingdings"
FontSize="11"
Foreground="#ffffff"
ToolTip="Senden" />
IsEnabled="{Binding Row.IsReady2Send}"
ToolTip="{Binding Row, Converter={StaticResource TooltipTextConverter}, ConverterParameter=Send}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Send}}" />
<Button
x:Name="btn_delete"
Width="20"
@@ -161,12 +172,12 @@
Padding="0"
VerticalAlignment="Center"
Click="btn_delete_Click"
Visibility="{Binding Converter={StaticResource UserRightType2Visible}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Delete}}"
Content="r"
FontFamily="Webdings"
FontSize="11"
Foreground="#FF0000"
ToolTip="Löschen" />
ToolTip="Löschen"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Delete}}" />
</StackPanel>
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>

View File

@@ -43,6 +43,7 @@ namespace BeWo.View.Detail.Accounting
DownloadLinkEngine = new DownloadLinkEngine();
_Viewmodel = new GkvAbrechnungListVM();
_Viewmodel.VMList.ListChanged += (s, e) => gridView.BestFitColumns();
DataContext = _Viewmodel;
@@ -53,10 +54,6 @@ namespace BeWo.View.Detail.Accounting
_NewGkvAbrechnungPopUpView.CreateButtonClicked += NewGkvAbrechnungPopUpViewCreateButtonClicked;
_Viewmodel.DateTimeSpanFilter = yearMonthFilter.FilterSpan;
CheckRights();
RefreshGkvAbrechnungenList();
}
public DownloadLinkEngine DownloadLinkEngine { get; set; }
@@ -64,20 +61,32 @@ namespace BeWo.View.Detail.Accounting
private bool ShowAllInvoices => _Viewmodel.DateTimeSpanFilter is null;
private void CheckRights()
{
}
private void RefreshGkvAbrechnungenList()
{
var test = datagrid_gkvAbrechnungen;
ServiceFacade.DoAccountingServiceAsync(s => s.GetFilteredGkvAbrechnungen(null), UpdateGkvAbrechnungList);
}
private void UpdateGkvAbrechnungList(IList<GkvAbrechnungDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
_Viewmodel.UpdateList(dcList);
if (datagrid_gkvAbrechnungen.Visibility != Visibility.Visible)
datagrid_gkvAbrechnungen.Visibility = Visibility.Visible;
UpdateDataGridFilter();
});
}
private void UpdateDataGridFilter()
{
datagrid_gkvAbrechnungen.FixedFilter = null;
if (ShowAllInvoices)
{
datagrid_gkvAbrechnungen.FixedFilter = null;
@@ -103,25 +112,6 @@ namespace BeWo.View.Detail.Accounting
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.AbrechnungsZeitraumStart <= filter_start && filter_ende <= gkv.AbrechnungsZeitraumEnde));
}
}
gridView.BestFitColumns();
}
private void UpdateGkvAbrechnungList(IList<GkvAbrechnungDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
_Viewmodel.UpdateList(dcList);
if (datagrid_gkvAbrechnungen.Visibility != Visibility.Visible)
datagrid_gkvAbrechnungen.Visibility = Visibility.Visible;
UpdateDataGridFilter();
});
}
private void NewGkvAbrechnungPopUpViewCancelButtonClicked(object sender, EventArgs e)
@@ -130,27 +120,32 @@ namespace BeWo.View.Detail.Accounting
}
private void NewGkvAbrechnungPopUpViewCreateButtonClicked(object sender, EventArgs<GkvAbrechnungDC> e)
{
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked).Select(x => x.DataContract.InvoiceBaseOid.Value).ToList();
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked);
if (checked_invoice_bases.Count == 0)
{
#if DEBUG
if (MessageBox.Show("Sie haben keine Rechnung hinzugefügt. Wollen Sie fortfahren?", "GKV-Abrechnung erstellen", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
return;
#else
MessageBox.Show("Sie haben keine Rechnung hinzugefügt.", "GKV-Abrechnung erstellen", MessageBoxButton.OK, MessageBoxImage.Warning);
// MessageBox.Show("Sie haben keine Rechnung hinzugefügt.", "GKV-Abrechnung erstellen", MessageBoxButton.OK, MessageBoxImage.Warning);
if (!checked_invoice_bases.Any())
return;
#endif
}
var already_used_invoices = checked_invoice_bases.Where(x => x.IsAlreadyInActiveGkvAbrechnung.Value);
if (already_used_invoices.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
MainControl.CloseCurrentPopUp();
var gkv_abrechnung = e.Data;
var gkv_filter = new GkvAbrechnungRequestDC(gkv_abrechnung);
var gkv_filter = new GkvAbrechnungCreateRequestDC
{
GkvAbrechnungDC = gkv_abrechnung,
SelectedInvoiceBases = checked_invoice_bases.Select(x => x.DataContract.InvoiceBaseOid.Value).ToList()
};
gkv_filter.SelectedInvoiceBases = checked_invoice_bases;
ServiceFacade.DoAccountingServiceAsync(x => x.CreateNewGkvAbrechnung(gkv_filter),
ServiceFacade.DoAccountingServiceAsync(x => x.CreateNewGkvAbrechnung(gkv_filter),
cb => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(Action)delegate
{
@@ -160,7 +155,7 @@ namespace BeWo.View.Detail.Accounting
}
else
{
BeWoWindowBuilder.ShowErrorMessageBox(cb.Error);
BeWoWindowBuilder.ShowErrorMessageBox(cb.Message);
}
}));
}
@@ -196,8 +191,14 @@ namespace BeWo.View.Detail.Accounting
if (vm.IsDirty)
{
var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(vm.CommitToDataContract()));
vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
var dc_in = vm.CommitToDataContract();
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
}
@@ -205,39 +206,11 @@ namespace BeWo.View.Detail.Accounting
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
var dc = vm.CommitToDataContract();
var state = dc.GetState();
var can_send = false;
can_send |= state == GkvState.NoSend;
can_send |= state == GkvState.Error;
#if DEBUG
can_send |= state == GkvState.ErrorFatal;
#endif
if (!can_send)
{
string error;
if (state == GkvState.Waiting)
error = "Es wurde bereits übertragen ohne direkte Fehler.";
else if (state == GkvState.ErrorFatal)
error = "GKV-Abrechnung enthält schwere Fehler. Erstellen Sie die Rechnung erneut.";
else if (state == GkvState.Paid)
error = "GKV-Abrechnung ist bereits als bezahlt markiert.";
else if (state == GkvState.OldAndNoFeedback)
error = "GKV-Abrechnung ist älter als 28 Tage und als nicht bezahlt markiert. Wenden Sie sich bitte an Ihre Krankenkasse";
else
error = "def";
MessageBox.Show(error, "Übertragung nicht möglich");
return;
}
var state = vm.GetState();
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
if (state == GkvState.Error)
if (state == GkvState.ErrorSoft)
text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich an die Krankenkasse übertragen. Möchten Sie sie erneut senden?";
if (MessageBox.Show(text, "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
@@ -318,12 +291,12 @@ namespace BeWo.View.Detail.Accounting
if (gkvAbrechnungVM is null)
return;
if (GkvAbrechnungVM.GetState(gkvAbrechnungVM) == GkvState.OldAndNoFeedback)
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong)
{
e.Result = Brushes.Orange;
e.Handled = true;
}
else if (GkvAbrechnungVM.GetState(gkvAbrechnungVM) == GkvState.Waiting4Urbelege)
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege)
{
e.Result = Brushes.Green;
e.Handled = true;
@@ -342,11 +315,10 @@ namespace BeWo.View.Detail.Accounting
dc_in.Bezahlt = b;
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), cb =>
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.GkvAbrechnungVersion = cb.GkvAbrechnungVersion;
vm.Bezahlt = cb.Bezahlt;
vm.UpdateByDataContract(dc_out);
});
}, false);
}
@@ -357,26 +329,24 @@ namespace BeWo.View.Detail.Accounting
dc_in.UrbelegeGesendet = b;
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), cb =>
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.GkvAbrechnungVersion = cb.GkvAbrechnungVersion;
vm.UrbelegeGesendet = cb.UrbelegeGesendet;
vm.UpdateByDataContract(dc_out);
});
}, false);
//var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(dc_in));
//vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
//vm.UrbelegeGesendet = dc.UrbelegeGesendet;
}
private void SaveNoticeChange(GkvAbrechnungVM vm, string notice)
{
var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(vm.CommitToDataContract()));
var dc_in = vm.CommitToDataContract();
vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
vm.Notice = dc.Notice;
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
private void gridView_CellValueChanged_1(object sender, CellValueChangedEventArgs e)
@@ -389,5 +359,12 @@ namespace BeWo.View.Detail.Accounting
}
}
}
private void BeWoView_Loaded(object sender, RoutedEventArgs e)
{
_Viewmodel.FirePropertyChangedItself();
RefreshGkvAbrechnungenList();
}
}
}

View File

@@ -1,26 +1,48 @@
<localView:BeWoView x:Class="BeWo.View.Detail.Accounting.NewGkvAbrechnungPopUpView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel" xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:val="clr-namespace:BeWo.Validation" xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" Height="Auto" Width="Auto"
HorizontalAlignment="Stretch" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:r="clr-namespace:BeWo.Security"
VerticalAlignment="Stretch" Focusable="True"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic" xmlns:localSearchView="clr-namespace:BeWo.View.Search">
<localView:BeWoView
x:Class="BeWo.View.Detail.Accounting.NewGkvAbrechnungPopUpView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localSearchView="clr-namespace:BeWo.View.Search"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:r="clr-namespace:BeWo.Security"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<GroupBox Width="1100" Style="{StaticResource PopUpWindowStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,0,0,0">
<Image Source="..\..\..\Ressources\Icons\CoinsDisabled.png" Height="28" />
<TextBox Margin="10,4,0,0" Background="{x:Null}" Foreground="{DynamicResource MainGroupBoxForegroundBrush}"
FontSize="20" BorderBrush="{x:Null}" VerticalAlignment="Stretch" BorderThickness="0,0,0,0"
Padding="0,0,0,0" />
<StackPanel
Margin="0,0,0,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<Image Height="28" Source="..\..\..\Ressources\Icons\CoinsDisabled.png" />
<TextBox
Margin="10,4,0,0"
Padding="0,0,0,0"
VerticalAlignment="Stretch"
Background="{x:Null}"
BorderBrush="{x:Null}"
BorderThickness="0,0,0,0"
FontSize="20"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}" />
</StackPanel>
</GroupBox.Header>
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
<GroupBox Margin="10" Header="GKV-Abrechnung erstellen" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
Margin="10"
Header="GKV-Abrechnung erstellen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -52,68 +74,231 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Content="Rechnungszeitraum von" Grid.Row="0" Grid.Column="0" />
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" BorderThickness="1" Height="23" Margin="3" Grid.Row="0" Grid.Column="1" EditValue="{val:ValidationBinding Path=AbrechnungsZeitraumStart}" EditValueChanged="DateEdit_EditValueChanged"/>
<Label Content="Rechnungszeitraum bis" Grid.Row="1" Grid.Column="0" />
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" BorderThickness="1" Height="23" Margin="3" Grid.Row="1" Grid.Column="1" EditValue="{val:ValidationBinding Path=AbrechnungsZeitraumEnde}" EditValueChanged="DateEdit2_EditValueChanged"/>
<Label
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center"
Content="Rechnungszeitraum von" />
<dxe:DateEdit
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="0,3,3,3"
BorderThickness="1"
EditValue="{val:ValidationBinding Path=AbrechnungsZeitraumStart}"
EditValueChanged="DateEdit_EditValueChanged"
MaskType="DateTimeAdvancingCaret" />
<Label
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
Content="Rechnungszeitraum bis" />
<dxe:DateEdit
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="0,3,3,3"
BorderThickness="1"
EditValue="{val:ValidationBinding Path=AbrechnungsZeitraumEnde}"
EditValueChanged="DateEdit2_EditValueChanged"
MaskType="DateTimeAdvancingCaret" />
<!--<Label Content="Annahmestelle" Grid.Row="0" Grid.Column="2" />
<uc:PopUpEdit IsReadOnly="True"
x:Name="popupedit_DatenannahmestelleSearch"
Grid.Column="3" Margin="3" Height="23" Grid.Row="0"
DeleteButtonVisibility="Collapsed"
PopUpClick="popupedit_DatenannahmestelleSearch_PopUpClick" />-->
<Label Content="Organisation" Grid.Row="0" Grid.Column="2" />
<uc:PopUpEdit IsReadOnly="True"
x:Name="popupedit_GkvSearch"
Grid.Column="3" Margin="3" Height="23" Grid.Row="0"
DeleteButtonVisibility="Collapsed"
PopUpClick="popupedit_GkvSearch_PopUpClick" />
<Label Content="Bemerkung" Grid.Row="0" Grid.Column="4" />
<TextBox Grid.Row="0" Grid.Column="5" Grid.RowSpan="2" Margin="3" AcceptsReturn="True" TextWrapping="Wrap" Height="50" Text="{Binding Notice}" />
<Label
Grid.Row="0"
Grid.Column="2"
Margin="3,0,0,0"
VerticalAlignment="Center"
ToolTip="Gesetzliche Krankenversicherung">
GKV:
</Label>
<uc:PopUpEdit
x:Name="popupedit_GkvSearch"
Grid.Row="0"
Grid.Column="3"
Height="23"
Margin="0,3,3,3"
DeleteButtonVisibility="Collapsed"
IsReadOnly="True"
PopUpClick="popupedit_GkvSearch_PopUpClick" />
<Label
Grid.Row="0"
Grid.Column="4"
Margin="3,0,0,0"
VerticalAlignment="Center"
Content="Bemerkung:" />
<TextBox
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="5"
Height="50"
Margin="0,3,3,3"
AcceptsReturn="True"
Text="{Binding Notice}"
TextWrapping="Wrap" />
</Grid>
<dxg:GridControl x:Name="grid_newInvoices" DataSource="{Binding InvoiceBases}" Margin="3" Grid.Row="1" Grid.ColumnSpan="2" MinHeight="200">
<dxg:GridControl
x:Name="grid_newInvoices"
Grid.Row="1"
Grid.ColumnSpan="2"
MinHeight="200"
Margin="3"
DataSource="{Binding InvoiceBases}">
<dxg:GridControl.Columns>
<dxg:GridColumn x:Name="ColumnChecked" FieldName="IsChecked" Header=" " MinWidth="30"></dxg:GridColumn>
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TypeString" Header="Art der Rechnung" Width="150" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceNumber" Header="Nummer" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceDate" Header="Datum" EditSettings="{dxe:DateSettings DisplayFormat=d}" MinWidth="70" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="CustomerName" Header="{markup:Translate Klient/in}" Width="100" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AccountingPeriodString" SortFieldName="AccountingPeriodStart" Header="Zeitraum" Width="100" />
<dxg:GridColumn
x:Name="ColumnChecked"
MinWidth="30"
CellToolTipBinding="{Binding Converter={StaticResource TooltipTextConverter}}"
FieldName="IsChecked"
Header=" "
IsEnabledBinding="{Binding IsGkvValid}">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}">
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn
Width="150"
AllowEditing="False"
FieldName="TypeString"
Header="Art der Rechnung"
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="InvoiceNumber"
Header="Nummer"
ReadOnly="True" />
<dxg:GridColumn
MinWidth="70"
AllowEditing="False"
EditSettings="{dxe:DateSettings DisplayFormat=d}"
FieldName="InvoiceDate"
Header="Datum"
ReadOnly="True" />
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="CustomerName"
Header="{markup:Translate Klient/in}"
ReadOnly="True" />
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="AccountingPeriodString"
Header="Zeitraum"
ReadOnly="True"
SortFieldName="AccountingPeriodStart" />
<!--<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Header="{markup:Translate EmpfängerSingular}" />-->
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TotalAmount" Header="Betrag" MinWidth="70">
<dxg:GridColumn
MinWidth="70"
AllowEditing="False"
FieldName="TotalAmount"
Header="Betrag"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric"></dxe:TextEditSettings>
<dxe:TextEditSettings
DisplayFormat="c"
Mask="c"
MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Notice" Header="Bemerkung" MinWidth="200" >
<dxg:GridColumn
MinWidth="200"
AllowEditing="False"
FieldName="Notice"
Header="Bemerkung"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings TextWrapping="Wrap" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn x:Name="PaidColumn" FieldName="IsPaid" Header="Bezahlt" ReadOnly="True"></dxg:GridColumn>
<dxg:GridColumn
x:Name="PaidColumn"
FieldName="IsPaid"
Header="Bezahlt"
IsEnabledBinding="{Binding Source=false}" />
<dxg:GridColumn
x:Name="AlreadyInActiveGkvAbrechnungColumn"
FieldName="IsAlreadyInActiveGkvAbrechnung"
Header="Bereits enthalten"
IsEnabledBinding="{Binding Source=false}" />
</dxg:GridControl.Columns>
<dxg:GridControl.View >
<dxg:TableView x:Name="gridView" ShowGroupPanel="False" CellValueChanging="TableView_CellValueChanging"/>
<dxg:GridControl.View>
<dxg:TableView
x:Name="gridView"
CellValueChanging="TableView_CellValueChanging"
EnableImmediatePosting="True"
ShowGroupPanel="False" />
</dxg:GridControl.View>
</dxg:GridControl>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="2">
<Button Margin="10 3 0 0"
Name="button_checkAllLeistungen" Click="button_checkAll_Click"
HorizontalAlignment="Left">Alle auswählen</Button>
<Button Margin="10 3 0 0"
Name="button_uncheckAllLeistungen" Click="button_uncheckAll_Click"
HorizontalAlignment="Left">Alle abwählen</Button>
<StackPanel
Grid.Row="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Button
Name="button_checkAllLeistungen"
Margin="10,3,0,0"
HorizontalAlignment="Left"
Click="button_checkAll_Click">
Alle auswählen
</Button>
<Button
Name="button_uncheckAllLeistungen"
Margin="10,3,0,0"
HorizontalAlignment="Left"
Click="button_uncheckAll_Click">
Alle abwählen
</Button>
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="2">
<Button Content="Erstellen" x:Name="btn_create" Click="btn_create_Click" Padding="5 0" Margin="3" />
<Button Content="Abbrechen" x:Name="btn_cancel" Click="btn_cancel_Click" Margin="3" Padding="5 0" />
<StackPanel
Grid.Row="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Right"
Orientation="Horizontal">
<StackPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</StackPanel.Resources>
<Button
x:Name="btn_create"
Margin="3"
Padding="5,0"
Click="btn_create_Click"
Content="Erstellen"
IsEnabled="{Binding IsReady2Create}"
Style="{StaticResource PrimaryButton}" />
<Button
x:Name="btn_cancel"
Margin="3"
Padding="5,0"
Click="btn_cancel_Click"
Content="Abbrechen"
Style="{StaticResource PrimaryButton}" />
</StackPanel>
</Grid>
</GroupBox>
<Popup Margin="10" x:Name="popup_organisation" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
<localSearchView:OrganisationSearchView SearchMode="All" x:Name="gkvsearchview" />
<Popup
x:Name="popup_organisation"
Width="370"
Height="250"
Margin="10"
Closed="popup_Closed"
Opened="popup_Opened"
Placement="MousePoint"
StaysOpen="False">
<localSearchView:OrganisationSearchView x:Name="gkvsearchview" SearchMode="OnlyValid" />
</Popup>
</Grid>
</GroupBox>

View File

@@ -16,268 +16,272 @@ using DevExpress.Xpf.Grid;
namespace BeWo.View.Detail.Accounting
{
public partial class NewGkvAbrechnungPopUpView : BeWoView
{
private long? _LoadedInvoiceBaseOid;
public partial class NewGkvAbrechnungPopUpView : BeWoView
{
private long? _LoadedInvoiceBaseOid;
private List<InvoiceBaseDC> _InvoiceBaseDCs;
private List<InvoiceBaseDC> _InvoiceBaseDCs;
private List<string> _InvoiceNumbers;
private List<string> _InvoiceNumbers;
private GkvAbrechnungVM _Viewmodel;
private GkvAbrechnungVM _Viewmodel;
public event EventHandler<EventArgs<GkvAbrechnungDC>> CreateButtonClicked;
public event EventHandler<EventArgs<GkvAbrechnungDC>> CreateButtonClicked;
public event EventHandler CancelButtonClicked;
public event EventHandler CancelButtonClicked;
public NewGkvAbrechnungPopUpView()
{
this.InitializeComponent();
public NewGkvAbrechnungPopUpView()
{
this.InitializeComponent();
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Close,
(s, e) =>
{
this._InvoiceBaseDCs?.Clear();
if (CancelButtonClicked != null)
CancelButtonClicked.Invoke(s, e);
}));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Close,
(s, e) =>
{
this._InvoiceBaseDCs?.Clear();
if (CancelButtonClicked != null)
CancelButtonClicked.Invoke(s, e);
}));
this.grid_newInvoices.View.Loaded += (s, e) => ((TableView)this.grid_newInvoices.View).BestFitColumns();
}
this.grid_newInvoices.View.Loaded += (s, e) => ((TableView)this.grid_newInvoices.View).BestFitColumns();
}
public GkvAbrechnungVM ViewModel
{
get
{
return this._Viewmodel;
}
public GkvAbrechnungVM ViewModel
{
get
{
return this._Viewmodel;
}
set
{
this.DataContext = value;
this._Viewmodel = value;
}
}
set
{
this.DataContext = value;
this._Viewmodel = value;
}
}
public DateTime FilterStart
{
get => ViewModel.AbrechnungsZeitraumStart.Value;
set => ViewModel.AbrechnungsZeitraumStart = value;
}
public DateTime FilterEnde
{
get => ViewModel.AbrechnungsZeitraumEnde.Value;
set => ViewModel.AbrechnungsZeitraumEnde = value;
}
public DateTime FilterStart
{
get => ViewModel.AbrechnungsZeitraumStart.Value;
set => ViewModel.AbrechnungsZeitraumStart = value;
}
public DateTime FilterEnde
{
get => ViewModel.AbrechnungsZeitraumEnde.Value;
set => ViewModel.AbrechnungsZeitraumEnde = value;
}
public List<InvoiceBaseDC> InvoiceBaseDcs
{
set
{
this._InvoiceNumbers = value.Select(i => i.InvoiceNumber).ToList();
this._InvoiceBaseDCs = new List<InvoiceBaseDC>(value);
this.grid_newInvoices.ItemsSource = this._InvoiceBaseDCs;
}
}
public List<InvoiceBaseDC> InvoiceBaseDcs
{
set
{
this._InvoiceNumbers = value.Select(i => i.InvoiceNumber).ToList();
this._InvoiceBaseDCs = new List<InvoiceBaseDC>(value);
this.grid_newInvoices.ItemsSource = this._InvoiceBaseDCs;
}
}
private void Fire()
{
if (this.CreateButtonClicked != null)
{
if (_InvoiceBaseDCs == null)
_InvoiceBaseDCs = new List<InvoiceBaseDC>();
private void Fire()
{
if (this.CreateButtonClicked != null)
{
if (_InvoiceBaseDCs == null)
_InvoiceBaseDCs = new List<InvoiceBaseDC>();
for (int i = 0; i < _InvoiceBaseDCs.Count; i++)
{
_InvoiceBaseDCs[i].InvoiceNumber = this._InvoiceNumbers[i];
}
for (int i = 0; i < _InvoiceBaseDCs.Count; i++)
{
_InvoiceBaseDCs[i].InvoiceNumber = this._InvoiceNumbers[i];
}
var gkvAbrechnung = ViewModel.CommitToDataContract();
var gkvAbrechnung = ViewModel.CommitToDataContract();
this.CreateButtonClicked(this, new EventArgs<GkvAbrechnungDC>(gkvAbrechnung));
}
}
public void Clear()
{
_LoadedInvoiceBaseOid = null;
popupedit_GkvSearch.Text = string.Empty;
popupedit_GkvSearch.Focus();
}
this.CreateButtonClicked(this, new EventArgs<GkvAbrechnungDC>(gkvAbrechnung));
}
}
public void Clear()
{
_LoadedInvoiceBaseOid = null;
popupedit_GkvSearch.Text = string.Empty;
popupedit_GkvSearch.Focus();
}
private void btn_cancel_Click(object sender, RoutedEventArgs e)
{
if (ViewModel.InvoiceBases != null)
ViewModel.InvoiceBases.Clear();
this.CancelButtonClicked(this, e);
}
private void btn_create_Click(object sender, RoutedEventArgs e)
{
this.Fire();
}
private void btn_cancel_Click(object sender, RoutedEventArgs e)
{
if (ViewModel.InvoiceBases != null)
ViewModel.InvoiceBases.Clear();
this.CancelButtonClicked(this, e);
}
private void btn_create_Click(object sender, RoutedEventArgs e)
{
this.Fire();
}
private void TableView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
var si = e.Row as InvoiceBaseDC;
if (e.Column.FieldName.Contains("NeuErstellen") && ((bool)e.Value))
{
if (si.DiffErstellen)
{
si.DiffErstellen = false;
grid_newInvoices.RefreshData();
}
}
else if (e.Column.FieldName.Contains("DiffErstellen") && ((bool)e.Value))
{
if (si.NeuErstellen)
{
si.NeuErstellen = false;
grid_newInvoices.RefreshData();
}
}
}
private void popupedit_GkvSearch_PopUpClick(object sender, RoutedEventArgs e)
{
gkvsearchview.ItemSelected += gkvsearchview_OrganisationSelected;
popup_organisation.IsOpen = true;
}
private void gkvsearchview_OrganisationSelected(object sender, EventArgs<CompactOrganisationDC> e)
{
popup_organisation.IsOpen = false;
gkvsearchview.ItemSelected -= gkvsearchview_OrganisationSelected;
private void TableView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
var si = e.Row as InvoiceBaseDC;
if (e.Column.FieldName.Contains("NeuErstellen") && ((bool)e.Value))
{
if (si.DiffErstellen)
{
si.DiffErstellen = false;
grid_newInvoices.RefreshData();
}
}
else if (e.Column.FieldName.Contains("DiffErstellen") && ((bool)e.Value))
{
if (si.NeuErstellen)
{
si.NeuErstellen = false;
grid_newInvoices.RefreshData();
}
}
}
popupedit_GkvSearch.Text = e.Data.ToString();
popupedit_GkvSearch.Focus();
private void popupedit_GkvSearch_PopUpClick(object sender, RoutedEventArgs e)
{
gkvsearchview.ItemSelected += gkvsearchview_OrganisationSelected;
popup_organisation.IsOpen = true;
}
private void gkvsearchview_OrganisationSelected(object sender, EventArgs<CompactOrganisationDC> e)
{
popup_organisation.IsOpen = false;
gkvsearchview.ItemSelected -= gkvsearchview_OrganisationSelected;
RefreshInvoiceBases(e.Data.OrganisationOid);
}
popupedit_GkvSearch.Text = e.Data.ToString();
popupedit_GkvSearch.Focus();
private void RefreshInvoiceBases() => RefreshInvoiceBases(_LoadedInvoiceBaseOid);
private void RefreshInvoiceBases(DateTime? start, DateTime? ende) => RefreshInvoiceBases(_LoadedInvoiceBaseOid, start ?? FilterStart, ende ?? FilterEnde);
private void RefreshInvoiceBases(long? costOid) => RefreshInvoiceBases(costOid, FilterStart, FilterEnde);
private void RefreshInvoiceBases(long? costOid, DateTime? start, DateTime? ende)
{
if (costOid != null && start != null && ende != null && ende >= start)
{
_LoadedInvoiceBaseOid = costOid;
RefreshInvoiceBases(e.Data.OrganisationOid);
}
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBasesForCostBearerAndId(start, ende, (long)costOid, "RechnungSoziotherapie"), UpdateInvoiceList);
}
}
private void RefreshInvoiceBases() => RefreshInvoiceBases(_LoadedInvoiceBaseOid);
private void RefreshInvoiceBases(DateTime? start, DateTime? ende) => RefreshInvoiceBases(_LoadedInvoiceBaseOid, start ?? FilterStart, ende ?? FilterEnde);
private void RefreshInvoiceBases(long? costOid) => RefreshInvoiceBases(costOid, FilterStart, FilterEnde);
private void RefreshInvoiceBases(long? costOid, DateTime? start, DateTime? ende)
{
if (costOid != null && start != null && ende != null && ende >= start)
{
_LoadedInvoiceBaseOid = costOid;
private void UpdateInvoiceList(IList<InvoiceBaseDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
BindingList <InvoiceBaseVM> invoiceBaseVMs = new BindingList<InvoiceBaseVM>();
foreach (var invoiceBaseDC in dcList)
{
InvoiceBaseVM invoiceBaseVM = new InvoiceBaseVM(invoiceBaseDC);
invoiceBaseVM.IsChecked = false;
invoiceBaseVMs.Add(invoiceBaseVM);
}
ViewModel.InvoiceBases = invoiceBaseVMs;
grid_newInvoices.ItemsSource = ViewModel.InvoiceBases;
this.gridView.BestFitColumns();
});
}
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBasesForCostBearerAndIdAndIsUsed(start, ende, (long)costOid, "RechnungSoziotherapie"), UpdateInvoiceList);
}
}
private void popupedit_DatenannahmestelleSearch_PopUpClick(object sender, RoutedEventArgs e)
{
// tbd
}
private void UpdateInvoiceList(IList<InvoiceBaseDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
BindingList<InvoiceBaseVM> invoiceBaseVMs = new BindingList<InvoiceBaseVM>();
foreach (var invoiceBaseDC in dcList)
{
InvoiceBaseVM invoiceBaseVM = new InvoiceBaseVM(invoiceBaseDC);
invoiceBaseVM.IsChecked = false;
invoiceBaseVMs.Add(invoiceBaseVM);
}
ViewModel.InvoiceBases = invoiceBaseVMs;
ViewModel.InvoiceBases.ListChanged += (s, e) => ViewModel.FirePropertyIsReady2CreateChanged();
grid_newInvoices.ItemsSource = ViewModel.InvoiceBases;
this.gridView.BestFitColumns();
});
}
private void button_checkAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleVMs();
foreach (var item in visible)
{
item.IsChecked = true;
}
}
private void button_uncheckAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleVMs();
foreach (var item in visible)
{
item.IsChecked = false;
}
}
private void popupedit_DatenannahmestelleSearch_PopUpClick(object sender, RoutedEventArgs e)
{
// tbd
}
private void button_checkAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleAndValidVMs();
foreach (var item in visible)
{
item.IsChecked = true;
}
}
private void button_uncheckAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleAndValidVMs();
foreach (var item in visible)
{
item.IsChecked = false;
}
}
private IList<InvoiceBaseVM> GetVisibleVMs()
{
var list = new List<InvoiceBaseVM>();
private IList<InvoiceBaseVM> GetVisibleAndValidVMs()
{
var list = new List<InvoiceBaseVM>();
var items = grid_newInvoices.ItemsSource as IList<InvoiceBaseVM>;
var items = grid_newInvoices.ItemsSource as IList<InvoiceBaseVM>;
if (items != null)
{
for (int i = 0; i < items.Count; i++)
{
if (grid_newInvoices.IsRowVisible(i))
{
var vm = grid_newInvoices.GetRow(i) as InvoiceBaseVM;
if (vm != null)
{
list.Add(vm);
}
}
}
}
if (items is null)
return list;
return list;
}
for (int i = 0; i < items.Count; i++)
{
if (!grid_newInvoices.IsRowVisible(i))
continue;
private void DateEdit_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (_Viewmodel is null)
return;
var vm = grid_newInvoices.GetRow(i) as InvoiceBaseVM;
if (vm is null)
continue;
if (FilterStart == (DateTime)e.NewValue)
return;
if (!vm.IsGkvValid)
continue;
// Von
FilterStart = (DateTime)e.NewValue;
list.Add(vm);
}
if(FilterEnde < FilterStart)
{
FilterEnde = new DateTime(FilterStart.Year, FilterStart.Month, 1).AddMonths(1).AddTicks(-1);
}
return list;
}
if(FilterEnde.Year != FilterStart.Year)
{
FilterEnde = new DateTime(FilterStart.Year, FilterStart.Month, 1).AddMonths(1).AddTicks(-1);
}
private void DateEdit_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (_Viewmodel is null)
return;
RefreshInvoiceBases();
}
if (FilterStart == (DateTime)e.NewValue)
return;
private void DateEdit2_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (_Viewmodel is null)
return;
// Von
FilterStart = (DateTime)e.NewValue;
if (FilterEnde == (DateTime)e.NewValue)
return;
if (FilterEnde < FilterStart)
{
FilterEnde = new DateTime(FilterStart.Year, FilterStart.Month, 1).AddMonths(1).AddTicks(-1);
}
// Bis
FilterEnde = (DateTime)e.NewValue;
if (FilterEnde.Year != FilterStart.Year)
{
FilterEnde = new DateTime(FilterStart.Year, FilterStart.Month, 1).AddMonths(1).AddTicks(-1);
}
if (FilterEnde < FilterStart)
{
FilterStart = new DateTime(FilterEnde.Year, 1, 1);
}
RefreshInvoiceBases();
}
if (FilterEnde.Year != FilterStart.Year)
{
FilterStart = new DateTime(FilterEnde.Year, FilterEnde.Month, 1);
}
private void DateEdit2_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (_Viewmodel is null)
return;
RefreshInvoiceBases();
}
}
if (FilterEnde == (DateTime)e.NewValue)
return;
// Bis
FilterEnde = (DateTime)e.NewValue;
if (FilterEnde < FilterStart)
{
FilterStart = new DateTime(FilterEnde.Year, 1, 1);
}
if (FilterEnde.Year != FilterStart.Year)
{
FilterStart = new DateTime(FilterEnde.Year, FilterEnde.Month, 1);
}
RefreshInvoiceBases();
}
}
}

View File

@@ -1,12 +1,16 @@
<localView:BeWoView x:Class="BeWo.View.Detail.MandatorView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView
x:Class="BeWo.View.Detail.MandatorView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<Grid x:Name="root">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -24,13 +28,40 @@
<ColumnDefinition Width="*" MaxWidth="420" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Grid.Row="0" Margin="3" VerticalAlignment="Center">Name</Label>
<TextBox Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Name
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Column="0" Grid.Row="1" Margin="3" VerticalAlignment="Center">IK Nummer (Leistungserbringer)</Label>
<TextBox Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Text="{Binding Path=IKLeistungserbringer, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
IK Nummer (Leistungserbringer)
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=IKLeistungserbringer, UpdateSourceTrigger=PropertyChanged}" />
<GroupBox Margin="3 20 3 3" Grid.Row="2" Grid.ColumnSpan="2" Header="Adresse" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
Grid.Row="2"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Adresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -42,18 +73,56 @@
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Grid.Row="0" Margin="3" VerticalAlignment="Center">Strasse</Label>
<Label Grid.Column="0" Grid.Row="1" Margin="3" VerticalAlignment="Center">Postleitzahl</Label>
<Label Grid.Column="0" Grid.Row="2" Margin="3" VerticalAlignment="Center">Ort</Label>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<TextBox Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Grid.Column="1" Grid.Row="2" Margin="3" Height="23" Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox Margin="3 20 3 3" Grid.Row="3" Grid.ColumnSpan="2" Header="Einstellungen" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
Grid.Row="3"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Einstellungen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="EinstellungenGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -72,31 +141,82 @@
</Grid.ColumnDefinitions>
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="3" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center">
Zeit in Minuten bis der BeWoPlaner nach Inaktivität gesperrt wird
<TextBlock
Grid.Row="3"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
TextWrapping="Wrap">
Zeit in Minuten bis der BeWoPlaner nach Inaktivität gesperrt wird
</TextBlock>
<dxe:SpinEdit x:Name="LockUITimeSpinEdit" IsFloatValue="False" MinValue="0" MaxValue="999"
Grid.Column="1" Grid.Row="3" Margin="3,5,3,5" Height="23"
EditValue="{Binding Path=TimeUntilUILock, Converter={StaticResource Int2DecimalConverter}, Mode=TwoWay}" />
<dxe:SpinEdit
x:Name="LockUITimeSpinEdit"
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=TimeUntilUILock, Converter={StaticResource Int2DecimalConverter}, Mode=TwoWay}"
IsFloatValue="False"
MaxValue="999"
MinValue="0" />
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="4" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center">
<TextBlock
Grid.Row="4"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
TextWrapping="Wrap">
Zeit in Minuten bis die Session in der Mobilversion abläuft
</TextBlock>
<dxe:SpinEdit x:Name="MoKSessionTimeoutSpinEdit" IsFloatValue="False" MinValue="20" MaxValue="60"
Grid.Column="1" Grid.Row="4" Margin="3,5,3,5" Height="23"
EditValue="{Binding Path=MoKSessionTimeout, Converter={StaticResource Int2DecimalConverter}, Mode=TwoWay}" />
<dxe:SpinEdit
x:Name="MoKSessionTimeoutSpinEdit"
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=MoKSessionTimeout, Converter={StaticResource Int2DecimalConverter}, Mode=TwoWay}"
IsFloatValue="False"
MaxValue="60"
MinValue="20" />
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="5" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Anzahl Monate\, ab der eine Warnung für auslaufende Hilfepläne angezeigt wird}"/>
<dxe:SpinEdit x:Name="helpplan" IsFloatValue="False" MinValue="0" MaxValue="999"
Grid.Column="1" Grid.Row="5" Margin="3,5,3,5" Height="23" EditValue="{Binding Path=HilfeplanAuslaufAuswahl, Converter={StaticResource Int2DecimalConverter}}" />
<TextBlock
Grid.Row="5"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Anzahl Monate\, ab der eine Warnung für auslaufende Hilfepläne angezeigt wird}"
TextWrapping="Wrap" />
<dxe:SpinEdit
x:Name="helpplan"
Grid.Row="5"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=HilfeplanAuslaufAuswahl, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MaxValue="999"
MinValue="0" />
<CheckBox Margin="3,5,3,5" Content="Passwortsicherheit aktivieren" IsChecked="{Binding Path=IsPasswordSecurityActiv}" Grid.ColumnSpan="2" Grid.Row="7" />
<CheckBox
Grid.Row="7"
Grid.ColumnSpan="2"
Margin="3,5,3,5"
Content="Passwortsicherheit aktivieren"
IsChecked="{Binding Path=IsPasswordSecurityActiv}" />
</Grid>
</GroupBox>
<GroupBox Margin="3 20 3 3" Grid.Row="4" Grid.ColumnSpan="2" Header="{markup:Translate Zeiterfassung}" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
Grid.Row="4"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="{markup:Translate Zeiterfassung}"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -116,40 +236,149 @@
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Row="0" Margin="3,5,3,5" Content="{markup:Translate Dokumentationstext in der Zeiterfassung Pflichtfeld}" IsChecked="{Binding Path=IsServiceRecordNoticeMandatory}" Grid.ColumnSpan="2"></CheckBox>
<CheckBox
Grid.Row="0"
Grid.ColumnSpan="2"
Margin="3,5,3,5"
Content="{markup:Translate Dokumentationstext in der Zeiterfassung Pflichtfeld}"
IsChecked="{Binding Path=IsServiceRecordNoticeMandatory}" />
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="1" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Anzahl Tage des Folgemonats\, nach denen die Zeiterfassungseinträge des vergangenen Monats nicht mehr verändert werden oder neue Zeiterfassungseinträge angelegt werden dürfen (0 für unbegrenzt).}"/>
<dxe:SpinEdit IsFloatValue="False" MinValue="0" Grid.Column="1" Grid.Row="1" Margin="3,5,3,5" Height="23" EditValue="{Binding Path=MaxDaysEditServiceRecordsAllowed, Converter={StaticResource Int2DecimalConverter}}" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Anzahl Tage des Folgemonats\, nach denen die Zeiterfassungseinträge des vergangenen Monats nicht mehr verändert werden oder neue Zeiterfassungseinträge angelegt werden dürfen (0 für unbegrenzt).}"
TextWrapping="Wrap" />
<dxe:SpinEdit
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=MaxDaysEditServiceRecordsAllowed, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MinValue="0" />
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="2" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Anzahl Tage\, in der die Zeiterfassung erfolgen muss (0 für unbegrenzt)}"/>
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="3" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Schwellwert in %\, ab der das Restbudget in der Zeiterfassung rot markiert wird}"/>
<TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Anzahl Tage\, in der die Zeiterfassung erfolgen muss (0 für unbegrenzt)}"
TextWrapping="Wrap" />
<TextBlock
Grid.Row="3"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Schwellwert in %\, ab der das Restbudget in der Zeiterfassung rot markiert wird}"
TextWrapping="Wrap" />
<dxe:SpinEdit x:Name="AnzTageZeiterfassErfolgt" IsFloatValue="False" MinValue="0" MaxValue="999"
Grid.Column="1" Grid.Row="2" Margin="3,5,3,5" Height="23" EditValue="{Binding Path=AnzTageZeiterfassErfolgt, Converter={StaticResource Int2DecimalConverter}}" />
<dxe:SpinEdit
x:Name="AnzTageZeiterfassErfolgt"
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=AnzTageZeiterfassErfolgt, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MaxValue="999"
MinValue="0" />
<dxe:SpinEdit x:Name="ZeiterfassungsSchwellwert" IsFloatValue="False" MinValue="0" MaxValue="100" Value="80"
Grid.Column="1" Grid.Row="3" Margin="3,5,3,5" Height="23" EditValue="{Binding Path=ZeiterfassungsSchwellwert, Converter={StaticResource Int2DecimalConverter}}" />
<dxe:SpinEdit
x:Name="ZeiterfassungsSchwellwert"
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=ZeiterfassungsSchwellwert, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MaxValue="100"
MinValue="0"
Value="80" />
<TextBlock Foreground="Black" Grid.Column="0" Grid.Row="4" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Zeiteinheit der Dauer}"/>
<ComboBox x:Name="ComboZeiteinheit" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Margin="160,5,3,5" Height="23" SelectionChanged="ComboZeiteinheit_SelectionChanged"/>
<TextBlock
Grid.Row="4"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Zeiteinheit der Dauer}"
TextWrapping="Wrap" />
<ComboBox
x:Name="ComboZeiteinheit"
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="2"
Height="23"
Margin="160,5,3,5"
SelectionChanged="ComboZeiteinheit_SelectionChanged" />
<CheckBox Margin="3,5,3,5" Content="{markup:Translate Enddatum anzeigen}" IsChecked="{Binding Path=IsEndDateVisible}" Grid.ColumnSpan="2" Grid.Row="6" />
<CheckBox
Grid.Row="6"
Grid.ColumnSpan="2"
Margin="3,5,3,5"
Content="{markup:Translate Enddatum anzeigen}"
IsChecked="{Binding Path=IsEndDateVisible}" />
<CheckBox x:Name="EnableArbeitszeiterfassung" Margin="3,20,3,5" Content="{markup:Translate Arbeitszeit mit BeWoPlaner erfassen}" IsChecked="{Binding Path=EnableArbeitszeiterfassung}" Grid.ColumnSpan="2" Grid.Row="7" />
<CheckBox x:Name="EnableAutomaticPauses" Margin="3,5,3,5" Content="{markup:Translate Automatischer Pausenabzug}" IsChecked="{Binding Path=EnableAutomaticPauses}" Grid.ColumnSpan="2" Grid.Row="8" />
<CheckBox x:Name="EnableRestTimeWarning" Margin="3,5,3,5" Content="{markup:Translate Warnung bei nicht einhalten der Ruhezeit}" IsChecked="{Binding Path=EnableRestTimeWarning}" Grid.ColumnSpan="2" Grid.Row="9" />
<CheckBox
x:Name="EnableArbeitszeiterfassung"
Grid.Row="7"
Grid.ColumnSpan="2"
Margin="3,20,3,5"
Content="{markup:Translate Arbeitszeit mit BeWoPlaner erfassen}"
IsChecked="{Binding Path=EnableArbeitszeiterfassung}" />
<CheckBox
x:Name="EnableAutomaticPauses"
Grid.Row="8"
Grid.ColumnSpan="2"
Margin="3,5,3,5"
Content="{markup:Translate Automatischer Pausenabzug}"
IsChecked="{Binding Path=EnableAutomaticPauses}" />
<CheckBox
x:Name="EnableRestTimeWarning"
Grid.Row="9"
Grid.ColumnSpan="2"
Margin="3,5,3,5"
Content="{markup:Translate Warnung bei nicht einhalten der Ruhezeit}"
IsChecked="{Binding Path=EnableRestTimeWarning}" />
<TextBlock x:Name="TextBlockShowWarning" Foreground="Black" Grid.Column="0" Grid.Row="10" Margin="3,5,3,5" TextWrapping="Wrap" VerticalAlignment="Center" Text="{markup:Translate Anzahl Stunden\, ab der eine Warnung angezeigt wird}"/>
<dxe:SpinEdit x:Name="SpinEditShowWarning" IsFloatValue="False" Value="10" MinValue="0" Grid.Column="1" Grid.Row="10" Margin="3,5,3,5" Height="23" EditValue="{Binding Path=MaxWorkTimeHoursBeforeWarning, Converter={StaticResource Int2DecimalConverter}}" />
<TextBlock
x:Name="TextBlockShowWarning"
Grid.Row="10"
Grid.Column="0"
Margin="3,5,3,5"
VerticalAlignment="Center"
Foreground="Black"
Text="{markup:Translate Anzahl Stunden\, ab der eine Warnung angezeigt wird}"
TextWrapping="Wrap" />
<dxe:SpinEdit
x:Name="SpinEditShowWarning"
Grid.Row="10"
Grid.Column="1"
Height="23"
Margin="3,5,3,5"
EditValue="{Binding Path=MaxWorkTimeHoursBeforeWarning, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MinValue="0"
Value="10" />
</Grid>
</GroupBox>
<GroupBox Margin="3 20 3 3" Grid.Row="5" Grid.ColumnSpan="2" Header="Rechnungsnummer" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
Grid.Row="5"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Rechnungsnummer"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -162,38 +391,100 @@
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Content="Automatische Rechnungsnummer verwenden" Margin="3" VerticalAlignment="Center" />
<dxe:CheckEdit Grid.Column="1" Width="200" Margin="3" Height="23" IsChecked="{Binding InvoiceNumber.Use}" />
<Label
Margin="3"
VerticalAlignment="Center"
Content="Automatische Rechnungsnummer verwenden" />
<dxe:CheckEdit
Grid.Column="1"
Width="200"
Height="23"
Margin="3"
IsChecked="{Binding InvoiceNumber.Use}" />
<Label x:Name="lblSchema" Content="Schema" Grid.Row="1" Margin="3" VerticalAlignment="Center" />
<TextBox x:Name="txtSchema" Grid.Column="1" Grid.Row="1" Width="200" Margin="3" Height="23" Text="{Binding InvoiceNumber.Pattern}" />
<Label
x:Name="lblSchema"
Grid.Row="1"
Margin="3"
VerticalAlignment="Center"
Content="Schema" />
<TextBox
x:Name="txtSchema"
Grid.Row="1"
Grid.Column="1"
Width="200"
Height="23"
Margin="3"
Text="{Binding InvoiceNumber.Pattern}" />
<Label x:Name="lblNumber" Content="Aktuelle Nummer" Grid.Row="2" Margin="3" VerticalAlignment="Center" />
<dxe:SpinEdit Name="spinedit_number" Grid.Column="1" Grid.Row="2" IsFloatValue="False" MaxValue="999999999"
Height="23" Width="200" EditValue="{Binding Path=InvoiceNumber.CurrentNumber, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource Int2DecimalConverter}}" />
<Label
x:Name="lblNumber"
Grid.Row="2"
Margin="3"
VerticalAlignment="Center"
Content="Aktuelle Nummer" />
<dxe:SpinEdit
Name="spinedit_number"
Grid.Row="2"
Grid.Column="1"
Width="200"
Height="23"
EditValue="{Binding Path=InvoiceNumber.CurrentNumber, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MaxValue="999999999" />
<dxg:GridControl x:Name="GridControlInvoiceNumbers" Margin="0,10,0,0" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2" ItemsSource="{Binding InvoiceNumberList}">
<dxg:GridControl
x:Name="GridControlInvoiceNumbers"
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="0,10,0,0"
ItemsSource="{Binding InvoiceNumberList}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Name" Header="Name" Width="100" SortOrder="Ascending" SortIndex="0" AllowEditing="False">
</dxg:GridColumn>
<dxg:GridColumn FieldName="Pattern" Header="Schema" Width="100">
</dxg:GridColumn>
<dxg:GridColumn FieldName="CurrentNumber" Header="Aktuelle Nummer" Width="100">
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="Name"
Header="Name"
SortIndex="0"
SortOrder="Ascending" />
<dxg:GridColumn
Width="100"
FieldName="Pattern"
Header="Schema" />
<dxg:GridColumn
Width="100"
FieldName="CurrentNumber"
Header="Aktuelle Nummer">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="0" Mask="########0" MaskType="Numeric"></dxe:TextEditSettings>
<dxe:TextEditSettings
DisplayFormat="0"
Mask="########0"
MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AutoWidth="true" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
<dxg:TableView
AutoWidth="true"
NavigationStyle="Cell"
ShowGroupPanel="False"
ShowGroupedColumns="false"
ShowTotalSummary="False" />
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
</GroupBox>
<GroupBox x:Name="groupBoxSozio" Margin="3 20 3 3" Grid.Row="6" Grid.ColumnSpan="2" Header="Soziotherapie" Style="{StaticResource ObjectEditGroupBox}" Visibility="Collapsed">
<!--Kann frei genutzt werden-->
<GroupBox
x:Name="groupBoxSozio"
Grid.Row="6"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Soziotherapie"
Style="{StaticResource ObjectEditGroupBox}"
Visibility="Collapsed">
<!-- Kann frei genutzt werden -->
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -205,7 +496,13 @@
</Grid>
</GroupBox>
<GroupBox Margin="3 20 3 3" x:Name="GroupOwnChatSettings" Grid.Row="7" Grid.ColumnSpan="2" Header="{markup:Translate ownChat Einstellungen}" Style="{StaticResource ObjectEditGroupBox}">
<GroupBox
x:Name="GroupOwnChatSettings"
Grid.Row="7"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="{markup:Translate ownChat Einstellungen}"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -214,10 +511,17 @@
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock VerticalAlignment="Center" Margin="8,10,0,0" FontSize="12" Foreground="{DynamicResource MainGroupBoxForegroundBrush}">
<Hyperlink x:Name="HyperlinkOwnChatSettings" TargetName="_NewWindow" Click="Hyperlink_ShowOwnChatSettings_Click">
<TextBlock
Margin="8,10,0,0"
VerticalAlignment="Center"
FontSize="12"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}">
<Hyperlink
x:Name="HyperlinkOwnChatSettings"
Click="Hyperlink_ShowOwnChatSettings_Click"
TargetName="_NewWindow">
<Hyperlink.Inlines>
<Run Text="{markup:Translate ownChat Einstellungen öffnen}"/>
<Run Text="{markup:Translate ownChat Einstellungen öffnen}" />
</Hyperlink.Inlines>
</Hyperlink>
</TextBlock>

View File

@@ -2,6 +2,7 @@
x:Class="BeWo.View.Detail.OrganisationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
@@ -9,7 +10,7 @@
xmlns:search="clr-namespace:BeWo.View.Search"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation" xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:val="clr-namespace:BeWo.Validation"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
@@ -579,6 +580,8 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -591,102 +594,124 @@
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center">
IK Krankenkasse
</Label>
<TextBox
IK Krankenkasse
</Label>
<DockPanel
Grid.Row="0"
Grid.Column="1"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}" />
<Label
HorizontalAlignment="Stretch">
<TextBox
Grid.Row="0"
Grid.Column="1"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>
<Label
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center">
IK Kostenträger
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center">
IK Datenannahmestelle
</Label>
<TextBox
Grid.Row="2"
Grid.Column="1"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource AppSettings2Visible}, ConverterParameter=AllowGkvAbrechnung}"
ToolTip="Bezeichnung Datenannahmestelle">
Bez. Datenannahmeste...
</Label>
<TextBox
Grid.Row="3"
Grid.Column="1"
Visibility="{Binding Converter={StaticResource AppSettings2Visible}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
VerticalAlignment="Center"
ToolTip="Abrechnungscode + Tarifkennzeichen. Zum Beispiel: 6901000">
Leistungserbringergruppe
</Label>
<TextBox
Grid.Row="4"
Leistungserbringergruppe
</Label>
<Button
x:Name="btn_ik"
Grid.Row="2"
Grid.Column="1"
Click="IKNumber_Button_Click"
IsEnabled="{Binding IsIKNumberValid}"
Style="{StaticResource PrimaryButtonSmall}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Weitere IK's ermitteln
</Button>
<TextBox
Grid.Row="1"
Grid.Column="1"
Text="{Binding Path=Leistungserbringergruppe, UpdateSourceTrigger=PropertyChanged}" />
<Label
<Label
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center">
IK Kostenträger
</Label>
<TextBox
Grid.Row="3"
Grid.Column="1"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
VerticalAlignment="Center">
IK Datenannahmestelle
</Label>
<TextBox
Grid.Row="4"
Grid.Column="1"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="5"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource AppSettings2Visible}, ConverterParameter=AllowGkvAbrechnung}">
Verfahrensstufe
</Label>
<StackPanel
ToolTip="Bezeichnung Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Bez. Datenannahmeste...
</Label>
<TextBox
Grid.Row="5"
Grid.Column="1"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="6"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Echtverfahren
</Label>
<CheckBox
Grid.Row="6"
Grid.Column="1"
IsChecked="{Binding Echtverfahren}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
x:Name="label_verfahrensstufe"
Grid.Row="7"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Verfahrensstufe
</Label>
<StackPanel
x:Name="radiobuttons_verfahrensstufe"
Grid.Row="7"
Grid.Column="1"
Orientation="Horizontal"
Visibility="{Binding Converter={StaticResource AppSettings2Visible}, ConverterParameter=AllowGkvAbrechnung}">
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=0}">Test</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=1}">Erprobung</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=2}">Echt</RadioButton>
</StackPanel>
</Grid>
</GroupBox>
<Grid Grid.Row="3" Grid.ColumnSpan="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Content="Notizen" />
<TextBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Height="Auto"
Margin="3"
AcceptsReturn="True"
MaxLength="1000"
Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Visible" />
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=0}">Test</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=1}">Erprobung</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=2}">Echt</RadioButton>
</StackPanel>
</Grid>
</GroupBox>
<GroupBox
Grid.Row="3"
Grid.ColumnSpan="4"
Margin="0,8,0,0"
Header="Notizen"
Style="{StaticResource ObjectEditGroupBox}">
<TextBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Height="Auto"
Margin="3"
AcceptsReturn="True"
MaxLength="1000"
Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Visible" />
</GroupBox>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
</ScrollViewer>
</TabItem>
@@ -1155,18 +1180,27 @@
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Horizontal">
<StackPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</StackPanel.Resources>
<Button
x:Name="btnSave"
Height="25"
Margin="0,0,2,0"
Command="ApplicationCommands.Save"
Content="Speichern" />
Content="Speichern"
Style="{StaticResource PrimaryButton}" />
<Button
x:Name="btnClose"
Height="25"
Margin="0,0,3,0"
Command="ApplicationCommands.Close"
Content="Schließen" />
Content="Schließen"
Style="{StaticResource PrimaryButton}" />
</StackPanel>
</Grid>
</GroupBox>

View File

@@ -1,6 +1,7 @@
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Navigation;
using BeWo.Core;
@@ -14,6 +15,7 @@ using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Xpf.Grid;
@@ -59,6 +61,11 @@ namespace BeWo.View.Detail
{
tabitem_documents.Visibility = Visibility.Collapsed;
}
#if !DEBUG
label_verfahrensstufe.Visibility = Visibility.Collapsed;
radiobuttons_verfahrensstufe.Visibility = Visibility.Collapsed;
#endif
}
public event EventHandler<EventArgs<OrganisationVM>> OrganisationSavedOrUpdated;
@@ -302,9 +309,40 @@ namespace BeWo.View.Detail
ov.Margin = new Thickness(0, 10, 0, 0);
Grid.SetRow(ov, 1);
GridSBD.Children.Add(ov);
}
}
}
private void IKNumber_Button_Click(object sender, RoutedEventArgs e)
{
var req = new GkvAbrechnungGetIKRequestDC();
req.IKKrankenkasse = ViewModel.IKKrankenkasse;
req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe;
ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb)));
}
private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response)
{
if(response is null || !response.Success)
{
MessageBox.Show($"Interner Serverfehler.", "Fehler");
return;
}
if (!response.Gefunden)
{
MessageBox.Show($"Für die Organisation mit dem IK \"{req.IKKrankenkasse}\" und Leistungserbringergruppe \"{req.Leistungserbringergruppe}\" konnte keine Datenannahmestelle gefunden werden. " +
$"Bitte informieren Sie sich bei der Krankenkasse, ob zum elektronischen Datenaustausch " +
$"eine seperate Anmeldung benötigt wird.", "Fehler");
return;
}
ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle;
ViewModel.IKKostentrager = response.IKKostentrager;
ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle;
CommandManager.InvalidateRequerySuggested();
}
}
}

View File

@@ -1,4 +1,18 @@
<localView:BeWoView x:Class="BeWo.View.Detail.UserGroupView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localView="clr-namespace:BeWo.View" xmlns:val="clr-namespace:BeWo.Validation" xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView
x:Class="BeWo.View.Detail.UserGroupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DataContext="{d:DesignInstance Type=viewmodel:UserGroupVM}"
mc:Ignorable="d"
Height="Auto" Width="Auto"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Focusable="True">
<Grid>
<uc:ShadowChrome>
<GroupBox Style="{StaticResource MainContentGroupBoxStyle}">

View File

@@ -132,15 +132,20 @@ namespace BeWo.View.Detail
{
if (ServiceFacade.DoUserServiceSync(a => a.CheckUserGroupIsLastWithUserGroupEditRights(ViewModel.DataContract.UserGroupOid.Value)))
{
MessageBox.Show("Die ausgewählten Rechte können der " + BS.Shared.Translation.Translator.Translate("Benutzergruppe") + " nicht entfernt werden, da sie die einzige " + BS.Shared.Translation.Translator.Translate("Benutzergruppe") + " ist, die dazu berechtigt ist, " + BS.Shared.Translation.Translator.Translate("Benutzergruppen") + " zu verwalten.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
var gruppe = BS.Shared.Translation.Translator.Translate("Benutzergruppe");
var gruppen = BS.Shared.Translation.Translator.Translate("Benutzergruppen");
var txt = $"Die ausgewählten Rechte können der {gruppe} nicht entfernt werden, da sie die einzige {gruppe} ist, die dazu berechtigt ist, {gruppen} zu verwalten.";
MessageBox.Show(txt, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
}
foreach (var item in removedItems)
{
ViewModel.Rights.Remove(item.Key);
}
//foreach (var item in removedItems)
//{
// ViewModel.Rights.Remove(item.Key);
//}
ViewModel.Rights.RemoveRange(removedRights);
ViewModel.Rights.Sort();
}

View File

@@ -4,15 +4,19 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:accounting="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
Focusable="True"
Loaded="BeWoView_Loaded"
Unloaded="BeWoView_Unloaded">
<Grid>
<uc:ShadowChrome>
@@ -103,8 +107,14 @@
Selector.Selected="tabitem_gkvabrechnung_Selected">
<TabItem.Visibility>
<MultiBinding Converter="{StaticResource BooleanAndVisibilityMultiConverter}">
<Binding Converter="{StaticResource AppSettingsConverter}" ConverterParameter="{x:Static core:SettingsKeys.AllowGkvAbrechnung}"/>
<Binding Converter="{StaticResource UserRightType2Enabled}" ConverterParameter="{x:Static shared:UserRightType.Finance_Gkv_View}"/>
<Binding
Converter="{StaticResource UserPermission2BoolConverter}"
ConverterParameter="{x:Static core:SettingsKeys.AllowGkvAbrechnung}"
Path="Itself" />
<Binding
Converter="{StaticResource UserPermission2BoolConverter}"
ConverterParameter="{x:Static shared:UserRightType.Finance_Gkv_View}"
Path="Itself" />
</MultiBinding>
</TabItem.Visibility>
</TabItem>

View File

@@ -1,7 +1,8 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using BeWo.Core.Service;
using BeWo.View.Detail;
using BeWo.View.Detail.Accounting;
@@ -16,16 +17,19 @@ namespace BeWo.View.Master
{
public partial class FinanceView
{
private readonly Dictionary<TabItem, BeWoView> _OpenViews = new Dictionary<TabItem, BeWoView>();
private readonly Dictionary<TabItem, BeWoView> _OpenViews = new Dictionary<TabItem, BeWoView>();
private bool _SavePerformed;
private bool _AlreadyLoaded = false;
public FinanceView()
public FinanceView()
{
InitializeComponent();
InitRights();
DataContext = new BaseVM();
#if DEBUG
if(DebugConfig.CurrentConfig is DebugConfig config && config.SelectView == UIContext.Finance)
{
@@ -63,16 +67,16 @@ namespace BeWo.View.Master
{
var lDoSave = true;
if (root.SelectedItem != null)
if (root.SelectedItem is TabItem selected)
{
if (_OpenViews.ContainsKey(root.SelectedItem as TabItem))
if (_OpenViews.ContainsKey(selected))
{
lDoSave = _OpenViews[root.SelectedItem as TabItem].DoSaveCheck();
lDoSave = _OpenViews[selected].DoSaveCheck();
if (lDoSave && IsDirty)
{
_SavePerformed = true;
_OpenViews.Remove(root.SelectedItem as TabItem);
_OpenViews.Remove(selected);
}
}
}
@@ -92,6 +96,12 @@ namespace BeWo.View.Master
pTabItem.Content = pView;
}
private void RemoveView(TabItem pTabItem)
{
_OpenViews.Remove(pTabItem);
pTabItem.Content = null;
}
private void InitRights()
{
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AccountingTransactionView_View))
@@ -290,5 +300,23 @@ namespace BeWo.View.Master
AddView(tabitem_gkvabrechnung, new GkvAbrechnungOverview());
}
}
}
private void BeWoView_Loaded(object sender, RoutedEventArgs e)
{
if(_AlreadyLoaded && DataContext is BaseVM vm)
{
vm.FirePropertyChangedItself();
}
_AlreadyLoaded = true;
}
private void BeWoView_Unloaded(object sender, RoutedEventArgs e)
{
if(root.SelectedItem != tabitem_gkvabrechnung)
{
RemoveView(tabitem_gkvabrechnung);
}
}
}
}

View File

@@ -32,6 +32,17 @@ namespace BeWo.View.Search
pCallBack(r);
});
}
else if (this.SearchMode == SearchMode.OnlyValid)
{
ServiceFacade.DoCustomerServiceAsync(
s => s.GetAllGkvValidOrganisationsCompact(),
r =>
{
r.Sort((x, y) => { return x.Name.CompareTo(y.Name); });
pCallBack(r);
});
}
else
{
ServiceFacade.DoCustomerServiceAsync(

View File

@@ -7,7 +7,7 @@
CostBearer,
ActiveCostbearer2SupportConcepts,
OnlyToOrganisationRelatedPersons,
OnlyTeamMember
OnlyTeamMember,
OnlyValid
}
}

View File

@@ -50,9 +50,22 @@ namespace BeWo.ViewModel
}
//public bool HasLoggedOnUserRight(UserRightType type)
// {
// {
// return BeWoApp.HasLoggedOnUserRight(type);
// }
// }
public object Itself
{
get
{
return this;
}
}
public void FirePropertyChangedItself()
{
FirePropertyChanged(nameof(Itself));
}
protected virtual void FirePropertyChanged(string pPropertyName)
{

13
BeWo/ViewModel/BaseVM.cs Normal file
View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.ViewModel
{
public class BaseVM : AbstractBaseVM
{
}
}

View File

@@ -12,11 +12,12 @@ using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Interface;
using DevExpress.Xpf.Core;
namespace BeWo.ViewModel
{
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>, IGkvAbrechnung
{
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
@@ -39,6 +40,9 @@ namespace BeWo.ViewModel
internal bool _IsChecked;
private bool _IsReady2Send;
private string _SendTooltip;
private List<InvoiceBaseVM> _InvoiceBases2;
private BindingList<InvoiceBaseVM> _InvoiceBases;
private OrganisationDC _Organisation;
@@ -54,7 +58,6 @@ namespace BeWo.ViewModel
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? AbrechnungsZeitraumStart
{
get { return this._AbrechnungsZeitraumStart; }
@@ -73,8 +76,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? AbrechnungsZeitraumEnde
{
get { return this._AbrechnungsZeitraumEnde; }
@@ -89,8 +90,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime ErstelltAm
{
get { return this._ErstelltAm; }
@@ -105,8 +104,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public long? GkvAbrechnungOid
{
get { return this._GkvAbrechnungOid; }
@@ -121,8 +118,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public long? GkvAbrechnungVersion
{
get { return this._GkvAbrechnungOid; }
@@ -137,7 +132,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public string Notice
{
get { return this._Notice; }
@@ -152,8 +146,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public decimal Betrag
{
get { return this._Betrag; }
@@ -168,8 +160,6 @@ namespace BeWo.ViewModel
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public bool Bezahlt
{
get { return _Bezahlt; }
@@ -186,7 +176,6 @@ namespace BeWo.ViewModel
}
}
}
public bool UrbelegeGesendet
{
get { return _UrbelegeGesendet; }
@@ -201,12 +190,9 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(GkvState));
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public GkvState GkvState
{
get { return GetState(this); }
get { return this.GetState(); }
}
public bool IsChecked
@@ -218,7 +204,7 @@ namespace BeWo.ViewModel
if (AreDifferent(_IsChecked, value))
{
_IsChecked = value;
FirePropertyChanged("IsChecked");
FirePropertyChanged(nameof(IsChecked));
}
}
}
@@ -228,13 +214,11 @@ namespace BeWo.ViewModel
get { return _InvoiceBases2; }
set { _InvoiceBases2 = value; }
}
public BindingList<InvoiceBaseVM> InvoiceBases
{
get { return _InvoiceBases; }
set { _InvoiceBases = value; }
}
public List<GkvTransferProtokollDC> TransferProtokolle
{
get { return _TransferProtokolle; }
@@ -247,8 +231,6 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(LastTransferDateTime));
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public OrganisationDC Organisation
{
get { return this._Organisation; }
@@ -263,7 +245,6 @@ namespace BeWo.ViewModel
}
}
}
public GkvVerfahrensstufe Verfahrensstufe
{
get { return this._Verfahrensstufe; }
@@ -278,7 +259,6 @@ namespace BeWo.ViewModel
}
}
}
public int VerfahrensstufeInt
{
get { return (int)Verfahrensstufe; }
@@ -293,6 +273,7 @@ namespace BeWo.ViewModel
}
}
#endregion
public IGkvTransferProtokoll LastTransferProtokoll => TransferProtokolle?.LastOrDefault();
public string RecipientString
{
@@ -306,14 +287,14 @@ namespace BeWo.ViewModel
return string.Empty;
}
}
public string Fehlermeldung
{
get
{
var last = TransferProtokolle?.LastOrDefault();
if (!(LastTransferProtokoll is GkvTransferProtokollDC last))
return null;
if (last is null || string.IsNullOrWhiteSpace(last.Fehlernachricht))
if (string.IsNullOrWhiteSpace(last.Fehlernachricht))
return null;
if (string.IsNullOrWhiteSpace(last.Fehlertitel))
@@ -322,33 +303,61 @@ namespace BeWo.ViewModel
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
}
}
public DateTime? LastTransferDateTime
{
get
{
var last = TransferProtokolle?.LastOrDefault();
if (LastTransferProtokoll is GkvTransferProtokollDC last)
return last.ErstelltAm;
if (last is null)
return null;
return null;
}
}
public bool IsReady2Send
{
get { return _IsReady2Send; }
set
{
if (!AreDifferent(IsReady2Send, value))
return;
return last.ErstelltAm;
_IsReady2Send = value;
FirePropertyChanged(nameof(IsReady2Send));
}
}
public string SendTooltip
{
get { return _SendTooltip; }
set
{
if (!AreDifferent(SendTooltip, value))
return;
_SendTooltip = value;
FirePropertyChanged(nameof(SendTooltip));
}
}
public void FirePropertyIsReady2CreateChanged()
=> FirePropertyChanged(nameof(IsReady2Create));
public bool IsReady2Create
=> InvoiceBases?.Where(x => x.IsChecked).Any() ?? false;
public static GkvState GetState(GkvAbrechnungVM vm)
public void UpdateByDataContract(GkvAbrechnungDC pDataContract)
{
return GkvAbrechnungExtensions.GetState(
vm,
() => vm.Bezahlt,
() => vm.UrbelegeGesendet,
() => vm.TransferProtokolle,
(x) => x.Fehlerdatum,
(x) => x.Fehlerlevel,
(x) => x.ErstelltAm.Value);
}
GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
Notice = pDataContract.Notice;
Betrag = pDataContract.Betrag;
Bezahlt = pDataContract.Bezahlt;
if (pDataContract.InvoiceBases != null)
{
InvoiceBases2 = pDataContract.InvoiceBases.Select(x => new InvoiceBaseVM(x, true)).ToList();
InvoiceBases = new BindingList<InvoiceBaseVM>(InvoiceBases2);
}
}
protected override void InitByDataContract(GkvAbrechnungDC pDataContract)
{
_AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
@@ -378,6 +387,9 @@ namespace BeWo.ViewModel
}
_Organisation = pDataContract.Organisation;
_IsReady2Send = pDataContract.IsReady2Send;
_SendTooltip = pDataContract.SendTooltip;
}
protected override GkvAbrechnungDC MapToDataContract(GkvAbrechnungDC pDataContract, bool doCommit)
{
@@ -415,7 +427,6 @@ namespace BeWo.ViewModel
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
cb => Application.Current.Dispatch(() => Update(cb)), true);
}
public void Update(GkvAbrechnungSendResponseDC cb)
{
var dc = cb.GkvAbrechnungDC;
@@ -429,13 +440,16 @@ namespace BeWo.ViewModel
GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
TransferProtokolle = dc.TransferProtokolle.ToList();
IsReady2Send = dc.IsReady2Send;
SendTooltip = dc.SendTooltip;
var protokoll = cb.TransferProtokoll;
if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Soft)
if (protokoll.ResultType == GkvTransferResultType.FailSoft)
{
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
}
else if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Fatal)
else if (protokoll.ResultType == GkvTransferResultType.FailFatal)
{
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
}

File diff suppressed because it is too large Load Diff

View File

@@ -5,53 +5,56 @@ using BS.Shared.DataContracts.GkvAbrechnung;
namespace BeWo.ViewModel.ListViewModel
{
public class GkvAbrechnungListVM : AbstractDCListMapperVM<GkvAbrechnungDC, GkvAbrechnungVM>
{
public static string PropertyName_DateTimeSpanFilter = "DateTimeSpanFilter";
public class GkvAbrechnungListVM : AbstractDCListMapperVM<GkvAbrechnungDC, GkvAbrechnungVM>
{
public static string PropertyName_DateTimeSpanFilter = "DateTimeSpanFilter";
public static string PropertyName_FilterResultAmountSum = "FilterResultAmountSum";
public static string PropertyName_FilterResultAmountNotPaidSum = "FilterResultAmountNotPaidSum";
public static string PropertyName_FilterResultAmountSum = "FilterResultAmountSum";
public static string PropertyName_FilterResultAmountNotPaidSum = "FilterResultAmountNotPaidSum";
private DateTimeSpan _DateTimeSpanFilter;
private DateTimeSpan _DateTimeSpanFilter;
public GkvAbrechnungListVM(List<GkvAbrechnungDC> pDCList) : base(pDCList)
{
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
public GkvAbrechnungListVM() : this(null)
{
public GkvAbrechnungListVM(List<GkvAbrechnungDC> pDCList) : base(pDCList)
{
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
public GkvAbrechnungListVM() : this(null)
{
}
}
public DateTimeSpan DateTimeSpanFilter
{
get
{
return this._DateTimeSpanFilter;
}
public DateTimeSpan DateTimeSpanFilter
{
get
{
return this._DateTimeSpanFilter;
}
set
{
if (this.AreDifferent(this._DateTimeSpanFilter, value))
{
this._DateTimeSpanFilter = value;
this.FirePropertyChanged(PropertyName_DateTimeSpanFilter);
}
}
}
set
{
if (this.AreDifferent(this._DateTimeSpanFilter, value))
{
this._DateTimeSpanFilter = value;
this.FirePropertyChanged(PropertyName_DateTimeSpanFilter);
}
}
}
internal void UpdateList(IList<GkvAbrechnungDC> dcList)
{
this.VMList.Clear();
internal void UpdateList(IList<GkvAbrechnungDC> dcList)
{
VMList.Clear();
foreach (var dc in dcList)
{
VMList.Add(CreateVM(dc));
}
if (dcList is object)
foreach (var dc in dcList)
{
VMList.Add(CreateVM(dc));
}
this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
}
FirePropertyChanged(PropertyName_FilterResultAmountSum);
FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
internal void ClearList() => UpdateList(null);
}
}

View File

@@ -769,20 +769,25 @@ namespace BeWo.ViewModel
}
}
public bool IsIKNumberValid
=> DakotaValidator.IsIKNumberValid(IKKrankenkasse)
&& DakotaValidator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
public string IKKrankenkasse
{
get { return this._IKKrankenkasse; }
set
{
if (this.AreDifferent(this._IKKrankenkasse, value))
{
this._IKKrankenkasse = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKKrankenkasse, value), nameof(IKKrankenkasse));
this.FirePropertyChanged(nameof(IKKrankenkasse));
}
}
}
{
if (!AreDifferent(_IKKrankenkasse, value))
return;
_IKKrankenkasse = value;
StoreDirtyInformation(AreDifferent(DataContract.IKKrankenkasse, value), nameof(IKKrankenkasse));
FirePropertyChanged(nameof(IKKrankenkasse));
FirePropertyChanged(nameof(IsIKNumberValid));
}
}
public string IKKostentrager
{
@@ -831,18 +836,19 @@ namespace BeWo.ViewModel
public string Leistungserbringergruppe
{
get { return this._Leistungserbringergruppe; }
get { return _Leistungserbringergruppe; }
set
{
if (this.AreDifferent(this._Leistungserbringergruppe, value))
{
this._Leistungserbringergruppe = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Leistungserbringergruppe, value), nameof(Leistungserbringergruppe));
this.FirePropertyChanged(nameof(Leistungserbringergruppe));
}
}
}
{
if (!AreDifferent(_Leistungserbringergruppe, value))
return;
_Leistungserbringergruppe = value;
StoreDirtyInformation(AreDifferent(DataContract.Leistungserbringergruppe, value), nameof(Leistungserbringergruppe));
FirePropertyChanged(nameof(Leistungserbringergruppe));
FirePropertyChanged(nameof(IsIKNumberValid));
}
}
public string BusinessPartnerId
{
@@ -870,6 +876,8 @@ namespace BeWo.ViewModel
this._Verfahrensstufe = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Verfahrensstufe, value), nameof(Verfahrensstufe));
this.FirePropertyChanged(nameof(Verfahrensstufe));
this.FirePropertyChanged(nameof(VerfahrensstufeInt));
this.FirePropertyChanged(nameof(Echtverfahren));
}
}
}
@@ -884,7 +892,22 @@ namespace BeWo.ViewModel
return;
Verfahrensstufe = (GkvVerfahrensstufe)value;
//FirePropertyChanged(nameof(VerfahrensstufeInt));
}
}
public bool Echtverfahren
{
get { return Verfahrensstufe == GkvVerfahrensstufe.Echt; }
set
{
if (!AreDifferent(Echtverfahren, value))
return;
if (value)
Verfahrensstufe = GkvVerfahrensstufe.Echt;
else
Verfahrensstufe = GkvVerfahrensstufe.Erprobung;
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Validation;
@@ -59,75 +60,84 @@ namespace BeWo.ViewModel
}
}
public ObservableSortCollection<UserRightType> Rights
{
get { return _Rights; }
set
{
if (AreDifferent(_Rights, value))
{
_Rights = value;
_Rights.CollectionChanged += (s, e) => RightsChanged();
RightsChanged();
}
}
}
private void RightsChanged()
{
StoreDirtyInformation(!_Rights.ContainsSameItemsAs(DataContract.Rights), PropertyName_Rights);
FirePropertyChanged(PropertyName_Rights);
FirePropertyChanged(PropertyName_PossibleRights);
}
private Dictionary<Func<UserRightType, bool>, bool> IsTypeFunc2PermissionMapping { get; } = new Dictionary<Func<UserRightType, bool>, bool>()
{
{(r) => r == UserRightType.AdditionalService_View, BeWoApp.Mandator.BeWoClientType == 3 || BeWoApp.AppSettings.ShowAdditionalService},
{IsKalenderRight, BeWoApp.AppSettings.IsSchedulerAllowed },
{IsWohnheimRight, BeWoApp.AppSettings.IsWohnheimAllowed },
{IsSbdRight, BeWoApp.Mandator.AllowSbd},
{IsResourceRight, BeWoApp.AppSettings.ShowRessources},
{IsChatRight, BeWoApp.AppSettings.ShowOwnChat},
{IsChatSettingsRight, BeWoApp.AppSettings.ShowOwnChatSettings},
{IsHiddenRight, false},
{IsMedicationRight, BeWoApp.AppSettings.IsMedicationAllowed},
{IsPivotGridRight, BeWoApp.AppSettings.ShowPivotGrid},
{IsDienstplanungRight, BeWoApp.AppSettings.ShowDienstplanung},
{IsAbwesenheitsPlanungRight, BeWoApp.AppSettings.ShowUrlaubsplanung},
{IsWohnhilfeRight, BeWoApp.AppSettings.ShowWohnhilfe},
{IsGkvAbrechnungRight, BeWoApp.AppSettings.AllowGkvAbrechnung},
{IsUnterschriftRight, false},
{(r) => r == UserRightType.SupportConcept_ImportData, BeWoApp.AppSettings.ShowPersehImport},
{(r) => r == UserRightType.AiChatInZeiterfassung, BeWoApp.AppSettings.ShowAI},
{IsDakotaRight, BeWoApp.AppSettings.AllowGkvAbrechnung},
};
public List<UserRightType> PossibleRights
{
get
{
List<UserRightType> possibleRights = new List<UserRightType>();
//List<UserRightType> nopossibleRights = new List<UserRightType>();
foreach (var r in Utils.GetAllEnumValues<UserRightType>().Except(this._Rights).ToList())
foreach (var right in Utils.GetAllEnumValues<UserRightType>().Except(this._Rights).ToList())
{
if (IsObsoleteRight(r))
{
if (IsObsoleteRight(right))
continue;
}
#if DEBUG
possibleRights.Add(r);
#else
if (r != UserRightType.AdditionalService_View || (BeWoApp.Mandator.BeWoClientType == 3) || BeWoApp.AppSettings.ShowAdditionalService)
{
if (!IsKalenderRight(r) || BeWoApp.AppSettings.IsSchedulerAllowed)
{
if (!IsWohnheimRight(r) || BeWoApp.AppSettings.IsWohnheimAllowed)
{
if (!IsSbdRight(r) || BeWoApp.Mandator.AllowSbd)
{
if (!IsResourceRight(r) || BeWoApp.AppSettings.ShowRessources)
{
if (!IsChatRight(r) || BeWoApp.AppSettings.ShowOwnChat)
{
if (!IsChatSettingsRight(r) || BeWoApp.AppSettings.ShowOwnChatSettings)
{
if (!IsHiddenRight(r))
{
if (!IsMedicationRight(r) || BeWoApp.AppSettings.IsMedicationAllowed)
{
if (!IsPivotGridRight(r) || BeWoApp.AppSettings.ShowPivotGrid)
{
if (!IsDienstplanungRight(r) || BeWoApp.AppSettings.ShowDienstplanung)
{
if (!IsAbwesenheitsPlanungRight(r) || BeWoApp.AppSettings.ShowUrlaubsplanung)
{
if (!IsWohnhilfeRight(r) || BeWoApp.AppSettings.ShowWohnhilfe)
{
if (!IsGkvAbrechnungRight(r) || BeWoApp.AppSettings.AllowGkvAbrechnung)
{
if (!IsUnterschriftRight(r))
{
if (r != UserRightType.SupportConcept_ImportData || BeWoApp.AppSettings.ShowPersehImport)
{
if (r != UserRightType.AiChatInZeiterfassung || BeWoApp.AppSettings.ShowAI)
{
possibleRights.Add(r);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
bool valid = true;
foreach (var item in IsTypeFunc2PermissionMapping)
{
var isTypeFunc = item.Key;
var isType = isTypeFunc(right);
var hasPermission = item.Value;
// valid wird nur false, wenn "r" vom Typ "t" ist und für "t" keine Berechtigung vorliegt
valid &= isType.Implies(hasPermission);
}
#if DEBUG
valid = true;
#endif
if(valid)
possibleRights.Add(right);
//else
//{
// nopossibleRights.Add(right);
//}
}
return possibleRights;
@@ -146,14 +156,12 @@ namespace BeWo.ViewModel
return false;
}
private static bool IsPivotGridRight(UserRightType userRightType)
{
if (userRightType == UserRightType.PivotTabelleAnsehen)
return true;
return false;
}
private static bool IsDienstplanungRight(UserRightType userRightType)
{
if (userRightType == UserRightType.DienstplanungAnsehen
@@ -161,35 +169,30 @@ namespace BeWo.ViewModel
return true;
return false;
}
private static bool IsAbwesenheitsPlanungRight(UserRightType userRightType)
{
if (userRightType == UserRightType.AbwesenheitsPlanungAnsehen)
return true;
return false;
}
private static bool IsMedicationRight(UserRightType userRightType)
{
if (userRightType == UserRightType.Customer_ViewMedication || userRightType == UserRightType.Customer_EditMedication)
return true;
return false;
}
private static bool IsChatRight(UserRightType userRightType)
{
if (userRightType == UserRightType.ChatSettings)
return true;
return false;
}
private static bool IsChatSettingsRight(UserRightType userRightType)
{
if (userRightType == UserRightType.ChatAdminSettings)
return true;
return false;
}
private static bool IsWohnheimRight(UserRightType userRightType)
{
if (userRightType == UserRightType.WohnheimView_Create
@@ -200,7 +203,6 @@ namespace BeWo.ViewModel
return true;
return false;
}
private static bool IsHiddenRight(UserRightType userRightType)
{
if (userRightType == UserRightType.CustomerTeam_View
@@ -210,14 +212,12 @@ namespace BeWo.ViewModel
return true;
return false;
}
private static bool IsSbdRight(UserRightType userRightType)
{
if (userRightType == UserRightType.VertretungenView_View)
return true;
return false;
}
private static bool IsResourceRight(UserRightType userRightType)
{
if (userRightType == UserRightType.
@@ -275,7 +275,6 @@ namespace BeWo.ViewModel
return true;
return false;
}
private static bool IsUnterschriftRight(UserRightType userRightType)
{
if (userRightType == UserRightType.ServiceRecord_AllowCreateAfterEmployeeSignature
@@ -284,21 +283,11 @@ namespace BeWo.ViewModel
return true;
return false;
}
public ObservableSortCollection<UserRightType> Rights
{
get { return _Rights; }
set
{
if (AreDifferent(_Rights, value))
{
_Rights = value;
_Rights.CollectionChanged += (s, e) => RightsChanged();
RightsChanged();
}
}
}
private static bool IsDakotaRight(UserRightType right)
=> right == UserRightType.Finance_Gkv_Create ||
right == UserRightType.Finance_Gkv_Delete ||
right == UserRightType.Finance_Gkv_Send ||
right == UserRightType.Finance_Gkv_View;
protected override void InitByDataContract(UserGroupDC pDataContract)
{
@@ -316,12 +305,5 @@ namespace BeWo.ViewModel
return pDataContract;
}
private void RightsChanged()
{
StoreDirtyInformation(!_Rights.ContainsSameItemsAs(DataContract.Rights), PropertyName_Rights);
FirePropertyChanged(PropertyName_Rights);
FirePropertyChanged(PropertyName_PossibleRights);
}
}
}

View File

@@ -13,13 +13,15 @@
<basicHttpBinding>
<binding name="BeWoBasicEndpoint" closeTimeout="00:05:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None" />
<!--<security mode="None" />-->
<security mode="Transport" />
<!-- mode="Transport" für https und "None" sonst-->
</binding>
<binding name="BeWoStreamingEndpoint" receiveTimeout="10:10:00" sendTimeout="10:01:00" maxBufferSize="65536" maxReceivedMessageSize="67108864" transferMode="StreamedRequest" useDefaultWebProxy="true" messageEncoding="Text">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None" />
<!-- mode="Transport" für https -->
<!--<security mode="None" />-->
<security mode="Transport" />
<!-- mode="Transport" für https und "None" sonst-->
</binding>
<binding name="QueryServiceEndpoint" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />

View File

@@ -43,18 +43,16 @@
</ItemGroup>
<ItemGroup>
<Compile Include="DakotaConfig.cs" />
<Compile Include="DakotaUtils.cs" />
<Compile Include="Logic\DakotaKTDReader.cs" />
<Compile Include="Logic\DakotaManager.cs" />
<Compile Include="Logic\DakotaUtils.cs" />
<Compile Include="Models\Auftragsdatei\Auftragsdatei.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart2.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart3.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart4.cs" />
<Compile Include="Models\DakotaEnums.cs" />
<Compile Include="DakotaExtensions.cs" />
<Compile Include="Models\DakotaException.cs" />
<Compile Include="Models\DakotaFile.cs" />
<Compile Include="DakotaValidator.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart1.cs" />
<Compile Include="Models\Blocke\Block.cs" />
<Compile Include="Models\Blocke\BlockAbrechnungsposition.cs" />

View File

@@ -9,7 +9,7 @@ namespace Dakota
{
public static class DakotaConfig
{
public static string IKAbsender => "109500969";
public static string IKAbsender => "490517618";
public static string TrennzeichenInnerhalb => ":";
public static string Trennzeichen => "+";

View File

@@ -1,10 +1,16 @@
using System;
using BeWo.Data.Entities;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using Dakota.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Logic
namespace Dakota
{
public static class DakotaUtils
{
@@ -48,11 +54,11 @@ namespace Dakota.Logic
{
var len = leistungserbringergruppe.Length;
if(len == 5)
if (len == 5)
{
return "69";
}
else if(len == 7)
else if (len == 7)
{
return leistungserbringergruppe.Substring(0, 2);
}
@@ -80,5 +86,15 @@ namespace Dakota.Logic
throw new ArgumentException($"Leistungserbringergruppe \"{leistungserbringergruppe}\" hat ungültige Anzahl Stellen");
}
}
public static string ClearTextString(string input)
{
foreach (var specialChar in DakotaConfig.SpecialCollection)
{
input = input.Replace(specialChar, DakotaConfig.Aufhebungszeichen + specialChar);
}
return input.Trim();
}
}
}

View File

@@ -1,106 +0,0 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using Dakota.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota
{
public static class DakotaValidator
{
public static string ClearTextString(string input)
{
foreach (var specialChar in DakotaConfig.SpecialCollection)
{
input = input.Replace(specialChar, DakotaConfig.Aufhebungszeichen + specialChar);
}
return input.Trim();
}
/// <summary>
/// Validiert in erster Phase den Mandator.
/// </summary>
public static void ValidateMandator(MandatorDC mandatordc)
{
if (mandatordc == null)
throw new DakotaException("Mandator ist null");
if (!ValidateIKNumber(mandatordc.IKLeistungserbringer))
throw new DakotaException($"Die IK Nummer des Leistungserbringers \"{mandatordc.IKLeistungserbringer}\" ist ungültig.");
}
/// <summary>
/// Validiert in zweiter Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
/// </summary>
public static void ValidateCustomer(CustomerDC customerDC)
{
string error = null;
if (customerDC == null)
error = "Customer ist null";
else if (!ValidateVersichertenstatus(customerDC.VersichertenStatus))
error = $"Klient/in \"{customerDC.LastName}, {customerDC.FirstName}\" hat keinen gültigen Versichertenstatus";
if (error != null)
throw new DakotaException(error);
}
public static void ValidateOrganisation(Organisation orga)
{
string error = null;
if (orga == null)
error = "Organisation ist null";
else if (!ValidateLeistungserbringergruppe(orga.Leistungserbringergruppe))
error = $"Die Organisation \"{orga.Name}\" hat keine gültige Leistungserbringergruppe: \"{orga.Leistungserbringergruppe}\". Erwarten werden 5 Stellen für das Tarifkennzeichen alleine oder 7 Stellen für den Abrechnungscode und für das Tarifkennzeichen zusammen.";
else if (!ValidateIKNumber(orga.IKKrankenkasse))
error = $"Die Organisation \"{orga.Name}\" hat kein gültiges IK Kennzeichen: \"{orga.IKKrankenkasse}\".";
if (error != null)
throw new DakotaException(error);
}
public static bool ValidateOrganisationInformations(Organisation orga)
=> ValidateIKNumbers(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse) && !string.IsNullOrEmpty(orga.BezDatenannahmestelle);
private static bool ValidateIKNumbers(params string[] iks)
=> iks?.All(ValidateIKNumber) ?? false;
private static bool ValidateIKNumber(string iknummer)
{
if (iknummer == null)
return false;
if (iknummer.Length != 9)
return false;
return int.TryParse(iknummer, out int x);
}
private static bool ValidateVersichertenstatus(string status)
{
if (status == null)
return false;
if (status.Length != 5 && status.Length != 7)
return false;
return true;
}
private static bool ValidateLeistungserbringergruppe(string code)
{
if (code == null)
return false;
if (code.Length != 5 && code.Length != 7)
return false;
return true;
}
}
}

View File

@@ -1,4 +1,5 @@
using Dakota.Models;
using BS.Shared.Exceptions;
using Dakota.Models;
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente.KTD;
using System;
@@ -102,7 +103,7 @@ namespace Dakota.Logic
if (datenannahmestellen_3.Count() == 1)
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
throw new DakotaException($"Keine oder mehrere Datenannahmestellen für {ikkrankenkasse} gefunden.");
throw new GkvException($"Keine oder mehrere Datenannahmestellen für {ikkrankenkasse} gefunden.");
}
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)

View File

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

View File

@@ -1,4 +1,5 @@
using Dakota.Models.Schlüssels;
using BS.Shared.Exceptions;
using Dakota.Models.Schlüssels;
using System;
namespace Dakota.Models.Daten
@@ -36,7 +37,7 @@ namespace Dakota.Models.Daten
if (Feldart == Feldart.Muss)
{
// Auffüllen
throw new DakotaException($"Das Feld \"{Title}\" muss gefüllt sein!");
throw new GkvException($"Das Feld \"{Title}\" muss gefüllt sein!");
}
else
{
@@ -50,11 +51,11 @@ namespace Dakota.Models.Daten
{
if(_Value.Length < MinStellen)
{
throw new DakotaException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
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 DakotaException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
}
@@ -89,15 +90,15 @@ namespace Dakota.Models.Daten
if (value.Length < MinStellen)
{
throw new DakotaException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
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 DakotaException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
var mod_value = DakotaValidator.ClearTextString(value);
var mod_value = DakotaUtils.ClearTextString(value);
_Value = mod_value;
}

View File

@@ -1,4 +1,5 @@
using BS.Shared.Extensions;
using BS.Shared.Exceptions;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -27,7 +28,7 @@ namespace Dakota.Models.Schlüssels
var schlüssel = GetSchlüssel(list, str);
if (schlüssel is null)
throw new DakotaException($"KTDVerarbeitungskennzeichen {str} nicht gefunden.");
throw new GkvException($"KTDVerarbeitungskennzeichen {str} nicht gefunden.");
return schlüssel;
}

View File

@@ -11,5 +11,6 @@
<add key="DakotaFolder" value="C:\dakotale\" />
<add key="ProcessWaitForExitMs" value="10000" />
<add key="LogPath" value="C:\GkvAbrechnung\Sender\log.txt" />
<add key="GkvSecretKey" value="DfDGNGn72PKfSYxSUsmRdzuBtpR9novewlmYU3gsjiFgSkaZZeylUXlbO42cWNqiKgLdMUFtWUNZT962F1raQDR7HGUzCNYsFeC" />
</appSettings>
</configuration>

65
DakotaSender/Config.cs Normal file
View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DakotaSender
{
internal static class Config
{
public static string GkvSecretKey { get; set; } = ConfigurationManager.AppSettings.Get("GkvSecretKey");
public static string LogPath { get; }
= ConfigurationManager.AppSettings.Get("LogPath") ?? @"C:\GkvAbrechnung\Sender\log.txt";
public static int ProcessWaitForExitMs { get; }
= int.Parse(ConfigurationManager.AppSettings.Get("ProcessWaitForExitMs") ?? "10000");
public static FileInfo DakotaExe { get; }
= new FileInfo(ConfigurationManager.AppSettings.Get("DakotaExePath") ?? @"C:\Program Files (x86)\ITSG\dakotale\dakota30.exe");
public static DirectoryInfo DakotaFolder { get; }
= new DirectoryInfo(ConfigurationManager.AppSettings.Get("DakotaFolder") ?? @"C:\dakotale\");
public static DirectoryInfo QueueFolder { get; }
= new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath") ?? @"C:\GkvAbrechnung\Queue\");
public static DirectoryInfo ResultFolder { get; }
= new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath") ?? @"C:\GkvAbrechnung\Results\");
public static DirectoryInfo FailedFolder { get; }
= new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungFailedFolderPath") ?? @"C:\GkvAbrechnung\Failed\");
public static bool IsDatenannahmestelleValid(string datenannahmestelle)
{
try
{
_ = LoadDatenannahmestelleFolder(datenannahmestelle);
}
catch (Exception)
{
return false;
}
return true;
}
public static DirectoryInfo LoadDatenannahmestelleFolder(string datenannahmestelle)
{
var folder = new DirectoryInfo(Path.Combine(Config.DakotaFolder.FullName, "TP5Daten", datenannahmestelle));
if (!folder.Exists)
folder = new DirectoryInfo(Path.Combine(Config.DakotaFolder.FullName, "TP5Daten", datenannahmestelle.Substring(0, datenannahmestelle.Length - 1)));
if (!folder.Exists)
throw new Exception($"Datenannahmestelle {datenannahmestelle} konnte nicht gefunden werden.");
return folder;
}
public static DirectoryInfo GetResultTenantFolder(string tenant)
{
var dirinfo = new DirectoryInfo(Path.Combine(Config.ResultFolder.FullName, tenant));
if (!dirinfo.Exists)
dirinfo.Create();
return dirinfo;
}
}
}

View File

@@ -44,8 +44,10 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Config.cs" />
<Compile Include="FileController.cs" />
<Compile Include="Returncodes.cs" />
<Compile Include="DakotaSystemFile.cs" />
<Compile Include="FehlerXml.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="XmlFileConverter.cs" />
@@ -53,5 +55,11 @@
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -11,6 +11,7 @@ namespace DakotaSender
{
public string Tenant { get; set; }
public long ProtokollOid { get; set; }
public long ApplicationUserOid { get; set; }
public string Datenannahmestelle { get; set; }
public string Transfername { get; set; }
public string TransfernameAuf => Transfername + ".auf";

View File

@@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace DakotaSender
{
[Serializable()]
[XmlRoot("Fehler")]
public class FehlerXml
{
[XmlAttribute("Oid")]
public long Oid { get; set; }
[XmlElement("Titel")]
public string Titel { get; set; }
[XmlElement("Datum")]
public DateTime? Datum { get; set; }
[XmlElement("Nachricht")]
public string Nachricht { get; set; }
[XmlElement("Level")]
public int Level { get; set; }
}
}

View File

@@ -0,0 +1,80 @@
using BS.Shared.DataContracts.GkvAbrechnung;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DakotaSender
{
internal static class FileController
{
internal static void CopyFileToFailed(DakotaSystemFile file)
{
var failed_folder = Config.FailedFolder;
CopyFileTo(file.SourceAuftragsdatei, failed_folder.FullName);
CopyFileTo(file.SourceNutzdatendatei, failed_folder.FullName);
}
internal static void CopyFileToDestination(DakotaSystemFile file)
{
var folder = Config.LoadDatenannahmestelleFolder(file.Datenannahmestelle);
CopyFileTo(file.SourceAuftragsdatei, folder.FullName, file.TransfernameAuf);
CopyFileTo(file.SourceNutzdatendatei, folder.FullName, file.Transfername);
}
internal static void CopyFileTo(FileSystemInfo file, string destination_folder, string file_name = null)
{
if (file_name is null)
file_name = file.Name;
CopyFile(file.FullName, Path.Combine(destination_folder, file_name));
}
internal static void CopyFile(string source, string destination)
{
Program.Print($"Kopiere \"{source}\" nach \"{destination}\". ");
File.Copy(source, destination);
Program.PrintLine("Ok.");
}
internal static void DeleteQueueFile(DakotaSystemFile file)
{
DeleteFile(file.SourceAuftragsdatei.FullName);
DeleteFile(file.SourceNutzdatendatei.FullName);
}
internal static void DeleteDakotaFile(DakotaSystemFile file)
{
var folder = Config.LoadDatenannahmestelleFolder(file.Datenannahmestelle).FullName;
DeleteFile(Path.Combine(folder, file.TransfernameAuf));
DeleteFile(Path.Combine(folder, file.Transfername));
}
internal static void DeleteFile(string file)
{
Program.Print($"Lösche {file}. ");
File.Delete(file);
Program.PrintLine("Ok.");
}
internal static void SaveAsXmlFileInResultFolder(GkvServerResultDC result, string tenant, long user)
{
Program.Print($"Speichere Protokoll \'{result.ProtokollOid}\' als Xml. ");
var xml = GkvServerResultXml.ToXml(result, user);
var folder = Config.GetResultTenantFolder(tenant).FullName;
var path = Path.Combine(folder, $"P{result.ProtokollOid}.xml");
Program.Print($"Path: {path}. ");
XmlFileConverter.Save(xml, path);
Program.PrintLine("Ok.");
}
}
}

View File

@@ -1,4 +1,9 @@
using System;
using BS.Shared;
using BS.Shared.AppSender;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
@@ -10,391 +15,432 @@ using System.Threading.Tasks;
namespace DakotaSender
{
class Program
{
const int RC_DAKOTA_ALREADY_LOADED = 18;
static readonly string TEST_TENANT = "7375324044";
static int[] AcceptStatusCodes = new int[] { 0 };
static int[] AcceptSendCodes = new int[] { 0 };
static bool time_in_line = false;
static void Main(string[] args)
{
FileStream filestream = new FileStream(GetLogPath(), FileMode.Append);
var streamwriter = new StreamWriter(filestream);
streamwriter.AutoFlush = true;
Console.SetOut(streamwriter);
Console.SetError(streamwriter);
try
{
PrintTitle();
CheckDakotaStatus();
ProcessFiles();
}
catch (Exception e)
{
PrintLine(e.ToString());
}
PrintEnd();
}
static void PrintTitle()
{
PrintWithTime("\n", false);
PrintLine("-------------------");
PrintLine("Dakota Sender Modul");
PrintLine("-------------------");
}
static void PrintEnd()
{
PrintLine("Ende");
PrintLine("-------------------");
}
static void PrintLine() => PrintLine(null);
static void PrintLine(string line)
{
PrintWithTime(line + "\n", !time_in_line);
time_in_line = false;
}
static void Print(string line)
{
PrintWithTime(line, !time_in_line);
time_in_line = true;
}
static void PrintWithTime(string line, bool showTime)
{
if (showTime)
Console.Write($"[{DateTime.Now:dd.MM.yy HH:mm:ss.fff}] {line}");
else
Console.Write(line);
}
static void PrintFileInfo(DakotaSystemFile file)
{
PrintLine($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
PrintLine($"- Tenant: {file.Tenant}");
PrintLine($"- Protokoll Oid: {file.ProtokollOid}");
PrintLine($"- Datenannahmestelle: {file.Datenannahmestelle}");
}
static void CheckDakotaStatus()
{
PrintLine("Überprüfe Dakota Status");
var code = ExecuteDakota("-s");
if (AcceptStatusCodes.Contains(code))
{
PrintLine("Ok");
}
else
{
throw new Exception($"Statuscode {code} wird nicht akzeptiert");
}
}
static void ProcessFiles()
{
PrintLine("Scanne Dakota Dateien");
var toCheck = ScanQueueFolder();
if (toCheck is null)
{
PrintLine("Keine Dakota Dateien gefunden.");
return;
}
var testCheck = toCheck.TryGetValue(TEST_TENANT, out var files);
if (!testCheck)
{
PrintLine($"Keine Dakota Dateien für {TEST_TENANT} gefunden.");
return;
}
foreach (var file in files)
{
TryProcessFile(file);
CheckDakotaStatus();
}
}
static Dictionary<string, List<DakotaSystemFile>> ScanQueueFolder()
{
var queue = GetQueueFolder();
var files = queue.GetFiles("*.auf", SearchOption.TopDirectoryOnly);
var toCheck = new Dictionary<string, List<DakotaSystemFile>>();
foreach (var auft in files)
{
var nutz_fullname = auft.FullName.Substring(0, auft.FullName.Length - 4);
var nutz = new FileInfo(nutz_fullname);
if (!nutz.Exists)
{
PrintLine($"{auft.FullName} wird ignoriert. {nutz.FullName} nicht vorhanden");
continue;
}
PrintLine($"{auft.FullName} gefunden.");
var split = nutz.Name.Split('_');
var tenant = split[0];
var p_oid = long.Parse(split[1]);
var datenannahmestelle = split[2];
var transfername = split[3];
if (tenant != TEST_TENANT && tenant != "demo")
{
PrintLine($"{auft.FullName} wird ignoriert. Tenant {tenant} nicht gültig.");
continue;
}
else
{
tenant = TEST_TENANT;
}
var file = new DakotaSystemFile()
{
SourceAuftragsdatei = auft,
SourceNutzdatendatei = nutz,
Tenant = tenant,
ProtokollOid = p_oid,
Datenannahmestelle = datenannahmestelle,
Transfername = transfername,
};
if (!toCheck.ContainsKey(tenant))
toCheck.Add(tenant, new List<DakotaSystemFile>());
toCheck[tenant].Add(file);
}
return toCheck.Any() ? toCheck : null;
}
static void TryProcessFile(DakotaSystemFile file)
{
string error;
bool copied = false;
try
{
error = ProcessFile(file, out copied);
}
catch (Exception e)
{
error = e.ToString();
}
if (error is string)
{
PrintLine(error);
MoveQueueToFailed(file);
if (copied)
DeleteDakotaFile(file);
CreateResultXmlFile(file, error);
}
}
static string ProcessFile(DakotaSystemFile file, out bool copied)
{
copied = false;
PrintFileInfo(file);
if (!IsDakotaFolderDatenannahmestelleValid(file.Datenannahmestelle))
return "Datenannahmestelle unbekannt.";
CopyFileToDestination(file);
copied = true;
Print("Sende via Dakota. ");
var code = ExecuteDakota("-x");
if (code == RC_DAKOTA_ALREADY_LOADED)
{
PrintLine($"Verarbeitung fehlgeschlagen. Dakota läuft bereits.");
PrintLine("Ignoriere Verarbeitung aktuell. Versuche im nächsten Programm Aufruf erneut.");
DeleteDakotaFile(file);
return null;
}
if (!AcceptSendCodes.Contains(code))
return $"Verarbeitung fehlgeschlagen. Statuscode {code} wird nicht akzeptiert.";
PrintLine($"Ok.");
DeleteQueueFile(file);
return null;
}
static void CreateResultXmlFile(DakotaSystemFile file, string error)
{
Print("Speichere Fehler als Xml. ");
var fehler = new FehlerXml();
fehler.Datum = DateTime.Now;
fehler.Titel = "Dakota Fehler";
fehler.Nachricht = error;
fehler.Level = 1;
fehler.Oid = file.ProtokollOid;
var folder = GetResultFolderTenant(file.Tenant).FullName;
var path = Path.Combine(folder, $"P{file.ProtokollOid}.xml");
Print($"Path: {path}");
XmlFileConverter.Save(fehler, path);
PrintLine("Ok.");
}
static void MoveQueueToFailed(DakotaSystemFile file)
{
CopyFileToFailed(file);
DeleteQueueFile(file);
}
static void CopyFileToFailed(DakotaSystemFile file)
{
var failed_folder = GetFailedFolder();
CopyFileTo(file.SourceAuftragsdatei, failed_folder.FullName);
CopyFileTo(file.SourceNutzdatendatei, failed_folder.FullName);
}
static void CopyFileToDestination(DakotaSystemFile file)
{
var folder = GetDakotaFolderDatenannahmestelle(file.Datenannahmestelle);
CopyFileTo(file.SourceAuftragsdatei, folder.FullName, file.TransfernameAuf);
CopyFileTo(file.SourceNutzdatendatei, folder.FullName, file.Transfername);
}
static void CopyFileTo(FileSystemInfo file, string destination_folder, string file_name = null)
{
if (file_name is null)
file_name = file.Name;
CopyFile(file.FullName, Path.Combine(destination_folder, file_name));
}
static void CopyFile(string source, string destination)
{
Print($"Kopiere \"{source}\" nach \"{destination}\". ");
File.Copy(source, destination);
PrintLine("Ok.");
}
static void DeleteQueueFile(DakotaSystemFile file)
{
DeleteFile(file.SourceAuftragsdatei.FullName);
DeleteFile(file.SourceNutzdatendatei.FullName);
}
static void DeleteDakotaFile(DakotaSystemFile file)
{
var folder = GetDakotaFolderDatenannahmestelle(file.Datenannahmestelle).FullName;
DeleteFile(Path.Combine(folder, file.TransfernameAuf));
DeleteFile(Path.Combine(folder, file.Transfername));
}
static void DeleteFile(string file)
{
Print($"Lösche {file}. ");
File.Delete(file);
PrintLine("Ok.");
}
static int ExecuteDakota(string arg)
{
var fileinfo = GetDakotaExe();
PrintLine($"{fileinfo.Name} {arg} wird ausgeführt");
var process = Process.Start(GetDakotaExe().FullName, arg);
var success = process.WaitForExit(GetProcessWaitForExitMs());
if (success)
{
var exitcode = process.ExitCode;
PrintLine($"Returncode {exitcode}");
return exitcode;
}
else
{
throw new Exception("Timeout");
}
}
static bool IsDakotaFolderDatenannahmestelleValid(string datenannahmestelle)
{
try
{
_ = GetDakotaFolderDatenannahmestelle(datenannahmestelle);
return true;
}
catch (Exception e)
{
return false;
}
}
static DirectoryInfo GetDakotaFolderDatenannahmestelle(string datenannahmestelle)
{
var folder = new DirectoryInfo(Path.Combine(GetDakotaFolder().FullName, "TP5Daten", datenannahmestelle));
if (!folder.Exists)
folder = new DirectoryInfo(Path.Combine(GetDakotaFolder().FullName, "TP5Daten", datenannahmestelle.Substring(0, datenannahmestelle.Length - 1)));
if (!folder.Exists)
throw new Exception($"Datenannahmestelle {datenannahmestelle} konnte nicht gefunden werden.");
return folder;
}
static DirectoryInfo GetResultFolderTenant(string tenant)
{
var dirinfo = new DirectoryInfo(Path.Combine(GetResultFolder().FullName, tenant));
if (!dirinfo.Exists)
dirinfo.Create();
return dirinfo;
}
static string GetLogPath()
=> ConfigurationManager.AppSettings.Get("LogPath") ?? @"C:\GkvAbrechnung\Sender\log.txt";
static int GetProcessWaitForExitMs()
=> int.Parse(ConfigurationManager.AppSettings.Get("ProcessWaitForExitMs") ?? "10000");
static FileInfo GetDakotaExe()
=> new FileInfo(ConfigurationManager.AppSettings.Get("DakotaExePath") ?? @"C:\Program Files (x86)\ITSG\dakotale\dakota30.exe");
static DirectoryInfo GetDakotaFolder()
=> new DirectoryInfo(ConfigurationManager.AppSettings.Get("DakotaFolder") ?? @"C:\dakotale\");
static DirectoryInfo GetQueueFolder()
=> new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath") ?? @"C:\GkvAbrechnung\Queue\");
static DirectoryInfo GetResultFolder()
=> new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath") ?? @"C:\GkvAbrechnung\Results\");
static DirectoryInfo GetFailedFolder()
=> new DirectoryInfo(ConfigurationManager.AppSettings.Get("GkvAbrechnungFailedFolderPath") ?? @"C:\GkvAbrechnung\Failed\");
}
class Program
{
static readonly string TEST_TENANT = "5000000000";
static readonly string TEST_TENANT_2 = "7375324044";
static bool time_in_line = false;
static bool is_dakota_running = false;
static Dictionary<string, Dictionary<long, GkvClientResultRequestDC>> ten2user2req;
static void Main(string[] args)
{
FileStream filestream = new FileStream(Config.LogPath, FileMode.Append);
var streamwriter = new StreamWriter(filestream);
streamwriter.AutoFlush = true;
Console.SetOut(streamwriter);
Console.SetError(streamwriter);
try
{
PrintTitle();
CheckDakotaStatus();
HandleQueueFiles();
HandleResults();
}
catch (Exception e)
{
PrintException(e);
if (is_dakota_running)
{
PrintSeperator();
PrintLine($"Verarbeitung im Silent Modus fehlgeschlagen. dakota30.exe läuft (bereits).");
PrintLine("Ignoriere Verarbeitung aktuell. Versuche im nächsten Programm Aufruf erneut.");
}
PrintSeperator();
}
PrintEnd();
}
internal static void PrintTitle()
{
PrintLine();
PrintSeperator();
PrintLine("Dakota Sender Modul");
PrintSeperator();
}
internal static void PrintSeperator() => PrintLine("-------------------");
internal static void PrintEnd()
{
PrintLine("Ende");
PrintSeperator();
}
internal static void PrintLine() => PrintWithTime("\n", false);
internal static void PrintLine(string line)
{
PrintWithTime(line + "\n", !time_in_line);
time_in_line = false;
}
internal static void Print(string line)
{
PrintWithTime(line, !time_in_line);
time_in_line = true;
}
internal static void PrintWithTime(string line, bool showTime)
{
if (showTime)
Console.Write($"[{DateTime.Now:dd.MM.yy HH:mm:ss.fff}] {line}");
else
Console.Write(line);
}
internal static void PrintFileInfo(DakotaSystemFile file)
{
Print($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
PrintLine($"(T:{file.Tenant}, U:{file.ApplicationUserOid}, P:{file.ProtokollOid}, D:{file.Datenannahmestelle})");
}
internal static void PrintException(Exception e) => PrintLine(e.ToString());
static void CheckDakotaStatus()
{
PrintLine("Überprüfe Dakota Status:");
var code = ExecuteDakota("-s");
Returncodes.EvaluateStatusCode(code, out is_dakota_running, out bool accept, out string message);
if (accept)
{
PrintLine(message);
}
else
{
throw new Exception($"Statuscode {code} wird nicht akzeptiert. {message}");
}
PrintSeperator();
}
static Dictionary<string, Dictionary<string, List<DakotaSystemFile>>> ScanQueueFolder()
{
var queue = Config.QueueFolder;
var files = queue.GetFiles("*.auf", SearchOption.TopDirectoryOnly)
.OrderBy(x => x.FullName);
var ten2dat2files = new Dictionary<string, Dictionary<string, List<DakotaSystemFile>>>();
foreach (var auft in files)
{
var file = ScanQueueFile(auft);
if (file is null)
continue;
var tenant = file.Tenant;
var datenannahmestelle = file.Datenannahmestelle;
if (!ten2dat2files.ContainsKey(tenant))
ten2dat2files.Add(tenant, new Dictionary<string, List<DakotaSystemFile>>());
var dat2files = ten2dat2files[tenant];
if (!dat2files.ContainsKey(datenannahmestelle))
dat2files.Add(datenannahmestelle, new List<DakotaSystemFile>());
ten2dat2files[tenant][datenannahmestelle].Add(file);
}
if (ten2dat2files.Any())
return ten2dat2files;
PrintLine("Keine gültigen Dakota Dateien in Queue gefunden.");
return null;
}
static DakotaSystemFile ScanQueueFile(FileInfo auft)
{
try
{
var nutz_fullname = auft.FullName.Substring(0, auft.FullName.Length - 4);
var nutz = new FileInfo(nutz_fullname);
if (!nutz.Exists)
{
PrintLine($"{auft.FullName} wird ignoriert. {nutz.FullName} nicht vorhanden");
return null;
}
PrintLine($"- {auft.FullName}");
var split = nutz.Name.Split('_');
var tenant = split[0];
var app_oid = long.Parse(split[1]);
var p_oid = long.Parse(split[2]);
var datenannahmestelle = split[3];
var transfername = split[4];
// Muss nachher nur entfernt werden, um andere zu testen
// Ggf Tool einbauen?
if (tenant != TEST_TENANT && tenant != TEST_TENANT_2)
{
PrintLine($"{auft.FullName} wird ignoriert. Tenant {tenant} nicht gültig.");
return null;
}
var file = new DakotaSystemFile()
{
SourceAuftragsdatei = auft,
SourceNutzdatendatei = nutz,
Tenant = tenant,
ProtokollOid = p_oid,
ApplicationUserOid = app_oid,
Datenannahmestelle = datenannahmestelle,
Transfername = transfername,
};
return file;
}
catch(Exception e)
{
PrintException(e);
}
return null;
}
static void HandleQueueFiles()
{
PrintLine("Scanne Dakota Dateien:");
var ten2dat2files = ScanQueueFolder();
PrintSeperator();
if (ten2dat2files is null)
{
return;
}
ten2user2req = new Dictionary<string, Dictionary<long, GkvClientResultRequestDC>>();
PrintLine("Bearbeite Queue");
PrintSeperator();
foreach (var kv in ten2dat2files)
{
var ten = kv.Key;
var dat2files = kv.Value;
foreach (var kv2 in dat2files)
{
var dat = kv2.Key;
var files = kv2.Value;
PrintLine($"Bearbeite Datenannahmestelle \'{dat}\' für Tenant \'{ten}\':");
HandleQueueFiles(files);
PrintSeperator();
CheckDakotaStatus();
}
}
PrintLine("Bearbeitung Queue beendet");
PrintSeperator();
}
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)
{
PrintLine(msg);
Add2Results(file, GkvTransferResultType.Success);
}
else
{
error = true;
PrintLine("Fehler gefunden. " + msg);
Add2Results(file, GkvTransferResultType.FailSoft, msg, "DS:Fehler");
FileController.CopyFileToFailed(file);
}
}
else
{
PrintLine($"Folgefehler: {file.SourceNutzdatendatei.Name}");
Add2Results(file, GkvTransferResultType.FailFollowUp, "Wird neu erstellt und übertragen.", "DS:Folgefehler");
}
FileController.DeleteQueueFile(file);
}
}
/// <summary>
/// Bearbeitet eine File. Wenn dakota.exe während der Bearbeitung gestartet wird, wird das Dakota Verzeichnis gesäubert und die weitere Bearbeitung durch throw Exception unterbrochen.
/// </summary>
/// <param name="file"></param>
/// <param name="success"></param>
/// <returns></returns>
static string HandleQueueFile(DakotaSystemFile file, out bool success)
{
success = false;
PrintFileInfo(file);
if (!Config.IsDatenannahmestelleValid(file.Datenannahmestelle))
return $"Datenannahmestelle {file.Datenannahmestelle} unbekannt.";
FileController.CopyFileToDestination(file);
Print("Sende via Dakota. ");
var rc = ExecuteDakota("-x");
Returncodes.EvaluateSendCode(rc, out is_dakota_running, out success, out string message);
if (!success)
{
FileController.DeleteDakotaFile(file);
}
if (is_dakota_running)
{
throw new Exception();
}
return message;
}
static void Add2Results(DakotaSystemFile file, GkvTransferResultType type, string nachricht = null, string title = null)
{
var tenant = file.Tenant;
var user = file.ApplicationUserOid;
if (!ten2user2req.ContainsKey(tenant))
ten2user2req.Add(tenant, new Dictionary<long, GkvClientResultRequestDC>());
var user2req = ten2user2req[tenant];
if (!user2req.ContainsKey(user))
user2req.Add(user, new GkvClientResultRequestDC()
{
UserOid = file.ApplicationUserOid,
Tenant = file.Tenant,
GkvSecretKey = Config.GkvSecretKey
});
var req = user2req[user];
if (req.ResultDCs is null)
req.ResultDCs = new List<GkvServerResultDC>();
var item = new GkvServerResultDC();
item.Datum = DateTime.Now;
item.Nachricht = nachricht;
item.ProtokollOid = file.ProtokollOid;
item.ResultType = type;
item.Titel = title;
req.ResultDCs.Add(item);
}
static void HandleResults()
{
PrintLine("Sende Ergebnisse:");
PrintSeperator();
if (ten2user2req is null || !ten2user2req.Any())
return;
var task = HandleResultsAsync();
task.Wait();
if (task.IsFaulted)
throw task.Exception;
}
static async Task HandleResultsAsync()
{
var tasks = new List<Task>();
foreach (var tenant in ten2user2req.Keys)
{
foreach (var user in ten2user2req[tenant].Keys)
{
var req = ten2user2req[tenant][user];
var task = HandleResult(req, tenant, user);
tasks.Add(task);
}
}
await Task.WhenAll(tasks);
}
static async Task HandleResult(GkvClientResultRequestDC req, string tenant, long user)
{
var res = new GkvResponseDC(false, "empty");
try
{
PrintLine($"Sende Ergebnis an: Tenant: {req.Tenant}, User; {req.UserOid}");
res = await GkvSender.SendKundenAppClientRequestAsync<GkvClientResultRequestDC, GkvResponseDC>(req, tenant, user);
if (res.Success)
PrintLine("Erfolgreich!");
else
PrintLine("Fehler: " + res.Message);
}
catch (GkvException e)
{
PrintException(e);
}
catch (Exception e)
{
PrintException(e);
}
PrintSeperator();
if (res.Success)
return;
foreach (var result in req.ResultDCs)
{
FileController.SaveAsXmlFileInResultFolder(result, tenant, user);
}
PrintSeperator();
}
static int ExecuteDakota(string arg)
{
var fileinfo = Config.DakotaExe;
PrintLine($"{fileinfo.Name} {arg} wird ausgeführt");
var process = Process.Start(Config.DakotaExe.FullName, arg);
var success = process.WaitForExit(Config.ProcessWaitForExitMs);
if (success)
{
return process.ExitCode;
}
else
{
throw new Exception($"dakota30.exe - Timeout exceeded ({Config.ProcessWaitForExitMs} ms). ");
}
}
}
}

111
DakotaSender/Returncodes.cs Normal file
View File

@@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DakotaSender
{
internal static class Returncodes
{
const int RC_DAKOTA_ALREADY_LOADED = 18;
static readonly int[] AcceptStatusCodes = new int[] { 0, 1, 100, 101 };
static readonly int[] AcceptSendCodes = new int[] { 0, 1 };
static readonly Dictionary<int, string> StatusReturncodeToMeaning = new Dictionary<int, string>()
{
{0, "dakota ist betriebsbereit. "},
{6, "dakota konnte die Verbindung aufbauen. Stammdatenserver ist online und die Anfrage an den Stammdatenserver zu einem Fehler führt z.b \'die Lizenz ist ungültig!\' "},
{10, "dakota ist registriert, aber noch nicht betriebsbereit. "},
{30, "dakota ist nicht registriert. "},
{40, "Die Verbindung zum Stammdatenserver war nicht möglich. "},
{41, "Die Verbindung zum Stammdatenserver war wiederholt nicht möglich. "},
{50, "Der Stammdatenserver wurde seit mehr als 10, Tagen nicht erreicht und daher wurde die Lizenz gesperrt. "},
{100, "Es ist seit x-Tagen kein Stammdatenupdate durchgeführt worden. dakota wurde ohne Fehler beendet. "},
{90, "Es liegt ein fertiges Zertifikat vor und es wurde erfolgreich ein Nachfolgezertifikat beantragt. "},
{91, "Es liegt ein fertiges Zertifikat vor und es wurde erfolgreich ein Nachfolgezertifikat beantragt. Das aktive Zertifikat läuft in der angegebenen Frist ab. "},
{101, "Es ist seit x-Tagen kein Stammdatenupdate durchgeführt worden und das Zertifikat läuft in der angegebenen Frist ab. dakota wurde ohne Fehler beendet. "},
{200, "Es ist seit x-Tagen keine Schlüsselsicherung durchgeführt worden. dakota wurde ohne Fehler beendet. "},
{201, "Es ist seit x-Tagen keine Schlüsselsicherung durchgeführt worden und das Zertifikat läuft in der angegebenen Frist ab. dakota wurde ohne Fehler beendet. "},
{300, "Es ist seit x-Tagen kein Stammdatenupdate und keine Schlüsselsicherung durchgeführt worden. dakota wurde ohne Fehler beendet. "},
{301, "Es ist seit x-Tagen kein Stammdatenupdate und keine Schlüsselsicherung durchgeführt worden und das Zertifikat läuft in der angegebenen Frist ab. dakota wurde ohne Fehler beende " },
};
static readonly Dictionary<int, string> SendReturncodeToMeaning = new Dictionary<int, string>()
{
{0, "Alle Dateien wurden verarbeitet. " },
{1, "Alle Dateien wurden verarbeitet und das Zertifikat läuft in der angegebenen Frist ab. "},
{2, "Es sind keine Daten zur Verarbeitung vorhanden. "},
{3, "Es sind keine Daten zur Verarbeitung vorhanden und das Zertifikat läuft in der angegebenen Frist ab. "},
{4, "Eine oder mehrere Dateien konnten nicht verarbeitet werden. "},
{5, "Eine oder mehrere Dateien konnten nicht verarbeitet werden und das Zertifikat läuft in der angegebenen Frist ab. "},
};
static readonly Dictionary<int, string> ExecuteModusReturnCodes2Meaning = new Dictionary<int, string>()
{
{0, "Alle Dateien verarbeitet, bzw. Schlüssel erfolgreich eingelesen, bzw. alle Dateien erfolgreich entschlüsselt, ohne Fehler beendet. "},
{1, "Alle Dateien verarbeitet, Zertifikat läuft in der angegebenen Frist ab, ohne Fehler beendet. "},
{2, "Keine Daten zur Verarbeitung bzw. keine Daten zur Entschlüsselung vorhanden, ohne Fehler beendet. "},
{3, "Keine Daten zur Verarbeitung vorhanden, ohne Fehler beendet, Zertifikat läuft in der angegebenen Frist ab. "},
{4, "Eine oder mehrere Dateien konnten nicht verarbeitet bzw. entschlüsselt werden, siehe Protokoll, ohne Fehler beendet. "},
{5, "Eine oder mehrere Dateien konnten nicht verarbeitet werden, Zertifikat läuft in der angegebenen Frist ab, ohne Fehler beendet. "},
{6, "Aktion vom Anwender abgebrochen (Achtung: Im Kurzprotokoll-Modus normal). "},
{7, "Aktion vom Anwender abgebrochen, Zertifikat läuft in der angegebenen Frist ab. "},
{9, "Antrag am Trust Center gestellt, noch nicht schlüsselfertig (tritt nur bei Statusabfrage s auf, alle anderen Parameter RC10). "},
{10, "dakota noch nicht schlüsselfertig konfiguriert, Programmabbruch. "},
{14, "Falscher Programmaufruf, Programmabbruch. "},
{16, "Interner Fehler, Programmabbruch. "},
{18, "Programm ist bereits geladen. "},
{30, "Die Lizenz ist nicht registriert (ab dakota.ag 6.2). "},
{40, "Verbindung zum Stammdatenupdateserver war nicht möglich (ab dakota.ag 6.2). "},
{41, "Verbindung zum Stammdatenupdateserver war wiederholt nicht möglich (ab dakota.ag 6.2). "},
{50, "Der Stammdatenserver wurde seit mehr als 10 Tagen nicht erreicht und daher wurde die Lizenz gesperrt (ab dakota.ag 6.1). "},
{90, "Es liegt ein fertiges Zertifikat vor und es wurde erfolgreich ein Nachfolgezertifikat beantragt. "},
{91, "Es liegt ein fertiges Zertifikat vor und es wurde erfolgreich ein Nachfolgezertifikat beantragt, aktives Zertifikat läuft in der angegebenen Frist ab. "},
{100, "Es ist seit x-Tagen kein Stammdatenupdate durchgeführt worden, ohne Fehler beendet (nur bei Parameter s). "},
{101, "Es ist seit x-Tagen kein Stammdatenupdate durchgeführt worden und Ihr Zertifikat läuft in der angegebenen Frist ab, ohne Fehler beendet (nur bei Parameter s). "},
{200, "Es ist seit x-Tagen keine Schlüsselsicherung durchgeführt worden, ohne Fehler beendet (nur bei Parameter s). "},
};
/// <summary>
/// Werten den Return Code beim Statusabfrage aus.
/// </summary>
/// <param name="rc"></param>
/// <param name="isDakotaRunning"></param>
/// <param name="accept"></param>
/// <param name="message"></param>
public static void EvaluateStatusCode(int rc, out bool isDakotaRunning, out bool accept, out string message)
{
isDakotaRunning = rc == RC_DAKOTA_ALREADY_LOADED;
accept = AcceptStatusCodes.Contains(rc);
if (ExecuteModusReturnCodes2Meaning.TryGetValue(rc, out string msg))
message = msg;
else if (StatusReturncodeToMeaning.TryGetValue(rc, out string msg2))
message = "special: " + msg2;
else
message = "Unknown returncode";
}
/// <summary>
/// Werten den Return Code beim Senden aus.
/// </summary>
/// <param name="rc"></param>
/// <param name="isDakotaRunning"></param>
/// <param name="accept"></param>
/// <param name="message"></param>
public static void EvaluateSendCode(int rc, out bool isDakotaRunning, out bool accept, out string message)
{
isDakotaRunning = rc == RC_DAKOTA_ALREADY_LOADED;
accept = AcceptSendCodes.Contains(rc);
if (ExecuteModusReturnCodes2Meaning.TryGetValue(rc, out string msg))
message = msg;
else if (SendReturncodeToMeaning.TryGetValue(rc, out string msg2))
message = "special: " + msg2;
else
message = "Unknown returncode";
}
}
}

View File

@@ -12,10 +12,10 @@ namespace DakotaSender
/// <summary>
/// Saves to an xml file
/// </summary>
/// <param name="FileName">File path of the new xml file</param>
public static void Save<T>(T obj, string FileName) where T : class
/// <param name="fileName">File path of the new xml file</param>
public static void Save<T>(T obj, string fileName) where T : class
{
using (var writer = new System.IO.StreamWriter(FileName))
using (var writer = new System.IO.StreamWriter(fileName))
{
var serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(writer, obj);

View File

@@ -21,7 +21,7 @@ namespace DakotaUnitTest
[TestMethod]
public void ValidateXmlParse()
{
var convert = GkvApp8FehlerXml.GetFehlerXml("fehler_example.xml");
var convert = GkvServerResultXml.GetResultXml("fehler_example.xml");
Assert.IsNotNull(convert);
}

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Fehler Oid="31">
<Result ProtokollOid="31">
<Titel>31</Titel>
<Datum>2024-06-01T09:00:00</Datum>
<Nachricht>TestNach</Nachricht>
<Level>1</Level>
</Fehler>
</Result>

View File

@@ -52,6 +52,11 @@ namespace BeWo.Data
{
userLoaded = TryAuthenticateWithLoginForm(context);
}
if(!userLoaded)
{
userLoaded = TryAuthenticateWithGkv(context);
}
if(!userLoaded && !(SessionFacade.LoggedInUser?.Oid is null))
{
@@ -74,7 +79,7 @@ namespace BeWo.Data
if (string.IsNullOrEmpty(context.Request.FilePath))
return false;
if (context.Request.FilePath.IndexOf("GkvAbrechnungView.aspx") >= 0)
if (context.Request.FilePath.IndexOf("GkvAbrechnungServer.aspx") >= 0)
return false;
if (context.Request.FilePath.IndexOf("Admin.aspx") >= 0)
@@ -137,6 +142,45 @@ namespace BeWo.Data
return lTenant;
}
private static bool TryAuthenticateWithRequestParams(HttpApplication context)
{
string lUserName = null;
string lPassword = null;
//if (!context.Request.Params.AllKeys.Contains("tenant"))
// return false;
var lTenant = GetTenant(context);
if (!string.IsNullOrEmpty(lTenant))
{
if (context.Request.Params.AllKeys.Contains("token"))
{
lUserName = GetLoginInfoFromToken(context.Request.Params["token"])["user"];
lPassword = GetLoginInfoFromToken(context.Request.Params["token"])["password"];
}
}
else
{
lUserName = context.Request.Params["username"];
lPassword = context.Request.Params["token"];
}
if (!BS.Shared.Core.Utils.IsAnyNullOrEmpty(lUserName, lPassword))
{
var ip = context.Request.UserHostAddress;
var lUser = DAOFactory.UserDAO.FindUserByLoginName(lUserName, ip);
if (lUser != null && lUser.CheckRC2Password(lPassword))
{
SessionFacade.LoggedInUser = lUser;
return true;
}
}
return false;
}
private static bool TryAuthenticateWithLoginForm(HttpApplication context)
{
var name = context.Request.Params["ctl00$tb_login"];
@@ -156,43 +200,49 @@ namespace BeWo.Data
return false;
}
private static bool TryAuthenticateWithRequestParams(HttpApplication context)
private static bool TryAuthenticateWithGkv(HttpApplication context)
{
string lUserName = null;
string lPassword = null;
if (context.Request.FilePath.IndexOf("GkvAbrechnungClient.aspx") == -1)
return false;
//if (!context.Request.Params.AllKeys.Contains("tenant"))
// return false;
var lTenant = GetTenant(context);
var appsettingip = System.Configuration.ConfigurationManager.AppSettings["App8IpAddress"];
var clientip = GetIP(true);
if(!string.IsNullOrEmpty(lTenant))
if (appsettingip != clientip)
return false;
var useroidstr = context.Request.Params["useroid"];
if (!long.TryParse(useroidstr, out long useroid))
return false;
SessionFacade.LoggedInUser = DAOFactory.GenericDAO.LoadByID<ApplicationUser>(useroid);
return true;
}
private static string GetIP(bool CheckForward = false)
{
// https://stackoverflow.com/a/13249280
string ip = null;
if (CheckForward)
{
if (context.Request.Params.AllKeys.Contains("token"))
{
lUserName = GetLoginInfoFromToken(context.Request.Params["token"])["user"];
lPassword = GetLoginInfoFromToken(context.Request.Params["token"])["password"];
}
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
if (string.IsNullOrEmpty(ip))
{
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
lUserName = context.Request.Params["username"];
lPassword = context.Request.Params["token"];
{ // Using X-Forwarded-For last address
ip = ip.Split(',')
.Last()
.Trim();
}
if(!BS.Shared.Core.Utils.IsAnyNullOrEmpty(lUserName, lPassword))
{
var ip = context.Request.UserHostAddress;
var lUser = DAOFactory.UserDAO.FindUserByLoginName(lUserName, ip);
if(lUser != null && lUser.CheckRC2Password(lPassword))
{
SessionFacade.LoggedInUser = lUser;
return true;
}
}
return false;
return ip;
}
private static Dictionary<string, string> GetLoginInfoFromToken(string token)

View File

@@ -5940,7 +5940,7 @@ namespace BeWo.Data.Access
public int GetNextDatenaustauschreferenz(string datenannahmestelle)
{
var criteria = CreateCriteria<GkvTransferProtokoll>()
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentSuccess && x.IKDatenannahmestelle == datenannahmestelle))
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentApp8Success && x.IKDatenannahmestelle == datenannahmestelle))
.SetProjection(Projections.Max("Datenaustauschreferenz"));
var t = criteria.List<int?>().SingleOrDefault();
@@ -5951,12 +5951,12 @@ namespace BeWo.Data.Access
public int GetNextTransfernummer(string datenannahmestelle)
{
var criteria = CreateCriteria<GkvTransferProtokoll>()
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentSuccess && x.IKDatenannahmestelle == datenannahmestelle))
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.SentApp8Success && x.IKDatenannahmestelle == datenannahmestelle))
.SetProjection(Projections.Max("Transfernummer"));
var t = criteria.List<int?>().SingleOrDefault();
return t + 1?? 0;
return t + 1 ?? 0;
}
public List<Bargeldtransaktionshistory> LoadBargeldtransaktionshistoryEntriesByTransaktionsOids(List<long> transaktionsOids)

View File

@@ -170,6 +170,7 @@ namespace BeWo.Data
}
catch (Exception e)
{
//throw new FaultException("ttttt" + e.ToString());
throw new FaultException(e.StackTrace + e.InnerException?.Message ?? string.Empty);
}
}

View File

@@ -3,10 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.Interface;
namespace BeWo.Data.Entities
{
public class GkvAbrechnung : BeWoEntityBase
public class GkvAbrechnung : BeWoEntityBase, IGkvAbrechnung
{
public GkvAbrechnung()
{
@@ -25,15 +26,7 @@ namespace BeWo.Data.Entities
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
public static GkvState GetState(GkvAbrechnung entity) =>
GkvAbrechnungExtensions.GetState(
entity,
() => entity.Bezahlt,
() => entity.UrbelegeGesendet,
() => entity.GkvTransferProtokolle,
(x) => x.Fehlerdatum,
(x) => x.Fehlerlevel,
(x) => x.ErstelltAm.Value);
public virtual IGkvTransferProtokoll LastTransferProtokoll => GkvTransferProtokolle?.LastOrDefault();
public virtual Organisation GetOrganisation()
{

View File

@@ -2,10 +2,11 @@
using System.Collections.Generic;
using BS.Shared;
using BS.Shared.Interface;
namespace BeWo.Data.Entities
{
public class GkvTransferProtokoll : BeWoEntityBase
public class GkvTransferProtokoll : BeWoEntityBase, IGkvTransferProtokoll
{
public GkvTransferProtokoll()
{
@@ -36,11 +37,12 @@ namespace BeWo.Data.Entities
public virtual string Nutzdatendatei { get; set; }
public virtual string Auftragsdatei { get; set; }
public virtual bool SentSuccess { get; set; }
public virtual bool SentApp8Success { get; set; }
public virtual bool SentDakotaSuccess { get; set; }
public virtual GkvTransferResultType? ResultType { get; set; }
public virtual string Fehlertitel { get; set; }
public virtual DateTime? Fehlerdatum { get; set; }
public virtual string Fehlernachricht { get; set; }
public virtual GkvTransferFehlerlevel Fehlerlevel { get; set; }
}
}

View File

@@ -33,10 +33,11 @@
<property column="Transfernummer" type="int" name="Transfernummer" />
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
<property column="SentSuccess" type="Boolean" name="SentSuccess" />
<property column="Fehlertitel" type="string" name="Fehlertitel" />
<property column="Fehlerdatum" type="DateTime" name="Fehlerdatum" />
<property column="Fehlernachricht" type="string" name="Fehlernachricht" />
<property column="Fehlerlevel" type="BS.Shared.GkvTransferFehlerlevel, BS.Shared" name="Fehlerlevel" />
<property column="SentApp8Success" type="Boolean" name="SentApp8Success" />
<property column="SentDakotaSuccess" type="Boolean" name="SentDakotaSuccess" />
<property column="ResultType" type="BS.Shared.GkvTransferResultType, BS.Shared" name="ResultType" />
<property column="Fehlertitel" type="string" name="Fehlertitel" />
<property column="Fehlerdatum" type="DateTime" name="Fehlerdatum" />
<property column="Fehlernachricht" type="string" name="Fehlernachricht" />
</class>
</hibernate-mapping>

View File

@@ -60,8 +60,9 @@ namespace BeWo.Data
}
catch (Exception e)
{
//String path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionFactoryError.txt");
//System.IO.File.AppendAllText(path, String.Format("{0:dd.MM.yyyy HH:mm:ss}", DateTime.Now) + "\n" + e.Message + "\n" + e.StackTrace);
String path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionFactoryError.txt");
System.IO.File.AppendAllText(@"C:\BeWoPlaner\service\Host\logs\WCFSessionError.txt", String.Format("SessionFactory get {0:dd.MM.yyyy HH:mm:ss}", DateTime.Now) + "\n" + e.Message + "\n" + e.StackTrace);
Debug.WriteLine("<<<<< " + e.StackTrace + (e.InnerException != null ? e.InnerException.Message : string.Empty));
throw new FaultException(e.StackTrace + e.InnerException != null ? e.InnerException.Message : string.Empty);
}
@@ -157,6 +158,8 @@ namespace BeWo.Data
}
catch (Exception e)
{
File.AppendAllText(@"C:\BeWoPlaner\service\Host\logs\WCFSessionError.txt", String.Format("OpenSession {0:dd.MM.yyyy HH:mm:ss}", DateTime.Now) + "\n" + e.Message + "\n" + e.StackTrace);
throw new FaultException(e.StackTrace + e.InnerException?.Message ?? string.Empty);
}
}

View File

@@ -0,0 +1 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GkvAbrechnungClient.aspx.cs" Inherits="Host.GkvAbrechnungClient" %>

View File

@@ -0,0 +1,115 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.AppSender;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Host
{
public partial class GkvAbrechnungClient : Page
{
private readonly string INVALID_INPUT = "Ungültige Eingabe";
private string GkvSecretKey { get; set; } = ConfigurationManager.AppSettings.Get("GkvSecretKey");
public GkvRequestDC GkvRequest { get; set; }
public void Sleep() => Thread.Sleep(5000);
protected void Page_Load(object sender, EventArgs e)
{
try
{
//https://app5.bewoplaner.de/Host/GkvAbrechungServer?tenant=12345
var str = new StreamReader(Request.InputStream).ReadToEnd();
GkvRequest = GkvSender.DeserializeRequest<GkvRequestDC>(str, SendInvalidInputResponse);
switch (GkvRequest.Type)
{
case RequestType.GkvClientResult:
ClientResult(GkvSender.DeserializeRequest<GkvClientResultRequestDC>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse("RequestType unbekannt.");
return;
}
}
catch (ThreadAbortException eee)
{
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
SendErrorResponse(ex_text);
}
}
private void ClientResult(GkvClientResultRequestDC req)
{
if (GkvSecretKey is null)
SendErrorResponse(INVALID_INPUT + " 1");
if (GkvSecretKey != req.GkvSecretKey)
SendErrorResponse(INVALID_INPUT + " 2");
if (req.ResultDCs is null || !req.ResultDCs.Any())
SendInvalidInputResponse();
// Response
var response = new GkvResponseDC(false);
try
{
var service = new AccountingServiceImp();
service.HandleGkvServerResults(req.ResultDCs);
response.Success = true;
}
catch (GkvException e)
{
response.Message = e.Message;
}
catch (Exception e)
{
response.Message = e.Message;
}
SendResponse(response);
}
#region Senden
private void SendInvalidInputResponse() => SendErrorResponse(INVALID_INPUT);
private void SendErrorResponse(string message)
{
var response = new GkvResponseDC(false, message);
Sleep();
SendResponse(GkvSender.SerializeResponse(response));
}
private void SendResponse(GkvResponseDC res) => SendResponse(GkvSender.SerializeResponse(res));
private void SendResponse(string str)
{
Response.Write(str);
Response.End();
}
#endregion
}
}

View File

@@ -1,17 +1,17 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace Host
{
public partial class GkvAbrechnungView
{
}
}
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace Host
{
public partial class GkvAbrechnungClient
{
}
}

View File

@@ -0,0 +1 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GkvAbrechnungServer.aspx.cs" Inherits="Host.GkvAbrechnungServer"%>

View File

@@ -0,0 +1,333 @@
using BS.Shared;
using BS.Shared.AppSender;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using Dakota.Logic;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using Page = System.Web.UI.Page;
namespace Host
{
public partial class GkvAbrechnungServer : Page
{
public const int PROCESS_WAITFOREXIT_MS = 10 * 1000;
public const int WAIT_BEFORE_ERROR_MS = 5 * 1000;
private readonly string LOGINSERVER_URL = "{0}/Login.aspx";
private readonly string INVALID_INPUT = "Ungültige Eingabe";
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
{
//https://app8.bewoplaner.de/Host/GkvAbrechungServer?tenant=12345
var str = new StreamReader(Request.InputStream).ReadToEnd();
var req = GkvSender.DeserializeRequest<GkvRequestDC>(str, SendInvalidInputResponse);
if (!CheckValues(req))
SendErrorResponse("Check Fehlgeschlagen");
if (!TryLogin(req))
SendErrorResponse("Login Fehlgeschlagen");
switch (req.Type)
{
case RequestType.GkvServerSendNew:
SendNew(GkvSender.DeserializeRequest<GkvServerSendNewRequestDC>(str, SendInvalidInputResponse));
return;
case RequestType.GkvServerGetIKNumber:
GetIK(GkvSender.DeserializeRequest<GkvServerGetIKRequestDC>(str, SendInvalidInputResponse));
return;
case RequestType.GkvServerGetStatus:
GetStatus(GkvSender.DeserializeRequest<GkvServerGetStatusRequestDC>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse("RequestType unbekannt.");
return;
}
}
catch (ThreadAbortException eee)
{
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
SendErrorResponse(ex_text);
}
Response.End();
}
private bool CheckValues(GkvRequestDC req)
{
if (req == null)
return false;
if (req.Type == RequestType.Default)
return false;
if (string.IsNullOrWhiteSpace(req.Username))
return false;
if (string.IsNullOrWhiteSpace(req.Tenant))
return false;
#if !DEBUG
if (string.IsNullOrWhiteSpace(req.Password))
return false;
#endif
return true;
}
private bool TryLogin(GkvRequestDC req)
{
var server = AppRequestSender.GetServerFromTenant(req.Tenant);
if (string.IsNullOrEmpty(server))
return false;
var loginurl = string.Format(LOGINSERVER_URL, $"https://{server}/service");
#if DEBUG
if (server.IndexOf("localhost") > 0)
loginurl = string.Format(LOGINSERVER_URL, $"http://{server}/Host");
#endif
bool successful;
byte[] result;
string result_str;
try
{
using (WebClient client = new WebClient())
{
var nvc = new NameValueCollection();
nvc.Add("password", req.Password);
nvc.Add("username", req.Username);
nvc.Add("tenant", req.Tenant);
result = client.UploadValues(loginurl, "POST", nvc);
result_str = Encoding.Default.GetString(result);
}
}
catch (Exception e)
{
throw new GkvException($"loginurl: {loginurl} | " + e.ToString());
}
successful = Convert.ToBoolean(result_str);
return successful;
}
private void SendNew(GkvServerSendNewRequestDC req)
{
// Response
var res = new GkvServerSendNewResponseDC();
res.GkvTransferProtokollDC = req.Protokoll;
try
{
var finalpath = SaveFileInQueue(req);
req.Protokoll.SentApp8Success = true;
res.Success = true;
}
catch (GkvException e)
{
req.Protokoll.ResultType = GkvTransferResultType.FailSoft;
req.Protokoll.Fehlerdatum = DateTime.Now;
req.Protokoll.Fehlertitel = "App8 - Gkv";
req.Protokoll.Fehlernachricht = e.Message;
res.Message = e.Message;
}
catch (Exception e)
{
req.Protokoll.ResultType = GkvTransferResultType.FailSoft;
req.Protokoll.Fehlerdatum = DateTime.Now;
req.Protokoll.Fehlertitel = "App8";
req.Protokoll.Fehlernachricht = e.Message;
res.Message = e.Message;
}
SendResponse(res);
}
private void GetIK(GkvServerGetIKRequestDC req)
{
var ktd_reader = new DakotaKTDReader(KostentragerdateiFolderPath);
var resolved = ktd_reader.Resolve(req.IKKrankenkasse, req.Abrechnungscode, req.Tarifkennzeichen);
var response = new GkvServerGetIKResponseDC(true)
{
Gefunden = resolved is object
};
if (response.Gefunden)
{
response.IKDatenannahmestelle = resolved.Item1;
response.IKKostentrager = resolved.Item2;
response.IKKrankenkasse = resolved.Item3;
response.BezDatenannahmestelle = resolved.Item4;
}
SendResponse(response);
}
private void GetStatus(GkvServerGetStatusRequestDC req)
{
var response = new GkvServerGetStatusResponseDC(false);
var tuple_count = req.Oids.Length;
response.Results = new GkvServerResultDC[tuple_count];
try
{
// Load XML Info
var results = GetResultFile(req.Tenant);
if (results is object)
for (int i = 0; i < tuple_count; i++)
{
var gkv_transfer_oid = req.Oids[i];
if (results.TryGetValue(gkv_transfer_oid, out var fehlerDC))
{
response.Results[i] = fehlerDC;
}
}
ClearResultFolder(req.Tenant, req.Oids);
response.Success = true;
}
catch (GkvException e)
{
response.Message = e.Message;
}
catch (Exception e)
{
response.Message = e.ToString();
}
SendResponse(response);
return;
}
private string SaveFileInQueue(GkvServerSendNewRequestDC req)
{
string root_path = QueueFolderPath;
string file_path = string.Format("{0}_{1}_{2}_{3}_{4}",
req.Tenant, req.ApplicationUserOid, req.Protokoll_Oid, req.Datenannahmestelle, req.Transfername);
Directory.CreateDirectory(root_path);
var finalpath = root_path + file_path;
File.WriteAllText(finalpath, req.Nutzdatendatei);
var auftragsdatei2 = Encoding.GetEncoding("ISO-8859-1").GetBytes(req.Auftragsdatei);
File.WriteAllBytes(finalpath + ".auf", auftragsdatei2);
return finalpath;
}
private void ClearResultFolder(string tenant, long[] oids)
{
var folder = new DirectoryInfo(Path.Combine(ResultFolderPath, tenant));
if (!folder.Exists)
return;
foreach (var file in folder.GetFiles())
{
var xml_obj = GkvServerResultXml.GetResultXml(file.FullName);
if (xml_obj is GkvServerResultXml xml && oids.Contains(xml.ProtokollOid))
continue;
file.Delete();
}
}
private Dictionary<long, GkvServerResultDC> GetResultFile(string tenant)
{
try
{
var path = ResultFolderPath;
if (string.IsNullOrWhiteSpace(path))
throw new GkvException("Config GkvAbrechnungResultFolderPath is empty or whitespace");
if (string.IsNullOrWhiteSpace(tenant))
throw new GkvException("Tenant is empty or whitespace");
var folder = new DirectoryInfo(Path.Combine(path, tenant));
if (!folder.Exists)
{
return null;
}
var dict = new Dictionary<long, GkvServerResultDC>();
foreach (var file in folder.GetFiles("*.xml"))
{
var xml = GkvServerResultXml.GetResultXml(file.FullName);
if (xml is null)
continue;
dict.Add(xml.ProtokollOid, GkvServerResultXml.ToDC(xml));
}
return dict;
}
catch (GkvException e)
{
throw e;
}
catch (Exception e)
{
throw new GkvException("App8 Server Error: " + e.ToString());
}
}
private void SendInvalidInputResponse() => SendErrorResponse(INVALID_INPUT);
private void SendErrorResponse(string message)
{
var response = new GkvResponseDC(false, message);
Thread.Sleep(WAIT_BEFORE_ERROR_MS);
SendResponse(GkvSender.SerializeResponse(response));
}
private void SendResponse(GkvResponseDC res) => SendResponse(GkvSender.SerializeResponse(res));
private void SendResponse(string str)
{
Response.Write(str);
Response.End();
}
}
}

View File

@@ -0,0 +1,17 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace Host
{
public partial class GkvAbrechnungServer
{
}
}

View File

@@ -1,3 +0,0 @@
<%@ 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

@@ -1,394 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BeWo.Data;
using BeWo.Report;
using BeWo.Service.Security;
using DevExpress.XtraPrinting;
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;
using BeWo.Service.DCEntityMapper;
using BeWo.Data.Entities;
using BS.Shared.Extensions;
using System.Threading;
using System.Configuration;
using Dakota.Models;
using System.Xml;
using System.Xml.Linq;
using System.Diagnostics;
using System.Xml.Serialization;
using Dakota.Logic;
namespace Host
{
public partial class GkvAbrechnungView : Page
{
public const int PROCESS_WAITFOREXIT_MS = 10 * 1000;
private string GETSERVER_URL = "https://support.bewoplaner.de/api/getserver.php?k={0}&t=0";
private string LOGINSERVER_URL = "{0}/Login.aspx";
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");
public GkvApp8Request GkvRequest { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
try
{
//https://app8.bewoplaner.de/Host/GkvAbrechungview?tenant=12345
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)
{
case GkvAbrechnungApp8RequestTypeDC.SendNew:
SendNew(JsonConvert.DeserializeObject<GkvApp8SendNewRequest>(str));
return;
case GkvAbrechnungApp8RequestTypeDC.GetStatus:
GetStatus(JsonConvert.DeserializeObject<GkvApp8GetStatusRequest>(str));
return;
case GkvAbrechnungApp8RequestTypeDC.GetIKNumber:
GetIK(JsonConvert.DeserializeObject<GkvApp8GetIKRequest>(str));
return;
default:
SendErrorResponse("GkvAbrechnungType unbekannt.");
return;
}
SendErrorResponse("Unbekannter Fehler");
}
catch (ThreadAbortException eee)
{
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
SendErrorResponse(ex_text);
return;
}
}
private void SendErrorResponse(string message)
{
var response = new GkvApp8Response();
response.Success = false;
response.Message = message;
SendResponse(JsonConvert.SerializeObject(response));
}
private void SendResponse(object res) => SendResponse(JsonConvert.SerializeObject(res));
private void SendResponse(string str)
{
Response.Write(str);
Response.End();
//Context.ApplicationInstance.CompleteRequest();
}
private bool CheckValues() => CheckValues(GkvRequest);
private bool CheckValues(GkvApp8Request request)
{
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;
return true;
}
private bool TryLogin() => TryLogin(GkvRequest);
private bool TryLogin(GkvApp8Request gkv_request)
{
if (gkv_request.Tenant == "demo" && gkv_request.Username == "demo" && gkv_request.DebugMode == "fozc4897b6ztvf978AFCRRG244fvFV2532fvf324AF")
{
gkv_request.Tenant = "7375324044";
return true;
}
var server = GetServerFromTenant(gkv_request.Tenant);
var loginurl = string.Format(LOGINSERVER_URL, $"https://{server}/service");
#if DEBUG
//loginurl = string.Format(LOGINSERVER_URL, "https://app4.bewoplaner.de");
loginurl = string.Format(LOGINSERVER_URL, "http://localhost:3777/Host");
#endif
bool successful = false;
try
{
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);
var loginresponse = client.UploadValues(loginurl, "POST", nvc);
successful = BitConverter.ToBoolean(loginresponse, 0);
}
}
catch (Exception e)
{
throw new DakotaException($"loginurl: {loginurl} | " + e.ToString());
}
return successful;
}
private void SendNew(GkvApp8SendNewRequest req)
{
// Response
var response = new GkvApp8SendNewResponse(false);
var protokoll = req.GkvTransferProtokoll;
try
{
SaveFileInFileSystem(req, true);
req.GkvTransferProtokoll.SentSuccess = true;
response.Success = true;
}
catch (DakotaException e)
{
protokoll.Fehlerdatum = DateTime.Now;
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
protokoll.Fehlertitel = "App8";
protokoll.Fehlernachricht = e.Message;
response.Message = e.Message;
}
catch (Exception e)
{
protokoll.Fehlerdatum = DateTime.Now;
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
protokoll.Fehlertitel = "App8";
protokoll.Fehlernachricht = e.Message;
response.Message = e.Message;
}
response.GkvTransferProtokollDC = protokoll;
SendResponse(response);
}
private void GetStatus(GkvApp8GetStatusRequest req)
{
var response = new GkvApp8GetStatusResponse(false);
var tuple_count = req.Oids.Length;
response.Fehler = new GkvApp8FehlerDC[tuple_count];
try
{
// Load XML Info
var results = GetResultFile(GkvRequest.Tenant);
if (results is object)
for (int i = 0; i < tuple_count; i++)
{
var gkv_transfer_oid = req.Oids[i];
if (results.TryGetValue(gkv_transfer_oid, out var fehlerDC))
{
response.Fehler[i] = fehlerDC;
}
}
ClearResultFolder(GkvRequest.Tenant, req.Oids);
response.Success = true;
}
catch (DakotaException e)
{
response.Message = e.Message;
}
catch (Exception e)
{
response.Message = e.ToString();
}
SendResponse(response);
return;
}
private void GetIK(GkvApp8GetIKRequest req)
{
var ktd_reader = new DakotaKTDReader(KostentragerdateiFolderPath);
var resolved = ktd_reader.Resolve(req.IKKrankenkasse, req.Abrechnungscode, req.Tarifkennzeichen);
var response = new GkvApp8GetIKResponse();
response.Success = true;
response.Gefunden = resolved is object;
if (response.Gefunden)
{
response.IKDatenannahmestelle = resolved.Item1;
response.IKKostentrager = resolved.Item2;
response.IKKrankenkasse = resolved.Item3;
response.BezDatenannahmestelle = resolved.Item4;
}
SendResponse(response);
}
private string SaveFileInFileSystem(GkvApp8SendNewRequest req, bool debug_mode = false)
=> SaveFileInFileSystem(req.GkvTransferProtokoll.GkvTransferProtokollOid.Value, GkvRequest.Tenant, req.GkvTransferProtokoll.IKDatenannahmestelle, req.GkvTransferProtokoll.Transfername,
req.GkvTransferProtokoll.Nutzdatendatei, req.GkvTransferProtokoll.Auftragsdatei, debug_mode);
private string SaveFileInFileSystem(long protokoll_oid, string tenant, string datenannahmestelle, string transfername, string nutzdaten, string auftragsdatei, bool debug_mode = false)
{
string root_path;
string file_path;
if (debug_mode)
{
root_path = QueueFolderPath;
file_path = $@"{tenant}_{protokoll_oid}_{datenannahmestelle}_{transfername}";
}
else
{
throw new DakotaException("No Debugmode impl");
//root_path = $@"C:\GkvAbrechnung\{tenant}\{datenannahmestelle}\";
//file_path = $@"{transfername}";
}
Directory.CreateDirectory(root_path);
var finalpath = root_path + file_path;
return SaveFileInFileSystem(finalpath, nutzdaten, auftragsdatei);
}
private string SaveFileInFileSystem(string finalpath, string nutzdaten, string auftragsdatei)
{
File.WriteAllText(finalpath, nutzdaten);
var auftragsdatei2 = Encoding.GetEncoding("ISO-8859-1").GetBytes(auftragsdatei);
File.WriteAllBytes(finalpath + ".auf", auftragsdatei2);
return finalpath;
}
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;
}
}
private void ClearResultFolder(string tenant, long[] oids)
{
var folder = new DirectoryInfo(Path.Combine(ResultFolderPath, tenant));
if (!folder.Exists)
return;
foreach (var file in folder.GetFiles())
{
var xml_obj = GkvApp8FehlerXml.GetFehlerXml(file.FullName);
if (xml_obj is GkvApp8FehlerXml xml && oids.Contains(xml.Oid))
continue;
file.Delete();
}
}
private Dictionary<long, GkvApp8FehlerDC> GetResultFile(string tenant)
{
try
{
var path = ResultFolderPath;
if (string.IsNullOrWhiteSpace(path))
throw new DakotaException("Config GkvAbrechnungResultFolderPath is empty or whitespace");
if (string.IsNullOrWhiteSpace(tenant))
throw new DakotaException("Tenant is empty or whitespace");
var folder = new DirectoryInfo(Path.Combine(path, tenant));
if (!folder.Exists)
{
return null;
}
var dict = new Dictionary<long, GkvApp8FehlerDC>();
foreach (var file in folder.GetFiles("*.xml"))
{
var xml = GkvApp8FehlerXml.GetFehlerXml(file.FullName);
if (xml is null)
continue;
dict.Add(xml.Oid, GkvApp8FehlerXml.ToDC(xml));
}
return dict;
}
catch (DakotaException e)
{
throw e;
}
catch (Exception e)
{
throw new DakotaException("App8 Server Error: " + e.ToString());
}
}
}
}

View File

@@ -200,7 +200,8 @@
<Content Include="DocumentDownload.aspx" />
<Content Include="Download.aspx" />
<Content Include="DownloadService.svc" />
<Content Include="GkvAbrechnungView.aspx" />
<Content Include="GkvAbrechnungClient.aspx" />
<Content Include="GkvAbrechnungServer.aspx" />
<Content Include="ReportService.svc" />
<Content Include="EmployeeService.svc" />
<Content Include="Multitenancy\Symbol Edit.png" />
@@ -263,12 +264,19 @@
<Compile Include="DX.aspx.designer.cs">
<DependentUpon>DX.aspx</DependentUpon>
</Compile>
<Compile Include="GkvAbrechnungView.aspx.cs">
<DependentUpon>GkvAbrechnungView.aspx</DependentUpon>
<Compile Include="GkvAbrechnungClient.aspx.cs">
<DependentUpon>GkvAbrechnungClient.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="GkvAbrechnungView.aspx.designer.cs">
<DependentUpon>GkvAbrechnungView.aspx</DependentUpon>
<Compile Include="GkvAbrechnungClient.aspx.designer.cs">
<DependentUpon>GkvAbrechnungClient.aspx</DependentUpon>
</Compile>
<Compile Include="GkvAbrechnungServer.aspx.cs">
<DependentUpon>GkvAbrechnungServer.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="GkvAbrechnungServer.aspx.designer.cs">
<DependentUpon>GkvAbrechnungServer.aspx</DependentUpon>
</Compile>
<Compile Include="Login.aspx.cs">
<DependentUpon>Login.aspx</DependentUpon>

View File

@@ -20,15 +20,27 @@ namespace Host
var username = Request.Form["username"];
var password = Request.Form["password"];
var user = DAOFactory.UserDAO.FindUserByLoginName(username);
if (string.IsNullOrEmpty(password))
password = null;
var result = user.BCryptPassword == password;
var b = false;
try
{
var user = DAOFactory.UserDAO.FindUserByLoginName(username);
if (!result)
{
System.Threading.Thread.Sleep(3000);
b = user.BCryptPassword == password;
}
catch(Exception exc)
{
}
if (!b)
{
System.Threading.Thread.Sleep(5000);
}
string result = b ? "True" : "False";
Response.Write(result);
Response.End();
}

View File

@@ -240,6 +240,8 @@
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Queue\" />
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="GkvSecretKey" value="DfDGNGn72PKfSYxSUsmRdzuBtpR9novewlmYU3gsjiFgSkaZZeylUXlbO42cWNqiKgLdMUFtWUNZT962F1raQDR7HGUzCNYsFeC" />
<add key="App8IpAddress" value="88.198.50.220" />
</appSettings>
<devExpress>
<themes enableThemesAssembly="true" styleSheetTheme="" theme="" />

View File

@@ -1,2 +0,0 @@
ALTER TABLE `gkvtransferprotokoll`
ADD COLUMN `SentSuccess` TINYINT NULL AFTER `Auftragsdatei`;

View File

@@ -1,75 +0,0 @@
CREATE TABLE `CustomerFalldaten` (
`Oid` bigint NOT NULL AUTO_INCREMENT,
`InsTs` datetime DEFAULT NULL,
`InsUser` varchar(256) DEFAULT NULL,
`Notice` varchar(1024) DEFAULT NULL,
`Tid` int DEFAULT NULL,
`UdpUser` varchar(256) DEFAULT NULL,
`Version` bigint DEFAULT NULL,
`IsActive` tinyint DEFAULT NULL,
`SystemEntryID` int DEFAULT NULL,
`EigenesAktenzeichen` varchar(256),
`Auftragseingang` datetime DEFAULT NULL,
`AuftragsherkunftValueListEntryOid` bigint DEFAULT NULL,
`VermittlungsgrundlageValueListEntryOid` bigint DEFAULT NULL,
`Tagessatze` decimal(18,10) DEFAULT NULL,
`Tagessatzhohe` decimal(18,10) DEFAULT NULL,
`HoheDerGeldstrafe` decimal(18,10) DEFAULT NULL,
`ZuLeistendeArbeitsstunden` decimal(18,10) DEFAULT NULL,
`Hinweis` varchar(256),
`Termin` datetime DEFAULT NULL,
`FalldatenBearbeitungsstatus` int DEFAULT NULL,
`Auftragsruckgabe` varchar(256),
`Verlauf` varchar(256),
`AbgeleisteteStunden` decimal(18,10) DEFAULT NULL,
`ErsparteHafttage` decimal(18,10) DEFAULT NULL,
`GeleisteteRatenzahlung` decimal(18,10) DEFAULT NULL,
`Bemerkung` varchar(256),
`GeleisteteEinmalzahlung` decimal(18,10) DEFAULT NULL,
`GrundArbeitsunfahig` tinyint,
`GrundSuchtproblem` tinyint,
`GrundPsychischeProbleme` tinyint,
`GrundKeineMotivation` tinyint,
`GrundInHaft` tinyint,
`GrundUnbekannt` tinyint,
`GrundKeinKontakt` tinyint,
`GrundNichtAngetreten` tinyint,
`GrundAbbruchDerTatigkeit` tinyint,
`GrundWiderruf` tinyint,
`Grund459StPO` tinyint,
`GrundAusbleibenDerZahlung` tinyint,
`BesonderheitMehrfacheBeauftragung` tinyint,
`BesonderheitMehrfacheVermittlung` tinyint,
`BesonderheitVermittlungAusHaft` tinyint,
`BesonderheitDurchBGBWAufgesucht` tinyint,
PRIMARY KEY (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
ALTER TABLE `customer`
ADD COLUMN `CustomerFalldatenOid` BIGINT NULL DEFAULT NULL AFTER `VersichertenStatus`;
ALTER TABLE `customer`
ADD INDEX `FK_CUSTOMERFALLDATEN_idx` (`CustomerFalldatenOid` ASC) VISIBLE;
ALTER TABLE `customer`
ADD CONSTRAINT `FK_CUSTOMERFALLDATEN`
FOREIGN KEY (`CustomerFalldatenOid`)
REFERENCES `customerfalldaten` (`Oid`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
ALTER TABLE `customerfalldaten`
ADD INDEX `FK_AUFTRAGSHERKUNFT_idx` (`AuftragsherkunftValueListEntryOid` ASC) VISIBLE,
ADD INDEX `FK_VERMITTLUNGSGRUNDLAGE_idx` (`VermittlungsgrundlageValueListEntryOid` ASC) VISIBLE;
ALTER TABLE `customerfalldaten`
ADD CONSTRAINT `FK_AUFTRAGSHERKUNFT`
FOREIGN KEY (`AuftragsherkunftValueListEntryOid`)
REFERENCES `valuelistentry` (`Oid`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
ADD CONSTRAINT `FK_VERMITTLUNGSGRUNDLAGE`
FOREIGN KEY (`VermittlungsgrundlageValueListEntryOid`)
REFERENCES `valuelistentry` (`Oid`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;

View File

@@ -1,2 +0,0 @@
ALTER TABLE `gkvabrechnung`
ADD COLUMN `UrbelegeGesendet` TINYINT NULL DEFAULT NULL AFTER `Bezahlt`;

View File

@@ -1,5 +0,0 @@
ALTER TABLE `organisation`
ADD COLUMN `Verfahrensstufe` INT NULL DEFAULT 0 AFTER `BusinessPartnerId`;
ALTER TABLE `gkvabrechnung`
ADD COLUMN `Verfahrensstufe` INT NULL DEFAULT 0 AFTER `ErstelltAm`;

View File

@@ -0,0 +1,5 @@
ALTER TABLE `organisation`
CHANGE COLUMN `Verfahrensstufe` `Verfahrensstufe` INT NULL DEFAULT '1' ;
UPDATE `organisation`
SET `Verfahrensstufe` = 1;

View File

@@ -12,9 +12,11 @@ CREATE TABLE `gkvabrechnung` (
`AbrechnungsZeitraumEnde` datetime DEFAULT NULL,
`Betrag` decimal(18,10) DEFAULT NULL,
`Bezahlt` tinyint DEFAULT NULL,
`UrbelegeGesendet` tinyint DEFAULT NULL,
`ErstelltAm` datetime DEFAULT NULL,
`Verfahrensstufe` int DEFAULT '0',
PRIMARY KEY (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `gkvabrechnung2invoicebase` (
`GkvAbrechnungOid` bigint NOT NULL,
@@ -52,11 +54,13 @@ CREATE TABLE `gkvtransferprotokoll` (
`Dateigrosse` int DEFAULT NULL,
`Nutzdatendatei` text,
`Auftragsdatei` varchar(1024) DEFAULT NULL,
`SentApp8Success` tinyint NOT NULL DEFAULT '0',
`SentDakotaSuccess` tinyint NOT NULL DEFAULT '0',
`ResultType` int DEFAULT NULL,
`Fehlertitel` varchar(256) DEFAULT NULL,
`Fehlerdatum` datetime DEFAULT NULL,
`Fehlernachricht` varchar(4096) DEFAULT NULL,
`Fehlerlevel` int DEFAULT NULL,
PRIMARY KEY (`Oid`),
KEY `FK_GKVTRANSFERPROTOKOLL_GKVABRECHNUNG` (`GkvAbrechnungOid`),
CONSTRAINT `FK_GKVTRANSFERPROTOKOLL_GKVABRECHNUNG` FOREIGN KEY (`GkvAbrechnungOid`) REFERENCES `gkvabrechnung` (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

View File

@@ -6,3 +6,4 @@ DROP INDEX `FK_CUSTOMERFALLDATEN_idx` ;
;
DROP TABLE `customerfalldaten`;

View File

@@ -101,6 +101,43 @@ namespace ArcheTecklenburg
this.xrTableCell65 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell67 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell100 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell113 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell114 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell115 = new DevExpress.XtraReports.UI.XRTableCell();
this.tableRowWochentage = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell70 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell74 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell79 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell80 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell83 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell84 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell85 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell86 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell87 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell88 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell89 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell90 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell91 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell92 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell93 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell94 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell95 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell96 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell97 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell98 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell99 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell101 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell102 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell103 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell104 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell105 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell106 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell107 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell108 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell109 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell110 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell111 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell112 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowHeader = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell66 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -135,44 +172,7 @@ namespace ArcheTecklenburg
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell31 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.tableRowWochentage = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell70 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell74 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell79 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell80 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell83 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell85 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell86 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell87 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell88 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell89 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell90 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell91 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell92 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell93 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell94 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell95 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell96 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell97 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell98 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell99 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell101 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell102 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell103 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell104 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell105 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell106 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell107 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell108 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell109 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell110 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell111 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell112 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell84 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrTableCell113 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell114 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell115 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
@@ -875,6 +875,281 @@ namespace ArcheTecklenburg
this.xrTableCell100.Text = "Tagesnachweis";
this.xrTableCell100.Weight = 0.44953116110191577D;
//
// xrTableCell113
//
this.xrTableCell113.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell113.CanShrink = true;
this.xrTableCell113.Multiline = true;
this.xrTableCell113.Name = "xrTableCell113";
this.xrTableCell113.StylePriority.UseBorders = false;
this.xrTableCell113.Weight = 0.016054363358980916D;
//
// xrTableCell114
//
this.xrTableCell114.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell114.CanShrink = true;
this.xrTableCell114.Multiline = true;
this.xrTableCell114.Name = "xrTableCell114";
this.xrTableCell114.StylePriority.UseBorders = false;
this.xrTableCell114.Weight = 0.016054440361683339D;
//
// xrTableCell115
//
this.xrTableCell115.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell115.Multiline = true;
this.xrTableCell115.Name = "xrTableCell115";
this.xrTableCell115.StylePriority.UseBorders = false;
this.xrTableCell115.Weight = 0.016054288211761976D;
//
// tableRowWochentage
//
this.tableRowWochentage.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell70,
this.xrTableCell74,
this.xrTableCell79,
this.xrTableCell80,
this.xrTableCell83,
this.xrTableCell84,
this.xrTableCell85,
this.xrTableCell86,
this.xrTableCell87,
this.xrTableCell88,
this.xrTableCell89,
this.xrTableCell90,
this.xrTableCell91,
this.xrTableCell92,
this.xrTableCell93,
this.xrTableCell94,
this.xrTableCell95,
this.xrTableCell96,
this.xrTableCell97,
this.xrTableCell98,
this.xrTableCell99,
this.xrTableCell101,
this.xrTableCell102,
this.xrTableCell103,
this.xrTableCell104,
this.xrTableCell105,
this.xrTableCell106,
this.xrTableCell107,
this.xrTableCell108,
this.xrTableCell109,
this.xrTableCell110,
this.xrTableCell111,
this.xrTableCell112});
this.tableRowWochentage.Name = "tableRowWochentage";
this.tableRowWochentage.StylePriority.UseTextAlignment = false;
this.tableRowWochentage.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
this.tableRowWochentage.Weight = 1.0492929532578807D;
//
// xrTableCell70
//
this.xrTableCell70.Multiline = true;
this.xrTableCell70.Name = "xrTableCell70";
this.xrTableCell70.StylePriority.UseBackColor = false;
this.xrTableCell70.StylePriority.UseTextAlignment = false;
this.xrTableCell70.Text = "Lfd. Nr.";
this.xrTableCell70.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell70.Weight = 0.032978079500783214D;
//
// xrTableCell74
//
this.xrTableCell74.Multiline = true;
this.xrTableCell74.Name = "xrTableCell74";
this.xrTableCell74.StylePriority.UseBackColor = false;
this.xrTableCell74.StylePriority.UseTextAlignment = false;
this.xrTableCell74.Text = "Name";
this.xrTableCell74.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell74.Weight = 0.10898824570942724D;
//
// xrTableCell79
//
this.xrTableCell79.Multiline = true;
this.xrTableCell79.Name = "xrTableCell79";
this.xrTableCell79.StylePriority.UseTextAlignment = false;
this.xrTableCell79.Weight = 0.016062274347249151D;
//
// xrTableCell80
//
this.xrTableCell80.Multiline = true;
this.xrTableCell80.Name = "xrTableCell80";
this.xrTableCell80.Weight = 0.01605439916870996D;
//
// xrTableCell83
//
this.xrTableCell83.Multiline = true;
this.xrTableCell83.Name = "xrTableCell83";
this.xrTableCell83.Weight = 0.016054399747225123D;
//
// xrTableCell84
//
this.xrTableCell84.Multiline = true;
this.xrTableCell84.Name = "xrTableCell84";
this.xrTableCell84.Weight = 0.016054398355346836D;
//
// xrTableCell85
//
this.xrTableCell85.Multiline = true;
this.xrTableCell85.Name = "xrTableCell85";
this.xrTableCell85.Weight = 0.016054398627990241D;
//
// xrTableCell86
//
this.xrTableCell86.Multiline = true;
this.xrTableCell86.Name = "xrTableCell86";
this.xrTableCell86.Weight = 0.016054396361336147D;
//
// xrTableCell87
//
this.xrTableCell87.Multiline = true;
this.xrTableCell87.Name = "xrTableCell87";
this.xrTableCell87.Weight = 0.016054401291794855D;
//
// xrTableCell88
//
this.xrTableCell88.Multiline = true;
this.xrTableCell88.Name = "xrTableCell88";
this.xrTableCell88.Weight = 0.016054396797631036D;
//
// xrTableCell89
//
this.xrTableCell89.Multiline = true;
this.xrTableCell89.Name = "xrTableCell89";
this.xrTableCell89.Weight = 0.016054400118063777D;
//
// xrTableCell90
//
this.xrTableCell90.Multiline = true;
this.xrTableCell90.Name = "xrTableCell90";
this.xrTableCell90.Weight = 0.016054400386401449D;
//
// xrTableCell91
//
this.xrTableCell91.Multiline = true;
this.xrTableCell91.Name = "xrTableCell91";
this.xrTableCell91.Weight = 0.016054400520570195D;
//
// xrTableCell92
//
this.xrTableCell92.Multiline = true;
this.xrTableCell92.Name = "xrTableCell92";
this.xrTableCell92.Weight = 0.016054400587654644D;
//
// xrTableCell93
//
this.xrTableCell93.Multiline = true;
this.xrTableCell93.Name = "xrTableCell93";
this.xrTableCell93.Weight = 0.016054400621196022D;
//
// xrTableCell94
//
this.xrTableCell94.Multiline = true;
this.xrTableCell94.Name = "xrTableCell94";
this.xrTableCell94.Weight = 0.016054397854210672D;
//
// xrTableCell95
//
this.xrTableCell95.Multiline = true;
this.xrTableCell95.Name = "xrTableCell95";
this.xrTableCell95.Weight = 0.01605439368695942D;
//
// xrTableCell96
//
this.xrTableCell96.Multiline = true;
this.xrTableCell96.Name = "xrTableCell96";
this.xrTableCell96.Weight = 0.016054394387091511D;
//
// xrTableCell97
//
this.xrTableCell97.Multiline = true;
this.xrTableCell97.Name = "xrTableCell97";
this.xrTableCell97.Weight = 0.016054400304672117D;
//
// xrTableCell98
//
this.xrTableCell98.Multiline = true;
this.xrTableCell98.Name = "xrTableCell98";
this.xrTableCell98.Weight = 0.016054397695947867D;
//
// xrTableCell99
//
this.xrTableCell99.Multiline = true;
this.xrTableCell99.Name = "xrTableCell99";
this.xrTableCell99.Weight = 0.016054401959102141D;
//
// xrTableCell101
//
this.xrTableCell101.Multiline = true;
this.xrTableCell101.Name = "xrTableCell101";
this.xrTableCell101.Weight = 0.016054404090678348D;
//
// xrTableCell102
//
this.xrTableCell102.Multiline = true;
this.xrTableCell102.Name = "xrTableCell102";
this.xrTableCell102.Weight = 0.016054402372709164D;
//
// xrTableCell103
//
this.xrTableCell103.Multiline = true;
this.xrTableCell103.Name = "xrTableCell103";
this.xrTableCell103.Weight = 0.016054395946208166D;
//
// xrTableCell104
//
this.xrTableCell104.Multiline = true;
this.xrTableCell104.Name = "xrTableCell104";
this.xrTableCell104.Weight = 0.016054395516715891D;
//
// xrTableCell105
//
this.xrTableCell105.Multiline = true;
this.xrTableCell105.Name = "xrTableCell105";
this.xrTableCell105.Weight = 0.016054395301969754D;
//
// xrTableCell106
//
this.xrTableCell106.Multiline = true;
this.xrTableCell106.Name = "xrTableCell106";
this.xrTableCell106.Weight = 0.016054393802717976D;
//
// xrTableCell107
//
this.xrTableCell107.Multiline = true;
this.xrTableCell107.Name = "xrTableCell107";
this.xrTableCell107.Weight = 0.016054395836849394D;
//
// xrTableCell108
//
this.xrTableCell108.Multiline = true;
this.xrTableCell108.Name = "xrTableCell108";
this.xrTableCell108.Weight = 0.016054395462036519D;
//
// xrTableCell109
//
this.xrTableCell109.Multiline = true;
this.xrTableCell109.Name = "xrTableCell109";
this.xrTableCell109.Weight = 0.01605440362590374D;
//
// xrTableCell110
//
this.xrTableCell110.Multiline = true;
this.xrTableCell110.Name = "xrTableCell110";
this.xrTableCell110.Weight = 0.016054396572805468D;
//
// xrTableCell111
//
this.xrTableCell111.Multiline = true;
this.xrTableCell111.Name = "xrTableCell111";
this.xrTableCell111.Weight = 0.016054406965045509D;
//
// xrTableCell112
//
this.xrTableCell112.Multiline = true;
this.xrTableCell112.Name = "xrTableCell112";
this.xrTableCell112.Weight = 0.01605439583001092D;
//
// rowHeader
//
this.rowHeader.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
@@ -1120,283 +1395,10 @@ namespace ArcheTecklenburg
this.xrTableCell32.Text = "31";
this.xrTableCell32.Weight = 0.01605439583001092D;
//
// tableRowWochentage
//
this.tableRowWochentage.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell70,
this.xrTableCell74,
this.xrTableCell79,
this.xrTableCell80,
this.xrTableCell83,
this.xrTableCell84,
this.xrTableCell85,
this.xrTableCell86,
this.xrTableCell87,
this.xrTableCell88,
this.xrTableCell89,
this.xrTableCell90,
this.xrTableCell91,
this.xrTableCell92,
this.xrTableCell93,
this.xrTableCell94,
this.xrTableCell95,
this.xrTableCell96,
this.xrTableCell97,
this.xrTableCell98,
this.xrTableCell99,
this.xrTableCell101,
this.xrTableCell102,
this.xrTableCell103,
this.xrTableCell104,
this.xrTableCell105,
this.xrTableCell106,
this.xrTableCell107,
this.xrTableCell108,
this.xrTableCell109,
this.xrTableCell110,
this.xrTableCell111,
this.xrTableCell112});
this.tableRowWochentage.Name = "tableRowWochentage";
this.tableRowWochentage.StylePriority.UseTextAlignment = false;
this.tableRowWochentage.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
this.tableRowWochentage.Weight = 1.0492929532578807D;
//
// xrTableCell70
//
this.xrTableCell70.Multiline = true;
this.xrTableCell70.Name = "xrTableCell70";
this.xrTableCell70.StylePriority.UseBackColor = false;
this.xrTableCell70.StylePriority.UseTextAlignment = false;
this.xrTableCell70.Text = "Lfd. Nr.";
this.xrTableCell70.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell70.Weight = 0.032978079500783214D;
//
// xrTableCell74
//
this.xrTableCell74.Multiline = true;
this.xrTableCell74.Name = "xrTableCell74";
this.xrTableCell74.StylePriority.UseBackColor = false;
this.xrTableCell74.StylePriority.UseTextAlignment = false;
this.xrTableCell74.Text = "Name";
this.xrTableCell74.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell74.Weight = 0.10898824570942724D;
//
// xrTableCell79
//
this.xrTableCell79.Multiline = true;
this.xrTableCell79.Name = "xrTableCell79";
this.xrTableCell79.StylePriority.UseTextAlignment = false;
this.xrTableCell79.Weight = 0.016062274347249151D;
//
// xrTableCell80
//
this.xrTableCell80.Multiline = true;
this.xrTableCell80.Name = "xrTableCell80";
this.xrTableCell80.Weight = 0.01605439916870996D;
//
// xrTableCell83
//
this.xrTableCell83.Multiline = true;
this.xrTableCell83.Name = "xrTableCell83";
this.xrTableCell83.Weight = 0.016054399747225123D;
//
// xrTableCell85
//
this.xrTableCell85.Multiline = true;
this.xrTableCell85.Name = "xrTableCell85";
this.xrTableCell85.Weight = 0.016054398627990241D;
//
// xrTableCell86
//
this.xrTableCell86.Multiline = true;
this.xrTableCell86.Name = "xrTableCell86";
this.xrTableCell86.Weight = 0.016054396361336147D;
//
// xrTableCell87
//
this.xrTableCell87.Multiline = true;
this.xrTableCell87.Name = "xrTableCell87";
this.xrTableCell87.Weight = 0.016054401291794855D;
//
// xrTableCell88
//
this.xrTableCell88.Multiline = true;
this.xrTableCell88.Name = "xrTableCell88";
this.xrTableCell88.Weight = 0.016054396797631036D;
//
// xrTableCell89
//
this.xrTableCell89.Multiline = true;
this.xrTableCell89.Name = "xrTableCell89";
this.xrTableCell89.Weight = 0.016054400118063777D;
//
// xrTableCell90
//
this.xrTableCell90.Multiline = true;
this.xrTableCell90.Name = "xrTableCell90";
this.xrTableCell90.Weight = 0.016054400386401449D;
//
// xrTableCell91
//
this.xrTableCell91.Multiline = true;
this.xrTableCell91.Name = "xrTableCell91";
this.xrTableCell91.Weight = 0.016054400520570195D;
//
// xrTableCell92
//
this.xrTableCell92.Multiline = true;
this.xrTableCell92.Name = "xrTableCell92";
this.xrTableCell92.Weight = 0.016054400587654644D;
//
// xrTableCell93
//
this.xrTableCell93.Multiline = true;
this.xrTableCell93.Name = "xrTableCell93";
this.xrTableCell93.Weight = 0.016054400621196022D;
//
// xrTableCell94
//
this.xrTableCell94.Multiline = true;
this.xrTableCell94.Name = "xrTableCell94";
this.xrTableCell94.Weight = 0.016054397854210672D;
//
// xrTableCell95
//
this.xrTableCell95.Multiline = true;
this.xrTableCell95.Name = "xrTableCell95";
this.xrTableCell95.Weight = 0.01605439368695942D;
//
// xrTableCell96
//
this.xrTableCell96.Multiline = true;
this.xrTableCell96.Name = "xrTableCell96";
this.xrTableCell96.Weight = 0.016054394387091511D;
//
// xrTableCell97
//
this.xrTableCell97.Multiline = true;
this.xrTableCell97.Name = "xrTableCell97";
this.xrTableCell97.Weight = 0.016054400304672117D;
//
// xrTableCell98
//
this.xrTableCell98.Multiline = true;
this.xrTableCell98.Name = "xrTableCell98";
this.xrTableCell98.Weight = 0.016054397695947867D;
//
// xrTableCell99
//
this.xrTableCell99.Multiline = true;
this.xrTableCell99.Name = "xrTableCell99";
this.xrTableCell99.Weight = 0.016054401959102141D;
//
// xrTableCell101
//
this.xrTableCell101.Multiline = true;
this.xrTableCell101.Name = "xrTableCell101";
this.xrTableCell101.Weight = 0.016054404090678348D;
//
// xrTableCell102
//
this.xrTableCell102.Multiline = true;
this.xrTableCell102.Name = "xrTableCell102";
this.xrTableCell102.Weight = 0.016054402372709164D;
//
// xrTableCell103
//
this.xrTableCell103.Multiline = true;
this.xrTableCell103.Name = "xrTableCell103";
this.xrTableCell103.Weight = 0.016054395946208166D;
//
// xrTableCell104
//
this.xrTableCell104.Multiline = true;
this.xrTableCell104.Name = "xrTableCell104";
this.xrTableCell104.Weight = 0.016054395516715891D;
//
// xrTableCell105
//
this.xrTableCell105.Multiline = true;
this.xrTableCell105.Name = "xrTableCell105";
this.xrTableCell105.Weight = 0.016054395301969754D;
//
// xrTableCell106
//
this.xrTableCell106.Multiline = true;
this.xrTableCell106.Name = "xrTableCell106";
this.xrTableCell106.Weight = 0.016054393802717976D;
//
// xrTableCell107
//
this.xrTableCell107.Multiline = true;
this.xrTableCell107.Name = "xrTableCell107";
this.xrTableCell107.Weight = 0.016054395836849394D;
//
// xrTableCell108
//
this.xrTableCell108.Multiline = true;
this.xrTableCell108.Name = "xrTableCell108";
this.xrTableCell108.Weight = 0.016054395462036519D;
//
// xrTableCell109
//
this.xrTableCell109.Multiline = true;
this.xrTableCell109.Name = "xrTableCell109";
this.xrTableCell109.Weight = 0.01605440362590374D;
//
// xrTableCell110
//
this.xrTableCell110.Multiline = true;
this.xrTableCell110.Name = "xrTableCell110";
this.xrTableCell110.Weight = 0.016054396572805468D;
//
// xrTableCell111
//
this.xrTableCell111.Multiline = true;
this.xrTableCell111.Name = "xrTableCell111";
this.xrTableCell111.Weight = 0.016054406965045509D;
//
// xrTableCell112
//
this.xrTableCell112.Multiline = true;
this.xrTableCell112.Name = "xrTableCell112";
this.xrTableCell112.Weight = 0.01605439583001092D;
//
// xrTableCell84
//
this.xrTableCell84.Multiline = true;
this.xrTableCell84.Name = "xrTableCell84";
this.xrTableCell84.Weight = 0.016054398355346836D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.AdditionalServiceBookingRO);
//
// xrTableCell113
//
this.xrTableCell113.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell113.Multiline = true;
this.xrTableCell113.Name = "xrTableCell113";
this.xrTableCell113.StylePriority.UseBorders = false;
this.xrTableCell113.Weight = 0.016054363358980916D;
//
// xrTableCell114
//
this.xrTableCell114.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell114.Multiline = true;
this.xrTableCell114.Name = "xrTableCell114";
this.xrTableCell114.StylePriority.UseBorders = false;
this.xrTableCell114.Weight = 0.016054440361683339D;
//
// xrTableCell115
//
this.xrTableCell115.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell115.Multiline = true;
this.xrTableCell115.Name = "xrTableCell115";
this.xrTableCell115.StylePriority.UseBorders = false;
this.xrTableCell115.Weight = 0.016054288211761976D;
//
// AbwesenheitsListe
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {

View File

@@ -27,19 +27,38 @@ namespace ArcheTecklenburg
Enum.TryParse(pRO.Month, out monat);
var monatInt = (int)monat;
var daysInMonth = DateTime.DaysInMonth(pRO.Year, monatInt);
FormatiereTabelle(daysInMonth);
SetzeWochentage(new DateTime(pRO.Year, pRO.MonthInt, 1));
}
private void FormatiereTabelle(int daysInMonth)
{
if (daysInMonth == 28)
{
xrTableCell110.Borders = DevExpress.XtraPrinting.BorderSide.All;
}
xrTableCell30.Visible = daysInMonth >= 29;
if (daysInMonth == 29)
{
xrTableCell113.Borders = DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom;
}
xrTableCell31.Visible = daysInMonth >= 30;
if (daysInMonth == 30)
{
xrTableCell114.Borders = DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Bottom;
}
xrTableCell32.Visible = daysInMonth == 31;
xrTableCell62.Visible = xrTableCell30.Visible;
xrTableCell63.Visible = xrTableCell31.Visible;
xrTableCell64.Visible = xrTableCell32.Visible;
xrTableCell110.Visible = xrTableCell30.Visible;
xrTableCell111.Visible = xrTableCell31.Visible;
xrTableCell112.Visible = xrTableCell32.Visible;
xrTableCell113.Visible = xrTableCell30.Visible;
xrTableCell114.Visible = xrTableCell31.Visible;
xrTableCell115.Visible = xrTableCell32.Visible;
SetzeWochentage(new DateTime(pRO.Year, pRO.MonthInt, 1));
}
private void SetzeWochentage(DateTime start)
@@ -53,20 +72,6 @@ namespace ArcheTecklenburg
}
}
//private void SetCellColor(AdditionalServiceBookingRO pRo)
//{
// DateTime dt = new DateTime(pRo.Year, pRo.MonthInt, 1);
// DateTime end = dt.AddMonths(1);
// while (dt < end)
// {
// if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday)
// {
// rowHeader.Cells[dt.Day+1].BackColor = Color.DarkGray;
// rowDetail.Cells[dt.Day+1].BackColor = Color.DarkGray;
// }
// dt = dt.AddDays(1);
// }
//}
private void CalculateAbsenceTimes(AdditionalServiceBookingRO result)
{

View File

@@ -31,6 +31,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<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" />
@@ -39,6 +40,7 @@
<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.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<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" />

View File

@@ -107,7 +107,6 @@ namespace ArcheTecklenburg
else
allReports.Pages.AddRange(invoiceReport.Pages);
}
return allReports as XtraReport;
}
}

View File

@@ -33,6 +33,8 @@ namespace ArcheTecklenburg.Invoicing
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var costBearer = DAOFactory.GenericDAO.LoadByID<CostBearer>(costBearerOid);
FuegeAbgelaufeneHilfeplaeneMitAktuellenBewilligungenHinzu(costBearer, invoicePeriod, supportConcepts2ServiceRecords);
var invoiceList = new List<ServiceInvoice>();
ServiceInvoice invoice;
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> sc2sr = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
@@ -46,6 +48,35 @@ namespace ArcheTecklenburg.Invoicing
return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result;
}
private void FuegeAbgelaufeneHilfeplaeneMitAktuellenBewilligungenHinzu(CostBearer costBearer, DateTimeSpan invoicePeriod, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var alleHilfeplaene = DAOFactory.GenericDAO.GetAllActive<SupportConcept>();
var cs = new CustomerService();
foreach (var sc in alleHilfeplaene)
{
foreach (var c2s in sc.CostBearer2SupportConceptList)
{
if (c2s.EndDate < invoicePeriod.StartDate)
{
if (c2s.CostBearer.Oid == costBearer.Oid)
{
foreach (var ap in c2s.ApprovalPeriodList)
{
if (ap.EndDate >= invoicePeriod.StartDate && ap.StartDate <= invoicePeriod.EndDate)
{
var scDc = cs.CreateFlatSupportConcept(sc, c2s);
supportConcepts2ServiceRecords.Add(scDc, new List<ServiceRecordDC>());
break;
}
}
}
}
}
}
}
private ServiceInvoice CreateCollectiveBilling2(CostBearer costBearer, DateTimeSpan invoicePeriod, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var invoice = new ServiceInvoice();
@@ -105,154 +136,142 @@ namespace ArcheTecklenburg.Invoicing
if (scap.StartDate <= serviceInvoicePeriod.Start)
start = serviceInvoicePeriod.Start.Value;
else
start = (DateTime)scap.StartDate;
start = (DateTime)scap.StartDate;
if (scap.EndDate >= serviceInvoicePeriod.End)
ende = serviceInvoicePeriod.End.Value;
else
ende = (DateTime)scap.EndDate.Value;
decimal tagessatz = 0;
var crList = scap.ServiceCategory.CostRatePeriods;
var cr = crList.GetCostRatePeriodForDate(BS.Shared.CostRatePeriodType.AmountOfMoney, start);
if (cr != null && cr.CostRateValue.HasValue)
if (scap.ServiceCategory.Name == "Einmalige Kosten") //gelegentlich haben die Einmalzahlungen, die sie über den Hilfeplan erfassen
{
tagessatz = cr.CostRateValue.Value;
}
while (start <= ende)
{
DateTime monatStart = start; //new DateTime(start.Year, start.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1); //ende.AddDays(1);
if (ende.AddDays(2) < monatStart.AddMonths(1))
foreach (var billingData in data)
{
monatEnde = ende.AddDays(1);
var ii = new InvoiceItem
{
AmountTotal = billingData.AmountTotal,
GrossAmountTotal = billingData.GrossAmountTotal,
ItemPeriodStart = billingData.BillingPeriodStart,
ItemPeriodEnd = billingData.BillingPeriodEnd,
AccountingInterval = billingData.AccountingInterval,
AmountPerUnit = billingData.AmountPerUnit,
UnitCount = billingData.UnitCount,
UnitDescription = scap.Notice,
Notice = String.Format("{0:dd.MM.yyyy} - {1:dd.MM.yyyy}", billingData.BillingPeriodStart, billingData.BillingPeriodEnd),
SupportConceptApprovalPeriodOid = scap.SupportConceptApprovalPeriodOid,
ItemDescription = ""
};
serviceInvoicePeriod.InvoiceItemList.Add(ii);
}
}
else // dies ist der Standard
{
decimal tagessatz = 0;
var crList = scap.ServiceCategory.CostRatePeriods;
var cr = crList.GetCostRatePeriodForDate(BS.Shared.CostRatePeriodType.AmountOfMoney, start);
if (cr != null && cr.CostRateValue.HasValue)
{
tagessatz = cr.CostRateValue.Value;
}
var tageMonat = monatEnde.Subtract(start).Days;
decimal? sumCustomerMonth = 0;
int tageAbwesendImMonat = 0;
foreach (var at in customer.AbsenceTimes)
while (start <= ende)
{
DateTime? startAbw = at.Start;
DateTime? endAbw = at.End;
if (at.Start.HasValue && (at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 3)
|| (!at.End.HasValue && ende.Subtract(at.Start.Value.Date).TotalDays > 3))
DateTime monatStart = start; //new DateTime(start.Year, start.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1); //ende.AddDays(1);
if (ende.AddDays(2) < monatStart.AddMonths(1))
{
if (at.End.HasValue)
monatEnde = ende.AddDays(1);
}
var tageMonat = monatEnde.Subtract(start).Days;
decimal? sumCustomerMonth = 0;
int tageAbwesendImMonat = 0;
int tageAbwesenheit = 0;
foreach (var at in customer.AbsenceTimes)
{
DateTime? startAbw = at.Start;
DateTime? endAbw = at.End;
if (at.Start.HasValue && (at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 3)
|| (!at.End.HasValue && ende.Subtract(at.Start.Value.Date).TotalDays > 3))
{
endAbw = at.End.Value.AddDays(-1);
}
else
{
endAbw = ende.AddDays(-1);
}
if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart))
{
DateTime abwStart = at.Start.Value;
if (start > abwStart)
if (at.End.HasValue)
{
abwStart = start;
endAbw = at.End.Value.AddDays(-1);
}
DateTime abwEnd = monatEnde.AddDays(-1);
if (endAbw.HasValue && endAbw < monatEnde)
else
{
abwEnd = endAbw.Value;
endAbw = ende.AddDays(-1);
}
DateTime dt = abwStart;
while (dt <= abwEnd)
if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart))
{
tageAbwesendImMonat++;
dt = dt.AddDays(1);
DateTime abwStart = at.Start.Value;
if (start > abwStart)
{
abwStart = start;
}
DateTime abwEnd = monatEnde.AddDays(-1);
if (endAbw.HasValue && endAbw < monatEnde)
{
abwEnd = endAbw.Value;
}
DateTime dt = abwStart;
while (dt <= abwEnd)
{
tageAbwesenheit++;
tageAbwesendImMonat++;
dt = dt.AddDays(1);
}
if (tageAbwesenheit > 0)
{
if (tageAbwesendImMonat > 0)
{
var iia = new InvoiceItem();
iia = new InvoiceItem();
iia.UnitCount = tageAbwesenheit;
iia.AmountPerUnit = Math.Round(abwesenheitsReduzierung * tagessatz, 2, MidpointRounding.AwayFromZero);
iia.AmountTotal = iia.UnitCount * iia.AmountPerUnit;
iia.GrossAmountTotal = iia.AmountTotal;
sumCustomerMonth += iia.AmountTotal;
iia.MaxApprovedAmount = null;
iia.ItemDescription = "Klientenname";
iia.UnitDescription = String.Format("{0} {1:dd.MM.yyyy} - {2:dd.MM.yyyy}", at.AbsenceReason.Description, abwStart, abwEnd);
iia.ItemPeriodStart = monatStart;
iia.Notice = String.Format("{0:dd.MM.yyyy} - {1:dd.MM.yyyy}", monatStart, monatEnde.AddDays(-1));
iia.SupportConceptApprovalPeriodOid = scap.SupportConceptApprovalPeriodOid;
iia.ItemDescription = "";
serviceInvoicePeriod.InvoiceItemList.Add(iia);
tageAbwesenheit = 0;
}
}
}
}
}
}
var ii = new InvoiceItem();
ii.UnitCount = tageMonat - tageAbwesendImMonat;
ii.AmountPerUnit = tagessatz;
ii.AmountTotal = ii.UnitCount * ii.AmountPerUnit;
ii.GrossAmountTotal = ii.AmountTotal;
sumCustomerMonth += ii.AmountTotal;
ii.MaxApprovedAmount = null;
ii.ItemDescription = "Klientenname";
ii.UnitDescription = scap.ServiceCategory.Name;
ii.ItemPeriodStart = monatStart;
ii.Notice = String.Format("{0:dd.MM.yyyy} - {1:dd.MM.yyyy}", monatStart, monatEnde.AddDays(-1));
ii.SupportConceptApprovalPeriodOid = scap.SupportConceptApprovalPeriodOid;
ii.ItemDescription = "";
serviceInvoicePeriod.InvoiceItemList.Add(ii);
if (tageAbwesendImMonat > 0)
{
ii = new InvoiceItem();
ii.UnitCount = tageAbwesendImMonat;
ii.AmountPerUnit = Math.Round(abwesenheitsReduzierung * tagessatz, 2, MidpointRounding.AwayFromZero);
var ii = new InvoiceItem();
ii.UnitCount = tageMonat - tageAbwesendImMonat;
ii.AmountPerUnit = tagessatz;
ii.AmountTotal = ii.UnitCount * ii.AmountPerUnit;
ii.GrossAmountTotal = ii.AmountTotal;
sumCustomerMonth += ii.AmountTotal;
ii.MaxApprovedAmount = null;
ii.ItemDescription = "Klientenname";
ii.UnitDescription = scap.ServiceCategory.Name + "Abwesenheit";
ii.UnitDescription = scap.ServiceCategory.Name;
ii.ItemPeriodStart = monatStart;
ii.Notice = String.Format("{0:dd.MM.yyyy} - {1:dd.MM.yyyy}", monatStart, monatEnde.AddDays(-1));
ii.SupportConceptApprovalPeriodOid = scap.SupportConceptApprovalPeriodOid;
ii.ItemDescription = "";
serviceInvoicePeriod.InvoiceItemList.Add(ii);
start = start.AddMonths(1);
start = new DateTime(start.Year, start.Month, 1);
}
start = start.AddMonths(1);
start = new DateTime(start.Year, start.Month, 1);
// Falls Eigenanteil nötig wird bei CollectiveInvoiceCreation von MalteserJohanniterJohanneshaus schauen, die Logik ist nahezu identisch
}
//if (cb2sc.SupportConcept.Oid.HasValue)
//{
// var equity = GetAmountEquityContribution(cb2sc.SupportConcept.Oid.Value, serviceInvoicePeriod);
// if (equity > 0)
// {
// var ii = new InvoiceItem();
// ii.UnitCount = 1;
// ii.AmountPerUnit = equity;
// ii.AmountTotal = -equity;
// ii.GrossAmountTotal = -equity;
// ii.ItemPeriodStart = serviceInvoicePeriod.End.Value;
// ii.Notice = "Eigenanteil";
// ii.SupportConceptApprovalPeriodOid = scap.SupportConceptApprovalPeriodOid;
// ii.ItemDescription = "";
// serviceInvoicePeriod.InvoiceItemList.Add(ii);
// }
//}
}
}
//private decimal GetAmountEquityContribution(long scOid, ServiceInvoicePeriod period)
//{
// decimal equity = 0;
// IList<InvoiceBase> EquityInvoiceList =
// DAOFactory.SearchDAO.GetInvoiceBaseByTypeAndSupportConceptOid(InvoiceType.CustomerEquity, scOid);
// EquityInvoiceList = EquityInvoiceList.Where(i => i.InvoiceDate.HasValue &&
// i.InvoiceDate.Value.InBetween(period.Start.Value, period.End.Value, true)).ToList();
// foreach (InvoiceBase iEquityInvoice in EquityInvoiceList)
// {
// foreach (InvoiceItem item in iEquityInvoice.InvoiceItems)
// {
// if (item.AmountTotal != null)
// {
// equity += item.AmountTotal.Value;
// }
// }
// }
// return equity;
//}
}
}

View File

@@ -53,12 +53,6 @@ namespace ArcheTecklenburg
this.xrTableCell54 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell55 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell56 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
@@ -75,11 +69,21 @@ namespace ArcheTecklenburg
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.Month = new DevExpress.XtraReports.UI.CalculatedField();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupHeader3 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
@@ -109,8 +113,10 @@ namespace ArcheTecklenburg
// GroupFooter
//
this.GroupFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel9,
this.xrLabel7,
this.xrTable4});
this.GroupFooter.HeightF = 20F;
this.GroupFooter.HeightF = 107.7917F;
this.GroupFooter.Name = "GroupFooter";
//
// xrTable4
@@ -194,7 +200,9 @@ namespace ArcheTecklenburg
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport2,
this.GroupHeader1});
this.GroupHeader1,
this.GroupHeader3,
this.GroupFooter1});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
@@ -212,7 +220,7 @@ namespace ArcheTecklenburg
//
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail3,
this.GroupFooter1});
this.GroupHeader2});
this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
this.DetailReport2.DataSource = this.bindingSource1;
this.DetailReport2.Level = 0;
@@ -314,86 +322,6 @@ namespace ArcheTecklenburg
this.xrTableCell56.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomRight;
this.xrTableCell56.Weight = 0.087615396821348113D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable2});
this.GroupFooter1.HeightF = 20F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrTable2
//
this.xrTable2.BorderColor = System.Drawing.Color.Black;
this.xrTable2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTable2.SizeF = new System.Drawing.SizeF(686.25F, 20F);
this.xrTable2.StylePriority.UseBorders = false;
this.xrTable2.StylePriority.UseFont = false;
this.xrTable2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell3,
this.xrTableCell4});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableRow2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableRow2.Weight = 1D;
//
// xrTableCell2
//
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableCell2.Weight = 0.40522130884455265D;
//
// xrTableCell3
//
this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell3.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Zwischensumme:";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell3.Weight = 0.17523083409867882D;
//
// xrTableCell4
//
this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount")});
this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell4.Summary = xrSummary1;
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell4.TextFormatString = "{0:n2} €";
this.xrTableCell4.Weight = 0.08761543537607909D;
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -407,6 +335,7 @@ namespace ArcheTecklenburg
this.xrLabel4,
this.xrTable1});
this.GroupHeader1.HeightF = 304.6249F;
this.GroupHeader1.Level = 1;
this.GroupHeader1.Name = "GroupHeader1";
//
// xrLabel6
@@ -447,8 +376,6 @@ namespace ArcheTecklenburg
//
// xrLabel1
//
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "BusinessPartnerId")});
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("calibri", 10F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(1.041762F, 204.5833F);
this.xrLabel1.Multiline = true;
@@ -456,8 +383,7 @@ namespace ArcheTecklenburg
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(193.75F, 20F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.Text = "xrLabel1";
this.xrLabel1.TextFormatString = "ZAD-Nr. {0}";
this.xrLabel1.Text = "ZAD-Nr. 9007777";
//
// lblAdresse
//
@@ -606,6 +532,122 @@ namespace ArcheTecklenburg
this.Month.FieldType = DevExpress.XtraReports.UI.FieldType.DateTime;
this.Month.Name = "Month";
//
// GroupHeader2
//
this.GroupHeader2.GroupFields.AddRange(new DevExpress.XtraReports.UI.GroupField[] {
new DevExpress.XtraReports.UI.GroupField("CustomerLastname", DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending)});
this.GroupHeader2.HeightF = 0F;
this.GroupHeader2.Name = "GroupHeader2";
//
// GroupHeader3
//
this.GroupHeader3.GroupFields.AddRange(new DevExpress.XtraReports.UI.GroupField[] {
new DevExpress.XtraReports.UI.GroupField("Customer.CustomerOid", DevExpress.XtraReports.UI.XRColumnSortOrder.None)});
this.GroupHeader3.HeightF = 0F;
this.GroupHeader3.Name = "GroupHeader3";
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable2});
this.GroupFooter1.HeightF = 20F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrTable2
//
this.xrTable2.BorderColor = System.Drawing.Color.Black;
this.xrTable2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTable2.SizeF = new System.Drawing.SizeF(686.25F, 20F);
this.xrTable2.StylePriority.UseBorders = false;
this.xrTable2.StylePriority.UseFont = false;
this.xrTable2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell3,
this.xrTableCell4});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableRow2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableRow2.Weight = 1D;
//
// xrTableCell2
//
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableCell2.Weight = 0.40522130884455265D;
//
// xrTableCell3
//
this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell3.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Zwischensumme:";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell3.Weight = 0.17523083409867882D;
//
// xrTableCell4
//
this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount")});
this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell4.Summary = xrSummary1;
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell4.TextFormatString = "{0:n2} €";
this.xrTableCell4.Weight = 0.08761543537607909D;
//
// xrLabel7
//
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("calibri", 10F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(1.041762F, 41.95836F);
this.xrLabel7.Multiline = true;
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(193.75F, 20F);
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "Mit freundlichen Grüßen";
//
// xrLabel9
//
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 87.79169F);
this.xrLabel9.Multiline = true;
this.xrLabel9.Name = "xrLabel9";
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel9.SizeF = new System.Drawing.SizeF(193.75F, 20F);
this.xrLabel9.StylePriority.UseFont = false;
this.xrLabel9.Text = "Heike Holtkamp";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
@@ -633,12 +675,11 @@ namespace ArcheTecklenburg
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
xrWatermark1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrWatermark1.ImageSource"));
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
@@ -675,12 +716,6 @@ namespace ArcheTecklenburg
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
@@ -689,5 +724,15 @@ namespace ArcheTecklenburg
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader3;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
}
}

View File

@@ -19,62 +19,10 @@ namespace ArcheTecklenburg
this.InitializeComponent();
}
// Der LVR bekommt nur die Änderungsmitteilung mit den Abwesenheiten pro Tagesstätte/Kostenstelle aus Hilfeplan
// Die eigentlich Rechnung ist nur für interne Zwecke bzw. sogar nur für den Forderungsexport für die FiBu
// Der LWL bekommt Rechnung plus Liste mit den Abwesenheiten
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
var newSip = new ServiceInvoicePeriodRO();
decimal? sumCustomerMonth = 0;
string prevMonth = null;
var counter = 0;
string grund = null;
//if (pRO.ServiceInvoicePeriods != null)
//{
// foreach (var sip in pRO.ServiceInvoicePeriods)
// {
// counter += 1;
// if (sip.ServiceInvoiceItems != null)
// {
// foreach (var sii in sip.ServiceInvoiceItems)
// {
// sii.CustomerLastname = "";
// if (prevMonth == null)
// {
// sumCustomerMonth = sii.NetAmount;
// sii.NetAmount = null;
// sii.CustomerLastname = String.Format("geb. {0:dd.MM.yyyy} \nAktenzeichen {1} \nZE Nr. 70033 \nAufnahmedatum: {2:dd.MM.yyyy}",
// sii.CustomerBirthdate, sip.CostBearer2SupportConcept.CustomerReferenceNumber, sip.Customer.AssistanceBegin);
// if (sip.Customer.TerminationDate.HasValue)
// {
// sii.CustomerLastname += String.Format("\nEntlassungsdatum: {0:dd.MM.yyyy}", sip.Customer.TerminationDate);
// }
// }
// else if (sii.Notice == prevMonth)
// {
// sumCustomerMonth += sii.NetAmount;
// sii.NetAmount = sumCustomerMonth;
// }
// else if (sii.Notice != prevMonth)
// {
// sumCustomerMonth = sii.NetAmount;
// sii.NetAmount = null;
// }
// prevMonth = sii.Notice;
// sii.RateFactor = counter.ToString();
// if (grund != null)
// {
// sii.ServiceDescription += grund;
// grund = null;
// }
// }
// }
// }
//}
pRO.ServiceInvoicePeriods = pRO.ServiceInvoicePeriods.OrderByDescending(s => s.Customer.FullName).ToList();
this.bindingSource1.DataSource = pRO;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -15,20 +15,20 @@ namespace BetreutesWohnenWoellReports.Invoicing
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
foreach (var item in supportConcepts2ServiceRecords)
{
var csc = item.Key;
var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(csc.CostBearerRelOids[0]);
//foreach (var item in supportConcepts2ServiceRecords)
//{
// var csc = item.Key;
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(csc.CostBearerRelOids[0]);
var org = cb2sc.CostBearer.Organisation;
// var org = cb2sc.CostBearer.Organisation;
if (org.Function != null && org.Function.Value.Contains("Jugendamt"))
{
return new JugendamtInvoiceCreation();
}
}
// if (org.Function != null && org.Function.Value.Contains("Jugendamt"))
// {
return new JugendamtInvoiceCreation();
// }
//}
return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
//return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
}
}

View File

@@ -21,7 +21,7 @@ namespace BetreutesWohnenWoellReports.Invoicing
{
InvoiceItem invoiceItem = CreateInvoiceItem(iServiceRecord, scap, calc);
if (invoiceItem != null)
{
{
list.Add(invoiceItem);
if (iServiceRecord.DistanceInMeter.HasValue && iServiceRecord.DistanceInMeter.Value > 0)
list.Add(CreateFahrtkostenItem(invoiceItem));
@@ -37,12 +37,12 @@ namespace BetreutesWohnenWoellReports.Invoicing
private InvoiceItem CreateFahrtkostenItem(InvoiceItem item)
{
InvoiceItem fahrtkostenItem = new InvoiceItem();
var preis = GetPreis("Fahrtkosten", item.ServiceRecord.Start.Value);
var preis = GetPreis("Fahrkosten", item.ServiceRecord.Start.Value);
fahrtkostenItem.AmountPerUnit = preis;
fahrtkostenItem.AmountTotal = preis * item.ServiceRecord.DistanceInMeter;
fahrtkostenItem.GrossAmountTotal = fahrtkostenItem.AmountTotal;
fahrtkostenItem.ItemDescription = "Fahrtkosten";
fahrtkostenItem.ItemDescription = "Fahrkosten pro km";
fahrtkostenItem.ItemPeriodStart = item.ItemPeriodStart;
fahrtkostenItem.ItemPeriodEnd = item.ItemPeriodEnd;
fahrtkostenItem.MaxApprovedAmount = fahrtkostenItem.AmountTotal;

View File

@@ -35,8 +35,31 @@ namespace BeWo.Report.DefaultReports
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.rowZeichen = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowKlient = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowVersicherungsnummer = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowIKNummer = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowBewilligungsumfang = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellBewilligungsumfang = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.rowFamilienhilfe = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
this.lblUeberschrift = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
@@ -64,34 +87,14 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.rowFamilienhilfe = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.rowZeichen = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowKlient = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowVersicherungsnummer = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowIKNummer = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowBewilligungsumfang = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellBewilligungsumfang = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
@@ -122,9 +125,22 @@ namespace BeWo.Report.DefaultReports
this.topMarginBand1.HeightF = 170.8334F;
this.topMarginBand1.Name = "topMarginBand1";
//
// xrPictureBox1
//
this.xrPictureBox1.ImageAlignment = DevExpress.XtraPrinting.ImageAlignment.MiddleCenter;
this.xrPictureBox1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox1.ImageSource"));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(550.4167F, 38.54181F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(183.5833F, 132.2916F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 109.0417F;
this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel5,
this.xrLabel4,
this.xrLabel3});
this.bottomMarginBand1.HeightF = 111.5F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// Page1
@@ -143,6 +159,214 @@ namespace BeWo.Report.DefaultReports
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 278.1249F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F);
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.rowZeichen,
this.rowKlient,
this.rowVersicherungsnummer,
this.rowIKNummer,
this.rowBewilligungsumfang});
this.xrTable2.SizeF = new System.Drawing.SizeF(733.6664F, 125F);
//
// rowZeichen
//
this.rowZeichen.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell4});
this.rowZeichen.Name = "rowZeichen";
this.rowZeichen.Weight = 1D;
//
// xrTableCell3
//
this.xrTableCell3.CanShrink = true;
this.xrTableCell3.Multiline = true;
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Text = "Ihr Zeichen:";
this.xrTableCell3.Weight = 1.7604168701171876D;
//
// xrTableCell4
//
this.xrTableCell4.CanShrink = true;
this.xrTableCell4.Multiline = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "[CustomerReferenceNumber]";
this.xrTableCell4.Weight = 5.0079144287109374D;
//
// rowKlient
//
this.rowKlient.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell6});
this.rowKlient.Name = "rowKlient";
this.rowKlient.Weight = 1D;
//
// xrTableCell5
//
this.xrTableCell5.CanShrink = true;
this.xrTableCell5.Multiline = true;
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Text = "Für:";
this.xrTableCell5.Weight = 1.7604168701171876D;
//
// xrTableCell6
//
this.xrTableCell6.CanShrink = true;
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Text = "[CustomerFirstName] [CustomerLastName!dd.MM.yyyy]";
this.xrTableCell6.Weight = 5.0079144287109374D;
//
// rowVersicherungsnummer
//
this.rowVersicherungsnummer.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell7,
this.xrTableCell8});
this.rowVersicherungsnummer.Name = "rowVersicherungsnummer";
this.rowVersicherungsnummer.Weight = 1D;
//
// xrTableCell7
//
this.xrTableCell7.CanShrink = true;
this.xrTableCell7.Multiline = true;
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "Versicherungsnummer:";
this.xrTableCell7.Weight = 1.7604168701171876D;
//
// xrTableCell8
//
this.xrTableCell8.CanShrink = true;
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Weight = 5.0079144287109374D;
//
// rowIKNummer
//
this.rowIKNummer.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell11});
this.rowIKNummer.Name = "rowIKNummer";
this.rowIKNummer.Weight = 1D;
//
// xrTableCell10
//
this.xrTableCell10.CanShrink = true;
this.xrTableCell10.Multiline = true;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Text = "IK-Nummer:";
this.xrTableCell10.Weight = 1.7604168701171876D;
//
// xrTableCell11
//
this.xrTableCell11.CanShrink = true;
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.CostBearer2SupportConcept.CostBearer.Organisation.IKKostent" +
"rager")});
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Weight = 5.0079144287109374D;
//
// rowBewilligungsumfang
//
this.rowBewilligungsumfang.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13,
this.cellBewilligungsumfang});
this.rowBewilligungsumfang.Name = "rowBewilligungsumfang";
this.rowBewilligungsumfang.Weight = 1D;
//
// xrTableCell13
//
this.xrTableCell13.CanShrink = true;
this.xrTableCell13.Multiline = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Bewilligungsumfang:";
this.xrTableCell13.Weight = 1.7604168701171876D;
//
// cellBewilligungsumfang
//
this.cellBewilligungsumfang.CanShrink = true;
this.cellBewilligungsumfang.Multiline = true;
this.cellBewilligungsumfang.Name = "cellBewilligungsumfang";
this.cellBewilligungsumfang.Weight = 5.0079144287109374D;
//
// xrTable1
//
this.xrTable1.Font = new DevExpress.Drawing.DXFont("Verdana", 8.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(550.4167F, 10.00001F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.rowFamilienhilfe,
this.xrTableRow2});
this.xrTable1.SizeF = new System.Drawing.SizeF(183.4165F, 172F);
this.xrTable1.StylePriority.UseFont = false;
//
// rowFamilienhilfe
//
this.rowFamilienhilfe.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.rowFamilienhilfe.Name = "rowFamilienhilfe";
this.rowFamilienhilfe.Weight = 1.9583326721191408D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell1.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell1.CanShrink = true;
this.xrTableCell1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell1.Multiline = true;
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell1.StylePriority.UseBorderColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.StylePriority.UseTextAlignment = false;
this.xrTableCell1.Text = "Fachbereich Jugend- und\r\nFamilienhilfe";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell1.Weight = 0.62463084211025488D;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 4.9216668866253608D;
//
// xrTableCell2
//
this.xrTableCell2.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell2.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
this.xrTableCell2.Multiline = true;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell2.StylePriority.UseBorderColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "\r\nAm Wingertsberg 1a\r\n50169 Kerpen\r\nTelefon 02273 991332\r\nTelefax 02273 991535\r\ni" +
"nfo@lisa-woell.de\r\nwww.lisa-woell.de";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 0.62463084211025488D;
//
// xrLabel6
//
this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Verdana", 8F);
this.xrLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel6.Multiline = true;
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(317F, 17.75001F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.StylePriority.UseForeColor = false;
this.xrLabel6.Text = "Lisa Wöll GmbH • Am Wingertsberg 1a • 50169 Kerpen";
//
// lblAdresse
//
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 22.50001F);
@@ -163,7 +387,7 @@ namespace BeWo.Report.DefaultReports
this.lblUeberschrift.LocationFloat = new DevExpress.Utils.PointFloat(0F, 246.25F);
this.lblUeberschrift.Name = "lblUeberschrift";
this.lblUeberschrift.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblUeberschrift.SizeF = new System.Drawing.SizeF(676.8333F, 20F);
this.lblUeberschrift.SizeF = new System.Drawing.SizeF(733.6666F, 20F);
this.lblUeberschrift.StylePriority.UseBackColor = false;
this.lblUeberschrift.StylePriority.UseFont = false;
this.lblUeberschrift.Text = "Sozialpädagogishe Familienhilfe gem. §§27, 31 SGB VIII";
@@ -190,7 +414,7 @@ namespace BeWo.Report.DefaultReports
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(362.5F, 203.25F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(314.5F, 23F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(371.3332F, 23F);
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "xrLabel8";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
@@ -202,7 +426,7 @@ namespace BeWo.Report.DefaultReports
this.lblAbrechnungszeitraum.Multiline = true;
this.lblAbrechnungszeitraum.Name = "lblAbrechnungszeitraum";
this.lblAbrechnungszeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAbrechnungszeitraum.SizeF = new System.Drawing.SizeF(642F, 31.58334F);
this.lblAbrechnungszeitraum.SizeF = new System.Drawing.SizeF(734F, 31.58334F);
this.lblAbrechnungszeitraum.StylePriority.UseFont = false;
this.lblAbrechnungszeitraum.Text = "hiermit berechnen wir für den ... folgende erbrachte Tätigkeiten:";
//
@@ -229,7 +453,7 @@ namespace BeWo.Report.DefaultReports
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(676.833F, 25F);
this.xrTable5.SizeF = new System.Drawing.SizeF(734F, 25F);
//
// xrTableRow23
//
@@ -377,7 +601,7 @@ namespace BeWo.Report.DefaultReports
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow25});
this.xrTable6.SizeF = new System.Drawing.SizeF(676.833F, 25F);
this.xrTable6.SizeF = new System.Drawing.SizeF(734F, 25F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow25
@@ -506,10 +730,10 @@ namespace BeWo.Report.DefaultReports
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(542.3751F, 0F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(588.1854F, 0F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(134.4581F, 25F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(145.8146F, 25F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UsePadding = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;
@@ -517,222 +741,43 @@ namespace BeWo.Report.DefaultReports
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrLabel1.TextFormatString = "{0}";
//
// xrPictureBox1
// xrLabel3
//
this.xrPictureBox1.ImageAlignment = DevExpress.XtraPrinting.ImageAlignment.MiddleCenter;
this.xrPictureBox1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox1.ImageSource"));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(493.4167F, 38.54171F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(183.5833F, 132.2916F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel3.Multiline = true;
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(255.5417F, 65.66664F);
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Kreissparkasse Köln\r\nIBAN: DE23 3705 0299 0120 2724 33\r\nBIC: COKSDE33XXX";
//
// xrLabel6
// xrLabel4
//
this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Verdana", 8F);
this.xrLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel6.Multiline = true;
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(317F, 17.75001F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.StylePriority.UseForeColor = false;
this.xrLabel6.Text = "Lisa Wöll GmbH • Am Wingertsberg 1a • 50169 Kerpen";
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(255.5417F, 0F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(237.875F, 65.66664F);
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.StylePriority.UseTextAlignment = false;
this.xrLabel4.Text = "Amtsgericht Köln, HRB 91655\r\nFinanzamt Bergheim\r\nSteuernummer: 203/5764/1138";
this.xrLabel4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
//
// xrTable1
// xrLabel5
//
this.xrTable1.Font = new DevExpress.Drawing.DXFont("Verdana", 8.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(493.5836F, 10.00001F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.rowFamilienhilfe,
this.xrTableRow2});
this.xrTable1.SizeF = new System.Drawing.SizeF(183.4165F, 172F);
this.xrTable1.StylePriority.UseFont = false;
//
// rowFamilienhilfe
//
this.rowFamilienhilfe.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.rowFamilienhilfe.Name = "rowFamilienhilfe";
this.rowFamilienhilfe.Weight = 1.9583326721191408D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell1.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell1.CanShrink = true;
this.xrTableCell1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell1.Multiline = true;
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell1.StylePriority.UseBorderColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.StylePriority.UseTextAlignment = false;
this.xrTableCell1.Text = "Fachbereich Jugend- und\r\nFamilienhilfe";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell1.Weight = 0.62463084211025488D;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 4.9216668866253608D;
//
// xrTableCell2
//
this.xrTableCell2.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell2.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
this.xrTableCell2.Multiline = true;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell2.StylePriority.UseBorderColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "\r\nAm Wingertsberg 1a\r\n50169 Kerpen\r\nTelefon 02273 991332\r\nTelefax 02273 991535\r\ni" +
"nfo@lisa-woell.de\r\nwww.lisa-woell.de";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 0.62463084211025488D;
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 278.1249F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F);
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.rowZeichen,
this.rowKlient,
this.rowVersicherungsnummer,
this.rowIKNummer,
this.rowBewilligungsumfang});
this.xrTable2.SizeF = new System.Drawing.SizeF(676.8331F, 125F);
//
// rowZeichen
//
this.rowZeichen.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell4});
this.rowZeichen.Name = "rowZeichen";
this.rowZeichen.Weight = 1D;
//
// xrTableCell3
//
this.xrTableCell3.CanShrink = true;
this.xrTableCell3.Multiline = true;
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Text = "Ihr Zeichen:";
this.xrTableCell3.Weight = 1.7604168701171876D;
//
// xrTableCell4
//
this.xrTableCell4.CanShrink = true;
this.xrTableCell4.Multiline = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "[CustomerReferenceNumber]";
this.xrTableCell4.Weight = 5.0079144287109374D;
//
// rowKlient
//
this.rowKlient.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell6});
this.rowKlient.Name = "rowKlient";
this.rowKlient.Weight = 1D;
//
// xrTableCell5
//
this.xrTableCell5.CanShrink = true;
this.xrTableCell5.Multiline = true;
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Text = "Für:";
this.xrTableCell5.Weight = 1.7604168701171876D;
//
// xrTableCell6
//
this.xrTableCell6.CanShrink = true;
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Text = "[CustomerFirstName] [CustomerLastName!dd.MM.yyyy]";
this.xrTableCell6.Weight = 5.0079144287109374D;
//
// rowVersicherungsnummer
//
this.rowVersicherungsnummer.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell7,
this.xrTableCell8});
this.rowVersicherungsnummer.Name = "rowVersicherungsnummer";
this.rowVersicherungsnummer.Weight = 1D;
//
// xrTableCell7
//
this.xrTableCell7.CanShrink = true;
this.xrTableCell7.Multiline = true;
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "Versicherungsnummer:";
this.xrTableCell7.Weight = 1.7604168701171876D;
//
// xrTableCell8
//
this.xrTableCell8.CanShrink = true;
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Weight = 5.0079144287109374D;
//
// rowIKNummer
//
this.rowIKNummer.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell11});
this.rowIKNummer.Name = "rowIKNummer";
this.rowIKNummer.Weight = 1D;
//
// xrTableCell10
//
this.xrTableCell10.CanShrink = true;
this.xrTableCell10.Multiline = true;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Text = "IK-Nummer:";
this.xrTableCell10.Weight = 1.7604168701171876D;
//
// xrTableCell11
//
this.xrTableCell11.CanShrink = true;
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.CostBearer2SupportConcept.CostBearer.Organisation.IKKostent" +
"rager")});
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Weight = 5.0079144287109374D;
//
// rowBewilligungsumfang
//
this.rowBewilligungsumfang.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13,
this.cellBewilligungsumfang});
this.rowBewilligungsumfang.Name = "rowBewilligungsumfang";
this.rowBewilligungsumfang.Weight = 1D;
//
// xrTableCell13
//
this.xrTableCell13.CanShrink = true;
this.xrTableCell13.Multiline = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Bewilligungsumfang:";
this.xrTableCell13.Weight = 1.7604168701171876D;
//
// cellBewilligungsumfang
//
this.cellBewilligungsumfang.CanShrink = true;
this.cellBewilligungsumfang.Multiline = true;
this.cellBewilligungsumfang.Name = "cellBewilligungsumfang";
this.cellBewilligungsumfang.Weight = 5.0079144287109374D;
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(493.4167F, 0F);
this.xrLabel5.Multiline = true;
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(240.5833F, 65.66664F);
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.StylePriority.UseTextAlignment = false;
this.xrLabel5.Text = "Geschäftsführung:\r\nFiona Wöll, B.A. Soziale Arbeit\r\nLisa Wöll, Dipl- Sozialarbeit" +
"erin";
this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// bindingSource1
//
@@ -752,17 +797,17 @@ namespace BeWo.Report.DefaultReports
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(75F, 75F, 170.8334F, 109.0417F);
this.Margins = new DevExpress.Drawing.DXMargins(48F, 45F, 170.8334F, 111.5F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
@@ -826,5 +871,8 @@ namespace BeWo.Report.DefaultReports
private DevExpress.XtraReports.UI.XRTableRow rowBewilligungsumfang;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableCell cellBewilligungsumfang;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
}
}

View File

@@ -31,6 +31,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Spitzabrechnung));
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
@@ -104,6 +105,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow24 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell31 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
@@ -121,7 +123,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel9});
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.ReportHeader.HeightF = 140F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
@@ -197,7 +199,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.xrTableCell6.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell6.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell6.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell6.StylePriority.UseBorderColor = false;
@@ -240,7 +242,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
this.xrTableCell7.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell7.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell7.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell7.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell7.FormattingRules.Add(this.ruleRateFactorNull);
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -590,7 +592,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.xrTableCell17.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell17.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell17.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell17.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell17.Name = "xrTableCell17";
this.xrTableCell17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell17.StylePriority.UseBorderColor = false;
@@ -624,8 +626,8 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 225F);
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 216.6667F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -639,8 +641,8 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 209F);
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 200.6667F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 16F);
@@ -653,8 +655,8 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 192F);
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 183.6667F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 17F);
@@ -720,17 +722,16 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 100F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 100F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel10,
this.xrLabel1,
this.xrLabel_RecipientContactPerson,
this.xrLabel_RecipientDivision,
@@ -743,14 +744,14 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.xrLabel6,
this.xrTable1,
this.xrLabel8});
this.GroupHeader1.Font = new System.Drawing.Font("Arial", 10F);
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.GroupHeader1.HeightF = 626.3333F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
// xrLabel7
//
this.xrLabel7.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Italic);
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Italic);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 8F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -763,7 +764,7 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable3,
this.xrLabel7});
this.ReportFooter.Font = new System.Drawing.Font("Arial", 10F);
this.ReportFooter.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.ReportFooter.HeightF = 132.25F;
this.ReportFooter.KeepTogether = true;
this.ReportFooter.Name = "ReportFooter";
@@ -889,6 +890,21 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.xrTableCell31.Text = "xrTableCell8";
this.xrTableCell31.Weight = 3D;
//
// xrLabel10
//
this.xrLabel10.BackColor = System.Drawing.Color.Transparent;
this.xrLabel10.CanShrink = true;
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0F, 233.6666F);
this.xrLabel10.Multiline = true;
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel10.StylePriority.UseBackColor = false;
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "GP-Nr.: [BusinessPartnerId]";
this.xrLabel10.WordWrap = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
@@ -902,15 +918,19 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
this.topMarginBand1,
this.bottomMarginBand1,
this.GroupHeader1});
this.ComponentStorage.AddRange(new System.ComponentModel.IComponent[] {
this.bindingSource1});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(100, 74, 100, 100);
this.Margins = new DevExpress.Drawing.DXMargins(100F, 74F, 100F, 100F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "17.1";
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
@@ -994,5 +1014,6 @@ namespace BeWo.BetreutesWohnenWoellReports.Alt
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow24;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
}
}

View File

@@ -122,7 +122,4 @@
sich für den Betreuungszeitraum [AccountingPeriod] hieraus:
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -32,13 +32,24 @@ namespace BeWo.BetreutesWohnenWoellReports
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Spitzabrechnung));
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.rowErbrachteLeistung = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
@@ -77,6 +88,14 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTableRow33 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell52 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell53 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable6 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow31 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -95,30 +114,13 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTableRow37 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell59 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell60 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable6 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.Zwischensumme = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Zwischensumme)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
@@ -133,7 +135,7 @@ namespace BeWo.BetreutesWohnenWoellReports
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel9});
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.ReportHeader.HeightF = 140F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
@@ -173,6 +175,122 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTable1.SizeF = new System.Drawing.SizeF(650F, 68F);
this.xrTable1.StylePriority.UseBorderColor = false;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell4,
this.xrTableCell5});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.085D;
//
// xrTableCell4
//
this.xrTableCell4.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.StylePriority.UseBorderColor = false;
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UsePadding = false;
this.xrTableCell4.Text = "Bewilligte Fachleistungsstunden (FLS) gesamt:";
this.xrTableCell4.Weight = 0.78314091609074521D;
//
// xrTableCell5
//
this.xrTableCell5.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell5.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLS")});
this.xrTableCell5.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.StylePriority.UseBorderColor = false;
this.xrTableCell5.StylePriority.UseBorders = false;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell5.Weight = 0.21685908390925479D;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell6});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.085D;
//
// xrTableCell2
//
this.xrTableCell2.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell2.StylePriority.UseBorderColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.Text = "- zzgl. Faktor [RateFactorText2]:";
this.xrTableCell2.Weight = 0.78314091609074521D;
//
// xrTableCell6
//
this.xrTableCell6.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLSWithFactor")});
this.xrTableCell6.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell6.StylePriority.UseBorderColor = false;
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseFont = false;
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell6.Weight = 0.21685908390925479D;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell7});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.085D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.StylePriority.UseBorderColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Weight = 0.78314091609074521D;
//
// xrTableCell7
//
this.xrTableCell7.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell7.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell7.StylePriority.UseBorderColor = false;
this.xrTableCell7.StylePriority.UseBorders = false;
this.xrTableCell7.StylePriority.UsePadding = false;
this.xrTableCell7.Weight = 0.21685908390925479D;
//
// rowErbrachteLeistung
//
this.rowErbrachteLeistung.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
@@ -195,6 +313,19 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTableCell22.Text = "Erbrachte Leistungen:";
this.xrTableCell22.Weight = 0.78314091609074521D;
//
// xrTableCell8
//
this.xrTableCell8.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell8.StylePriority.UseBorderColor = false;
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.StylePriority.UsePadding = false;
this.xrTableCell8.Weight = 0.21685908390925479D;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
@@ -226,8 +357,8 @@ namespace BeWo.BetreutesWohnenWoellReports
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 226F);
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 218.7083F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -241,8 +372,8 @@ namespace BeWo.BetreutesWohnenWoellReports
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 209F);
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 201.7083F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 17F);
@@ -256,8 +387,8 @@ namespace BeWo.BetreutesWohnenWoellReports
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 192F);
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 184.7083F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 17F);
@@ -326,7 +457,7 @@ namespace BeWo.BetreutesWohnenWoellReports
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable3,
this.xrLabel7});
this.ReportFooter.Font = new System.Drawing.Font("Arial", 10F);
this.ReportFooter.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.ReportFooter.HeightF = 132.9583F;
this.ReportFooter.KeepTogether = true;
this.ReportFooter.Name = "ReportFooter";
@@ -454,7 +585,7 @@ namespace BeWo.BetreutesWohnenWoellReports
//
// xrLabel7
//
this.xrLabel7.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Italic);
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Italic);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 8F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -464,17 +595,16 @@ namespace BeWo.BetreutesWohnenWoellReports
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 100F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 100F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel10,
this.xrLabel1,
this.xrLabel_RecipientContactPerson,
this.xrLabel_RecipientDivision,
@@ -487,7 +617,7 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrLabel6,
this.xrTable1,
this.xrLabel8});
this.GroupHeader1.Font = new System.Drawing.Font("Arial", 10F);
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.GroupHeader1.HeightF = 453.7917F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
@@ -513,7 +643,7 @@ namespace BeWo.BetreutesWohnenWoellReports
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable4});
this.Detail1.Font = new System.Drawing.Font("Arial", 9.75F);
this.Detail1.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
this.Detail1.HeightF = 17F;
this.Detail1.Name = "Detail1";
this.Detail1.SortFields.AddRange(new DevExpress.XtraReports.UI.GroupField[] {
@@ -569,11 +699,103 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTableCell53.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell53.Weight = 0.21685908390925479D;
//
// GroupHeader2
//
this.GroupHeader2.GroupFields.AddRange(new DevExpress.XtraReports.UI.GroupField[] {
new DevExpress.XtraReports.UI.GroupField("RateFactor", DevExpress.XtraReports.UI.XRColumnSortOrder.Descending)});
this.GroupHeader2.HeightF = 0F;
this.GroupHeader2.Name = "GroupHeader2";
//
// GroupFooter2
//
this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable6});
this.GroupFooter2.HeightF = 34F;
this.GroupFooter2.Name = "GroupFooter2";
this.GroupFooter2.Visible = false;
//
// xrTable6
//
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow4,
this.xrTableRow10});
this.xrTable6.SizeF = new System.Drawing.SizeF(650F, 34F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell11});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 0.40476190476190466D;
//
// xrTableCell10
//
this.xrTableCell10.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell10.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell10.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell10.StylePriority.UseBorderColor = false;
this.xrTableCell10.StylePriority.UseBorders = false;
this.xrTableCell10.StylePriority.UseFont = false;
this.xrTableCell10.StylePriority.UsePadding = false;
this.xrTableCell10.Text = "Zwischensumme [ItemDescription]:";
this.xrTableCell10.Weight = 2.3494227482722359D;
//
// xrTableCell11
//
this.xrTableCell11.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell11.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceItems.GrossAmountTotal")});
this.xrTableCell11.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell11.StylePriority.UseBorderColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
xrSummary1.FormatString = "{0:c}";
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell11.Summary = xrSummary1;
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell11.Weight = 0.65057725172776437D;
//
// xrTableRow10
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell12});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.40476190476190466D;
//
// xrTableCell12
//
this.xrTableCell12.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell12.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell12.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell12.StylePriority.UseBorderColor = false;
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UseFont = false;
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.Weight = 3D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.GroupFooter1.Font = new System.Drawing.Font("Arial", 9.75F);
this.GroupFooter1.Font = new DevExpress.Drawing.DXFont("Arial", 9.75F);
this.GroupFooter1.HeightF = 132F;
this.GroupFooter1.Name = "GroupFooter1";
this.GroupFooter1.StylePriority.UseFont = false;
@@ -757,7 +979,7 @@ namespace BeWo.BetreutesWohnenWoellReports
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell60.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Claim", "{0:c}")});
this.xrTableCell60.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell60.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell60.Name = "xrTableCell60";
this.xrTableCell60.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell60.StylePriority.UseBorderColor = false;
@@ -768,223 +990,20 @@ namespace BeWo.BetreutesWohnenWoellReports
this.xrTableCell60.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell60.Weight = 0.21685899000901443D;
//
// xrTableRow1
// xrLabel10
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell7});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.085D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.StylePriority.UseBorderColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Weight = 0.78314091609074521D;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell6});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.085D;
//
// xrTableCell2
//
this.xrTableCell2.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell2.StylePriority.UseBorderColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.Text = "- zzgl. Faktor [RateFactorText2]:";
this.xrTableCell2.Weight = 0.78314091609074521D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell4,
this.xrTableCell5});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.085D;
//
// xrTableCell4
//
this.xrTableCell4.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.StylePriority.UseBorderColor = false;
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UsePadding = false;
this.xrTableCell4.Text = "Bewilligte Fachleistungsstunden (FLS) gesamt:";
this.xrTableCell4.Weight = 0.78314091609074521D;
//
// xrTableCell5
//
this.xrTableCell5.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell5.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLS")});
this.xrTableCell5.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.StylePriority.UseBorderColor = false;
this.xrTableCell5.StylePriority.UseBorders = false;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell5.Weight = 0.21685908390925479D;
//
// xrTableCell6
//
this.xrTableCell6.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLSWithFactor")});
this.xrTableCell6.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell6.StylePriority.UseBorderColor = false;
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseFont = false;
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell6.Weight = 0.21685908390925479D;
//
// xrTableCell7
//
this.xrTableCell7.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell7.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell7.StylePriority.UseBorderColor = false;
this.xrTableCell7.StylePriority.UseBorders = false;
this.xrTableCell7.StylePriority.UsePadding = false;
this.xrTableCell7.Weight = 0.21685908390925479D;
//
// xrTableCell8
//
this.xrTableCell8.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell8.StylePriority.UseBorderColor = false;
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.StylePriority.UsePadding = false;
this.xrTableCell8.Weight = 0.21685908390925479D;
//
// GroupHeader2
//
this.GroupHeader2.GroupFields.AddRange(new DevExpress.XtraReports.UI.GroupField[] {
new DevExpress.XtraReports.UI.GroupField("RateFactor", DevExpress.XtraReports.UI.XRColumnSortOrder.Descending)});
this.GroupHeader2.HeightF = 0F;
this.GroupHeader2.Name = "GroupHeader2";
//
// GroupFooter2
//
this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable6});
this.GroupFooter2.HeightF = 34F;
this.GroupFooter2.Name = "GroupFooter2";
this.GroupFooter2.Visible = false;
//
// xrTable6
//
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow4,
this.xrTableRow10});
this.xrTable6.SizeF = new System.Drawing.SizeF(650F, 34F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell11});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 0.40476190476190466D;
//
// xrTableCell10
//
this.xrTableCell10.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell10.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell10.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell10.StylePriority.UseBorderColor = false;
this.xrTableCell10.StylePriority.UseBorders = false;
this.xrTableCell10.StylePriority.UseFont = false;
this.xrTableCell10.StylePriority.UsePadding = false;
this.xrTableCell10.Text = "Zwischensumme [ItemDescription]:";
this.xrTableCell10.Weight = 2.3494227482722359D;
//
// xrTableCell11
//
this.xrTableCell11.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell11.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceItems.GrossAmountTotal")});
this.xrTableCell11.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell11.StylePriority.UseBorderColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
xrSummary1.FormatString = "{0:c}";
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell11.Summary = xrSummary1;
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell11.Weight = 0.65057725172776437D;
//
// xrTableRow10
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell12});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.40476190476190466D;
//
// xrTableCell12
//
this.xrTableCell12.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTableCell12.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell12.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell12.StylePriority.UseBorderColor = false;
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UseFont = false;
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.Weight = 3D;
this.xrLabel10.BackColor = System.Drawing.Color.Transparent;
this.xrLabel10.CanShrink = true;
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0F, 235.7083F);
this.xrLabel10.Multiline = true;
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel10.StylePriority.UseBackColor = false;
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "GP-Nr.: [BusinessPartnerId]";
this.xrLabel10.WordWrap = false;
//
// Zwischensumme
//
@@ -1007,16 +1026,18 @@ namespace BeWo.BetreutesWohnenWoellReports
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(100, 74, 100, 100);
this.Margins = new DevExpress.Drawing.DXMargins(100F, 74F, 100F, 100F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "17.1";
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Zwischensumme)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
@@ -1106,5 +1127,6 @@ namespace BeWo.BetreutesWohnenWoellReports
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
}
}

View File

@@ -121,7 +121,4 @@
<value>anbei sende ich Ihnen die unterschriebenen Nachweise über die im Rahmen des Betreuten Wohnens für [Salutation2] [CustomerFirstName] [CustomerLastName] erbrachten Leistungen zu. Nach unserer Berechnung ergeben sich für den Betreuungszeitraum [AccountingPeriod] hieraus:
</value>
</data>
<metadata name="Zwischensumme.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -123,8 +123,9 @@
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\DiakoneKKKleveBeWo67InvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveSoziotherapieInvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveMitEigenanteilInvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveSoziotherapieInvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveSelbstzahlerInvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveDefaultInvoiceCreation.cs" />
<Compile Include="Invoicing\DiakoneKKKleveInvoiceFactory.cs" />
<Compile Include="AssistenzstundenReport.cs">
@@ -171,6 +172,12 @@
<Compile Include="LeistungsnachweisSoziotherapie.designer.cs">
<DependentUpon>LeistungsnachweisSoziotherapie.cs</DependentUpon>
</Compile>
<Compile Include="RechnungSelbstzahler.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="RechnungSelbstzahler.Designer.cs">
<DependentUpon>RechnungSelbstzahler.cs</DependentUpon>
</Compile>
<Compile Include="Reporting\DkkkAnnualReportFactory.cs" />
<Compile Include="QuittierungsbelegDienstleistung.cs">
<SubType>Component</SubType>
@@ -315,6 +322,10 @@
<DependentUpon>RechnungMitEigenbeteiligung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="RechnungSelbstzahler.resx">
<DependentUpon>RechnungSelbstzahler.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="RechnungSoziotherapie.resx">
<DependentUpon>RechnungSoziotherapie.cs</DependentUpon>
<SubType>Designer</SubType>

View File

@@ -29,7 +29,11 @@ namespace DiakonieKKKleve.Invoicing
{
return new DiakoneKKKleveMitEigenanteilInvoiceCreation();
}
}
if (cb2sc.CostBearer.Organisation != null && cb2sc.CostBearer.Organisation.Name.ToLower().Contains("selbstzahler"))
{
return new DiakoneKKKleveSelbstzahlerCreation();
}
}
}
foreach (var list in supportConcepts2ServiceRecords.Values)
{
@@ -56,14 +60,10 @@ namespace DiakonieKKKleve.Invoicing
}
return ic;
}
}
}
}
return new DiakoneKKKleveDefaultInvoiceCreation();
return new DiakoneKKKleveDefaultInvoiceCreation();
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Services;
namespace DiakonieKKKleve.Invoicing
{
public class DiakoneKKKleveSelbstzahlerCreation : InvoiceCreation
{
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "Selbstzahler";
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
{
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
if (ii.ItemDescription != null && ii.ItemDescription.Contains("Fehlkontakt"))
{
ii.ItemDescription = "Fehlkontakte";
}
else
{
ii.ItemDescription = "Fachleistungsstunden";
}
return ii;
}
}
}

Some files were not shown because too many files have changed in this diff Show More