Visuelle Validierung

+ Angepasste Validierung für Versichertennummer + Versichertenstatus
This commit is contained in:
2024-11-06 18:57:57 +01:00
parent f13de97604
commit e3aa34c3b9
21 changed files with 776 additions and 557 deletions

View File

@@ -962,6 +962,8 @@
<DependentUpon>BSLogoControl.xaml</DependentUpon>
</Compile>
<Compile Include="Converter\AnonymizationRight2VisibilityConverter.cs" />
<Compile Include="Converter\ValidationToTooltipConverter.cs" />
<Compile Include="Converter\ValidationToBrushConverter.cs" />
<Compile Include="Converter\BooleanOrVisibilityMultiConverter.cs" />
<Compile Include="Converter\BooleanAndVisibilityMultiConverter.cs" />
<Compile Include="Converter\BoolNullCheckConverter.cs" />
@@ -995,6 +997,7 @@
<Compile Include="Converter\StringLengthVisibilityMultiConverter.cs" />
<Compile Include="Converter\TooltipTextConverter.cs" />
<Compile Include="Converter\UserPermission2BoolConverter.cs" />
<Compile Include="Converter\ValidationConverter.cs" />
<Compile Include="Converter\ValueConverterGroup.cs" />
<Compile Include="Core\AutoLockUI.cs" />
<Compile Include="Core\BeWoUtils.cs" />

View File

@@ -83,6 +83,16 @@
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:ValidationConverter x:Key="ValidationConverter" />
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">
<conv:ValidationConverter />
<conv:ValidationToBrushConverter />
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="Validation2TooltipConverter">
<conv:ValidationConverter />
<conv:ValidationToTooltipConverter />
</conv:ValueConverterGroup>
<conv:UserPermission2BoolConverter x:Key="UserPermission2BoolConverter" />
<conv:ValueConverterGroup x:Key="UserPermission2ReverseBoolConverter">
<conv:UserPermission2BoolConverter />

View File

@@ -13,7 +13,12 @@ namespace BeWo.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is GkvAbrechnungVM gkv)
if (value is bool val_bool)
{
return val_bool ? null : parameter;
}
if (value is GkvAbrechnungVM gkv)
{
if (parameter is string s)
{
@@ -34,6 +39,7 @@ namespace BeWo.Converter
return mandator.CanEditIKLeistungserbringerTooltip;
}
return "xxx";
}

View File

@@ -0,0 +1,32 @@
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is string val_str && parameter is ValidationType val_type)
{
return Validator.IsValid(val_type, val_str);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is null)
{
return Brushes.Black;
}
if(value is bool val_bool)
{
return val_bool ? Brushes.Black : Brushes.Red;
}
return Brushes.Blue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,36 @@
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationToTooltipConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is null)
{
return null;
}
if (value is bool val_bool && parameter is ValidationType val_type)
{
return val_bool ? null : Validator.InvalidTooltipTxt(val_type);
}
return "xxx";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -14,6 +14,7 @@
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:r="clr-namespace:BeWo.Security"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
@@ -954,10 +955,28 @@
Grid.Row="5"
Grid.Column="2"
Content="{markup:Translate Versichertennummer}" />
<TextBox
Grid.Row="5"
Grid.Column="3"
Height="23"
Margin="3"
Foreground="{Binding Path=InsuranceNumber, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertennummer}}"
Text="{Binding Path=InsuranceNumber, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=InsuranceNumber, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertennummer}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="6"
Grid.Column="2"
Content="{markup:Translate Versichertenstatus}" />
<TextBox
Grid.Row="6"
Grid.Column="3"
Height="23"
Margin="3"
Foreground="{Binding Path=VersichertenStatus, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertenstatus}}"
Text="{Binding Path=VersichertenStatus, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=VersichertenStatus, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertenstatus}}"
ToolTipService.ShowOnDisabled="True" />
<Label
x:Name="lblArchiviert"
Grid.Row="7"
@@ -1163,18 +1182,6 @@
Height="23"
Margin="3"
Text="{Binding Path=HealthInsurance, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="5"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding Path=InsuranceNumber, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="6"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding Path=VersichertenStatus, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="7"

View File

@@ -56,7 +56,12 @@
</Button>
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<CheckBox x:Name="checkbox_size" IsChecked="{Binding Path=IsLarge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="Hidden">Groß</CheckBox>
<CheckBox
x:Name="checkbox_size"
IsChecked="{Binding Path=IsLarge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="Hidden">
Groß
</CheckBox>
</StackPanel>
<TabControl
x:Name="tabcontrol_NotizenKategorien"

View File

@@ -165,432 +165,432 @@
Header="Details"
IsSelected="True">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<GroupBox Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="grid_details">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="grid_details">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Content="Name" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="{markup:Translate OrganisationAbteilung}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name2,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblDebitorNumber"
Grid.Row="2"
Content="{markup:Translate Kundennummer}" />
<TextBox
x:Name="txtDebitorNumber"
Grid.Row="2"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=DebitorNumber,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblGeschaeftspartnernummer"
Grid.Row="3"
Content="{markup:Translate Geschäftspartnernummer}" />
<TextBox
x:Name="txtGeschaeftspartnernummer"
Grid.Row="3"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=BusinessPartnerId,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Content="Funktion" />
<uc:NullItemComboBox
x:Name="comboBox_Function"
Grid.Row="4"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
SelectedValue="{Binding Path=Function, Mode=TwoWay}" />
<Label
x:Name="lblArchiviert"
Grid.Row="5"
Grid.Column="0"
Content="Archiviert" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="5"
Grid.Column="1"
Height="23"
Margin="10,6,3,0"
VerticalAlignment="Stretch"
IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<GroupBox
Grid.Row="1"
Grid.Column="0"
Margin="0,8,0,0"
Header="Adresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=AddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=POBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="1"
Margin="8,8,0,0"
Header="Rechnungsadresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressStreet, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressTown, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPOBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="2"
Margin="8,8,0,0"
HorizontalAlignment="Stretch"
Header="Kontakt"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Telefon
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Fax
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Mail
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Homepage
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Content="{markup:Translate Ansprechpartner}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Phone, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Fax, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Row="2"
Grid.Column="1"
Height="21"
Margin="3"
Click="EMailButton_OnClick"
Content="*"
FontFamily="Wingdings"
IsEnabled="{Binding Path=EMail, Converter={StaticResource ObjectBoolConverter}}" />
<TextBox
Grid.Row="2"
Grid.Column="2"
Height="23"
Margin="3"
Text="{Binding Path=EMail, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Website, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=ContactPerson, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Width="360"
HorizontalAlignment="Left"
Margin="0,8,0,0"
Header="GKV-Abrechnung"
Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</GroupBox.Resources>
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Content="Name" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="{markup:Translate OrganisationAbteilung}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name2,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblDebitorNumber"
Grid.Row="2"
Content="{markup:Translate Kundennummer}" />
<TextBox
x:Name="txtDebitorNumber"
Grid.Row="2"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=DebitorNumber,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblGeschaeftspartnernummer"
Grid.Row="3"
Content="{markup:Translate Geschäftspartnernummer}" />
<TextBox
x:Name="txtGeschaeftspartnernummer"
Grid.Row="3"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=BusinessPartnerId,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Content="Funktion" />
<uc:NullItemComboBox
x:Name="comboBox_Function"
Grid.Row="4"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
SelectedValue="{Binding Path=Function, Mode=TwoWay}" />
<Label
x:Name="lblArchiviert"
Grid.Row="5"
Grid.Column="0"
Content="Archiviert" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="5"
Grid.Column="1"
Height="23"
Margin="10,6,3,0"
VerticalAlignment="Stretch"
IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<GroupBox
Grid.Row="1"
Grid.Column="0"
Margin="0,8,0,0"
Header="Adresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=AddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=POBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="1"
Margin="8,8,0,0"
Header="Rechnungsadresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressStreet, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressTown, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPOBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="2"
Margin="8,8,0,0"
HorizontalAlignment="Stretch"
Header="Kontakt"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Telefon
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Fax
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Mail
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Homepage
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Content="{markup:Translate Ansprechpartner}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Phone, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Fax, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Row="2"
Grid.Column="1"
Height="21"
Margin="3"
Click="EMailButton_OnClick"
Content="*"
FontFamily="Wingdings"
IsEnabled="{Binding Path=EMail, Converter={StaticResource ObjectBoolConverter}}" />
<TextBox
Grid.Row="2"
Grid.Column="2"
Height="23"
Margin="3"
Text="{Binding Path=EMail, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Website, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=ContactPerson, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Width="360"
Margin="0,8,0,0"
HorizontalAlignment="Left"
Header="GKV-Abrechnung"
Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</GroupBox.Resources>
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center">
@@ -602,9 +602,10 @@
HorizontalAlignment="Stretch">
<TextBox
Grid.Row="0"
Grid.Column="1"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKKrankenkasse, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKrankenkasse, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
</DockPanel>
<Label
Grid.Row="1"
@@ -613,6 +614,13 @@
ToolTip="Abrechnungscode + Tarifkennzeichen. Zum Beispiel: 6901000">
Leistungserbringergruppe
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Foreground="{Binding Path=Leistungserbringergruppe, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationLeistungserbringergruppe}}"
Text="{Binding Path=Leistungserbringergruppe, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=Leistungserbringergruppe, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationLeistungserbringergruppe}}"
ToolTipService.ShowOnDisabled="True" />
<Button
x:Name="btn_ik"
Grid.Row="2"
@@ -623,10 +631,6 @@
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
Grid.Row="3"
Grid.Column="0"
@@ -636,7 +640,10 @@
<TextBox
Grid.Row="3"
Grid.Column="1"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKKostentrager, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKostentrager, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="4"
Grid.Column="0"
@@ -646,7 +653,10 @@
<TextBox
Grid.Row="4"
Grid.Column="1"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="5"
Grid.Column="0"
@@ -658,7 +668,10 @@
<TextBox
Grid.Row="5"
Grid.Column="1"
Foreground="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="6"

View File

@@ -932,18 +932,34 @@ namespace BeWo.ViewModel
}
}
}
public string InsuranceNumber
{
get { return _InsuranceNumber; }
set
{
if (!AreDifferent(_InsuranceNumber, value))
return;
_InsuranceNumber = value;
StoreDirtyInformation(AreDifferent(DataContract.InsuranceNumber, value), PropertyName_InsuranceNumber);
FirePropertyChanged(PropertyName_InsuranceNumber);
}
}
public string VersichertenStatus
{
get { return _VersichertenStatus; }
set
{
if (AreDifferent(_VersichertenStatus, value))
{
_VersichertenStatus = value;
StoreDirtyInformation(AreDifferent(DataContract.VersichertenStatus, value), nameof(VersichertenStatus));
FirePropertyChanged(nameof(VersichertenStatus));
}
if (!AreDifferent(_VersichertenStatus, value))
return;
_VersichertenStatus = value;
StoreDirtyInformation(AreDifferent(DataContract.VersichertenStatus, value), nameof(VersichertenStatus));
FirePropertyChanged(nameof(VersichertenStatus));
}
}
public string Environment
@@ -1707,26 +1723,12 @@ namespace BeWo.ViewModel
set
{
if (AreDifferent(_HealthInsurance, value))
{
_HealthInsurance = value;
StoreDirtyInformation(AreDifferent(DataContract.BemerkungenSbd, value), PropertyName_HealthInsurance);
FirePropertyChanged(PropertyName_HealthInsurance);
}
}
}
public string InsuranceNumber
{
get { return _InsuranceNumber; }
if (!AreDifferent(_HealthInsurance, value))
return;
set
{
if (AreDifferent(_InsuranceNumber, value))
{
_InsuranceNumber = value;
StoreDirtyInformation(AreDifferent(DataContract.BemerkungenSbd, value), PropertyName_InsuranceNumber);
FirePropertyChanged(PropertyName_InsuranceNumber);
}
_HealthInsurance = value;
StoreDirtyInformation(AreDifferent(DataContract.HealthInsurance, value), PropertyName_HealthInsurance);
FirePropertyChanged(PropertyName_HealthInsurance);
}
}
public ObservableSortCollection<ValueListEntryDC> EintragKategorien
@@ -2071,13 +2073,13 @@ namespace BeWo.ViewModel
pDataContract.Toilettengang = _Toilettengang;
pDataContract.Aggressiv = _Aggressiv;
pDataContract.Schutzstufe = _Schutzstufe;
pDataContract.Uebernahmeort = _Uebernahmeort;
pDataContract.Verhalten = _Verhalten;
pDataContract.Betreuungsbedarf = _Betreuungsbedarf;
pDataContract.BemerkungenSbd = _BemerkungenSbd;
pDataContract.HealthInsurance = _HealthInsurance;
pDataContract.InsuranceNumber = _InsuranceNumber;
pDataContract.VersichertenStatus = _VersichertenStatus;
pDataContract.Uebernahmeort = _Uebernahmeort;
pDataContract.Verhalten = _Verhalten;
pDataContract.Betreuungsbedarf = _Betreuungsbedarf;
pDataContract.BemerkungenSbd = _BemerkungenSbd;
pDataContract.HealthInsurance = _HealthInsurance;
pDataContract.InsuranceNumber = _InsuranceNumber?.Trim();
pDataContract.VersichertenStatus = _VersichertenStatus?.Trim();
pDataContract.Hygienebelehrung = _Hygienebelehrung;
pDataContract.Migrationshintergrund = _Migrationshintergrund;
pDataContract.SubstitutionNeed = _SubstitutionNeed;

View File

@@ -770,8 +770,8 @@ namespace BeWo.ViewModel
}
public bool IsIKNumberValid
=> DakotaValidator.IsIKNumberValid(IKKrankenkasse)
&& DakotaValidator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
=> Validator.IsIKNumberValid(IKKrankenkasse)
&& Validator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
public string IKKrankenkasse
{
@@ -779,7 +779,7 @@ namespace BeWo.ViewModel
set
{
if (!AreDifferent(_IKKrankenkasse, value))
if (!AreDifferent(_IKKrankenkasse, value))
return;
_IKKrankenkasse = value;
@@ -794,45 +794,45 @@ namespace BeWo.ViewModel
get { return this._IKKostentrager; }
set
{
if (this.AreDifferent(this._IKKostentrager, value))
{
this._IKKostentrager = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKKostentrager, value), nameof(IKKostentrager));
this.FirePropertyChanged(nameof(IKKostentrager));
}
}
}
{
if (!AreDifferent(_IKKostentrager, value))
return;
_IKKostentrager = value;
StoreDirtyInformation(AreDifferent(DataContract.IKKostentrager, value), nameof(IKKostentrager));
FirePropertyChanged(nameof(IKKostentrager));
}
}
public string IKDatenannahmestelle
{
get { return this._IKDatenannahmestelle; }
set
{
if (this.AreDifferent(this._IKDatenannahmestelle, value))
{
this._IKDatenannahmestelle = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKDatenannahmestelle, value), nameof(IKDatenannahmestelle));
this.FirePropertyChanged(nameof(IKDatenannahmestelle));
}
}
}
{
if (!AreDifferent(_IKDatenannahmestelle, value))
return;
_IKDatenannahmestelle = value;
StoreDirtyInformation(AreDifferent(DataContract.IKDatenannahmestelle, value), nameof(IKDatenannahmestelle));
FirePropertyChanged(nameof(IKDatenannahmestelle));
}
}
public string BezDatenannahmestelle
{
get { return this._BezDatenannahmestelle; }
set
{
if (this.AreDifferent(this._BezDatenannahmestelle, value))
{
this._BezDatenannahmestelle = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.BezDatenannahmestelle, value), nameof(BezDatenannahmestelle));
this.FirePropertyChanged(nameof(BezDatenannahmestelle));
}
}
}
{
if (!AreDifferent(_BezDatenannahmestelle, value))
return;
_BezDatenannahmestelle = value;
StoreDirtyInformation(AreDifferent(DataContract.BezDatenannahmestelle, value), nameof(BezDatenannahmestelle));
FirePropertyChanged(nameof(BezDatenannahmestelle));
}
}
public string Leistungserbringergruppe
{
@@ -840,7 +840,7 @@ namespace BeWo.ViewModel
set
{
if (!AreDifferent(_Leistungserbringergruppe, value))
if (!AreDifferent(_Leistungserbringergruppe, value))
return;
_Leistungserbringergruppe = value;
@@ -1060,33 +1060,33 @@ namespace BeWo.ViewModel
protected override OrganisationDC MapToDataContract(OrganisationDC pDataContract, bool doCommit)
{
pDataContract.AccountNumber = this._AccountNumber;
pDataContract.BankCode = this._BankCode;
pDataContract.BankName = this._BankName;
pDataContract.Bic = this._Bic;
pDataContract.IBAN = this._IBAN;
pDataContract.Name = this._Name;
pDataContract.Name2 = this._Name2;
pDataContract.OrganisationNotice = this._Notice;
pDataContract.PostalCode = this._PostalCode;
pDataContract.RelatedPersons = this._PersonRelations.CopyToDCList(doCommit);
pDataContract.Street = this._Street;
pDataContract.Town = this._Town;
pDataContract.AddressLine1 = this._AddressLine1;
pDataContract.InvoiceAddressStreet = this._InvoiceAddressStreet;
pDataContract.InvoiceAddressTown = this._InvoiceAddressTown;
pDataContract.InvoiceAddressPostalCode = this._InvoiceAddressPostalCode;
pDataContract.InvoiceAddressLine1 = this._InvoiceAddressLine1;
pDataContract.IsCalculatingWithFactor = this._IsCalculatingWithFactor;
pDataContract.IsSingleInvoicePerCustomer = this._IsSingleInvoicePerCustomer;
pDataContract.DebitorNumber = this._DebitorNumber;
pDataContract.ActivationType = this._IsArchived ? ActivationTypeId.Archived : ActivationTypeId.Active;
pDataContract.Function = this._Function;
pDataContract.IKDatenannahmestelle = this._IKDatenannahmestelle;
pDataContract.BezDatenannahmestelle = this._BezDatenannahmestelle;
pDataContract.IKKostentrager = this._IKKostentrager;
pDataContract.IKKrankenkasse = this._IKKrankenkasse;
pDataContract.Leistungserbringergruppe = _Leistungserbringergruppe;
pDataContract.AccountNumber = _AccountNumber;
pDataContract.BankCode = _BankCode;
pDataContract.BankName = _BankName;
pDataContract.Bic = _Bic;
pDataContract.IBAN = _IBAN;
pDataContract.Name = _Name;
pDataContract.Name2 = _Name2;
pDataContract.OrganisationNotice = _Notice;
pDataContract.PostalCode = _PostalCode;
pDataContract.RelatedPersons = _PersonRelations.CopyToDCList(doCommit);
pDataContract.Street = _Street;
pDataContract.Town = _Town;
pDataContract.AddressLine1 = _AddressLine1;
pDataContract.InvoiceAddressStreet = _InvoiceAddressStreet;
pDataContract.InvoiceAddressTown = _InvoiceAddressTown;
pDataContract.InvoiceAddressPostalCode = _InvoiceAddressPostalCode;
pDataContract.InvoiceAddressLine1 = _InvoiceAddressLine1;
pDataContract.IsCalculatingWithFactor = _IsCalculatingWithFactor;
pDataContract.IsSingleInvoicePerCustomer = _IsSingleInvoicePerCustomer;
pDataContract.DebitorNumber = _DebitorNumber;
pDataContract.ActivationType = _IsArchived ? ActivationTypeId.Archived : ActivationTypeId.Active;
pDataContract.Function = _Function;
pDataContract.IKDatenannahmestelle = _IKDatenannahmestelle?.Trim();
pDataContract.BezDatenannahmestelle = _BezDatenannahmestelle?.Trim();
pDataContract.IKKostentrager = _IKKostentrager?.Trim();
pDataContract.IKKrankenkasse = _IKKrankenkasse?.Trim();
pDataContract.Leistungserbringergruppe = _Leistungserbringergruppe?.Trim();
pDataContract.BusinessPartnerId = _BusinessPartnerId;
pDataContract.Verfahrensstufe = _Verfahrensstufe;

View File

@@ -96,5 +96,17 @@ namespace Dakota
return input.Trim();
}
}
public static string GetVersichertenstatus(string versichertenStatus)
{
if (versichertenStatus.Length < 5)
return FillFromRight(versichertenStatus, 5, '0');
else if (versichertenStatus.Length == 5)
return versichertenStatus;
else if (versichertenStatus.Length == 7)
return versichertenStatus.Substring(0, 5);
else
throw new ArgumentException($"VersichertenStatus \"{versichertenStatus}\" ist ungültig.");
}
}
}

View File

@@ -229,11 +229,8 @@ namespace Dakota.Logic
{
var info = new InfoAbrechnungsfall();
var versicherten_status = infoParameter.Customer.VersichertenStatus;
var versicherten_status_kurz = versicherten_status.Substring(0, 5);
info.VersichtertenNummer = infoParameter.Customer.InsuranceNumber;
info.Versichertenstatus = versicherten_status_kurz;
info.Versichertenstatus = DakotaUtils.GetVersichertenstatus(infoParameter.Customer.VersichertenStatus);
info.Beleginformation = SchlüsselBeleginformation.KeineBeleguebermittlung;
info.Belegnummer = infoParameter.Customer.CustomerOid.ToString();

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<NameOfLastUsedPublishProfile>BeWo2.0</NameOfLastUsedPublishProfile>
<UseIISExpress>true</UseIISExpress>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<Use64BitIISExpress>false</Use64BitIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />

View File

@@ -88,7 +88,7 @@ namespace BeWo.Service.DCEntityMapper
if (isReady)
{
if(!DakotaValidator.IsOrganisationInformationValid(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse, orga.BezDatenannahmestelle))
if(!Validator.IsOrganisationInformationValid(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse, orga.BezDatenannahmestelle))
{
isReady = false;
tooltip = "Organisation fehlen Informationen";

View File

@@ -147,7 +147,7 @@ namespace BeWo.Service.DCEntityMapper
{
pDataContract.CustomerFirstName = customer.Person.FirstName;
pDataContract.CustomerLastName = customer.Person.LastName;
var error = DakotaValidator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
var error = Validator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
pDataContract.IsGkvValidError = error;
pDataContract.IsGkvValid = error is null;
}

View File

@@ -1007,12 +1007,12 @@ namespace BeWo.Service.ServiceImplementations
var manager = new DakotaManager();
var mandatordc = new OperationsServiceImp().GetMandator();
DakotaValidator.ValidateMandator(mandatordc);
Validator.ValidateMandator(mandatordc);
var gkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkvAbrechnung);
var orgadc = gkvAbrechnungDC.Organisation;
DakotaValidator.ValidateOrganisation(orgadc);
Validator.ValidateOrganisation(orgadc);
var datenannahmestelle = orgadc.IKDatenannahmestelle;
var (datenaustauschreferenz, transfernummer) = GetNextDatenaustauschreferenzTransfernummer(gkvAbrechnung, datenannahmestelle);
@@ -1032,7 +1032,7 @@ namespace BeWo.Service.ServiceImplementations
var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service);
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
DakotaValidator.ValidateCustomer(customerdc);
Validator.ValidateCustomer(customerdc);
manager.Add(servicedc, orgadc, customerdc, mandatordc, dat_short, tra_short);
}

View File

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

View File

@@ -1297,4 +1297,13 @@ namespace BS.Shared
Erprobung,
Echt
}
public enum ValidationType
{
CustomerVersichertenstatus,
CustomerVersichertennummer,
OrganisationIKNumber,
OrganisationLeistungserbringergruppe,
OrganisationBezDatenannahmestelle
}
}

View File

@@ -9,8 +9,49 @@ using System.Threading.Tasks;
namespace BS.Shared.Core
{
public static class DakotaValidator
public static class Validator
{
public static bool? IsValid(ValidationType val_type, string val_str)
{
if (string.IsNullOrEmpty(val_str))
return null;
switch (val_type)
{
case ValidationType.CustomerVersichertenstatus:
return IsVersichertenstatusValid(val_str);
case ValidationType.CustomerVersichertennummer:
return IsVersichertennummerValid(val_str);
case ValidationType.OrganisationIKNumber:
return IsIKNumberValid(val_str);
case ValidationType.OrganisationLeistungserbringergruppe:
return IsLeistungserbringergruppeValid(val_str);
case ValidationType.OrganisationBezDatenannahmestelle:
return IsBezDatenannahmestelleValid(val_str);
}
return false;
}
public static string InvalidTooltipTxt(ValidationType val_type)
{
switch (val_type)
{
case ValidationType.CustomerVersichertenstatus:
return "CustomerVersichertenstatus invalid";
case ValidationType.CustomerVersichertennummer:
return "CustomerVersichertennummer invalid";
case ValidationType.OrganisationIKNumber:
return "OrganisationIKNumber invalid";
case ValidationType.OrganisationLeistungserbringergruppe:
return "OrganisationLeistungserbringergruppe invalid";
case ValidationType.OrganisationBezDatenannahmestelle:
return "OrganisationBezDatenannahmestelle invalid";
}
return "xxx";
}
public static string ValidateCustomer(string insuranceNumber, string versichertenStatus)
{
bool valid_number = IsVersichertennummerValid(insuranceNumber);
@@ -26,21 +67,14 @@ namespace BS.Shared.Core
return null;
}
/// <summary>
/// Validiert in erster Phase den Mandator.
/// </summary>
public static void ValidateMandator(MandatorDC mandatordc)
{
if (mandatordc == null)
throw new GkvException("Mandator ist null");
if (!DakotaValidator.IsIKNumberValid(mandatordc.IKLeistungserbringer))
if (!Validator.IsIKNumberValid(mandatordc.IKLeistungserbringer))
throw new GkvException($"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;
@@ -55,7 +89,6 @@ namespace BS.Shared.Core
if (error != null)
throw new GkvException(error);
}
public static void ValidateOrganisation(OrganisationDC orga)
{
string error = null;
@@ -76,17 +109,22 @@ namespace BS.Shared.Core
if (error != null)
throw new GkvException(error);
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
=> IsIKNumberValid(ik_datenannahmestelle, ik_kostentrager, ik_krankenkasse) && !string.IsNullOrEmpty(bez_datenannahmestelle);
=> IsIKNumberValid(ik_datenannahmestelle, ik_kostentrager, ik_krankenkasse) && IsBezDatenannahmestelleValid(bez_datenannahmestelle);
public static bool IsIKNumberValid(params string[] iks)
=> iks?.All(IsIKNumberValid) ?? false;
public static bool IsBezDatenannahmestelleValid(string bez_datenannahmestelle)
{
return !string.IsNullOrWhiteSpace(bez_datenannahmestelle);
}
public static bool IsIKNumberValid(string iknummer)
{
if (iknummer == null)
return false;
iknummer = iknummer.Trim();
if (iknummer.Length != 9)
return false;
@@ -97,7 +135,12 @@ namespace BS.Shared.Core
if (nummer == null)
return false;
if (nummer.Length < 10)
nummer = nummer.Trim();
if (nummer.Length < 6)
return false;
if (nummer.Length > 12)
return false;
return true;
@@ -107,7 +150,15 @@ namespace BS.Shared.Core
if (status == null)
return false;
if (status.Length != 5 && status.Length != 7)
status = status.Trim();
if (status.Length == 0)
return false;
if (status.Length == 6)
return false;
if (status.Length >= 8)
return false;
return true;
@@ -117,6 +168,8 @@ namespace BS.Shared.Core
if (code == null)
return false;
code = code.Trim();
if (code.Length != 5 && code.Length != 7)
return false;

View File

@@ -135,7 +135,7 @@
<Compile Include="BeWoEntityEnums.cs" />
<Compile Include="Core\ComplexWohnheimbuchungsRelationHelper.cs" />
<Compile Include="Core\AbstractIDSpecificDefaultClass.cs" />
<Compile Include="Core\DakotaValidator.cs" />
<Compile Include="Core\Validator.cs" />
<Compile Include="Core\DebugUtils.cs" />
<Compile Include="Core\ImageUtils.cs" />
<Compile Include="Core\PersonFilterEnum.cs" />