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

This commit is contained in:
2026-03-24 13:50:30 +01:00
55 changed files with 5596 additions and 374 deletions

View File

@@ -173,6 +173,9 @@
<Compile Include="View\Detail\AI\AiPromptbausteinActionResultView.xaml.cs">
<DependentUpon>AiPromptbausteinActionResultView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinComplexSelectionFavoritenView.xaml.cs">
<DependentUpon>AiPromptbausteinComplexSelectionFavoritenView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinComplexSelectionView.xaml.cs">
<DependentUpon>AiPromptbausteinComplexSelectionView.xaml</DependentUpon>
</Compile>
@@ -282,6 +285,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinComplexSelectionFavoritenView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinComplexSelectionView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>

View File

@@ -177,9 +177,11 @@ namespace BeWo.Services
{
var window = _windowFactory.GetAnimatedBeWoWindow(title, control, options.Height, options.Width);
if(windowViewModel is DialogViewModel dialogViewModel)
window.ViewModel = windowViewModel;
if (windowViewModel is DialogViewModel dialogViewModel)
{
dialogViewModel.RequestClose += (s, e) => window.Close();
dialogViewModel.RequestClose += (s, e) => window.Close();
}
if (options.ShowAsDialog)

View File

@@ -10,7 +10,7 @@
x:Key="ai_promptbaustein_folder_itemtemplate"
DataType="{x:Type vm:AiPromptbausteinFolderVM}"
ItemsSource="{Binding Path=SubFolders.VMList}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />

View File

@@ -179,8 +179,7 @@ namespace BeWo.View.Controls.AI
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
viewmodel2.PromptAccepted += PromptAccepted;
popup_promptbaustein_favoriten.Closed += (s, e) => viewmodel2.ResetSelection();
var view2 = new AiPromptbausteinComplexSelectionView(viewmodel2);
view2.ReduceSelection();
var view2 = new AiPromptbausteinComplexSelectionFavoritenView(viewmodel2);
viewmodel2.SelectedFolder = viewmodel2.Folders.VMList[0];
view2.Padding = new Thickness(3);
view2.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;

View File

@@ -121,8 +121,7 @@ namespace BeWo.View.Controls.AI
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
viewmodel2.PromptAccepted += PromptAccepted;
popup_promptbaustein_favoriten.Closed += (s, e) => viewmodel2.ResetSelection();
var view2 = new AiPromptbausteinComplexSelectionView(viewmodel2);
view2.ReduceSelection();
var view2 = new AiPromptbausteinComplexSelectionFavoritenView(viewmodel2);
viewmodel2.SelectedFolder = viewmodel2.Folders.VMList[0];
view2.Padding = new Thickness(3);
view2.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;

View File

@@ -0,0 +1,208 @@
<UserControl
x:Class="BeWo.View.Detail.AI.AiPromptbausteinComplexSelectionFavoritenView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.ViewModel.View.AI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:BeWo.ViewModel"
d:DataContext="{d:DesignInstance Type=ai:AiPromptbausteinSelectionComplexViewModel,
IsDesignTimeCreatable=True}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style
x:Key="PromptListBoxItem"
BasedOn="{StaticResource PhotoListBoxItem}"
TargetType="dxe:ListBoxEditItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox
x:Name="groupbox2"
HorizontalAlignment="Stretch"
Header="Favoriten"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
EditValue="{Binding SelectedPrompt, Mode=TwoWay}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectionMode="Single"
Visibility="{Binding HasFavoriten, Converter={StaticResource BoolVisibilityConverter}}">
<dxe:ListBoxEdit.ItemTemplate>
<DataTemplate>
<Grid
Margin="0,3,0,0"
Background="Transparent"
MouseUp="Grid_MouseUp"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0"
Padding="0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
Text="{Binding Path=Title, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
ToolTipService.ShowDuration="100000">
<TextBox.ToolTip>
<StackPanel Orientation="Vertical">
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
<TextBox
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
<TextBlock
Grid.Column="1"
Margin="0"
Padding="0"
Visibility="{Binding IsInfoVisible, Converter={StaticResource BoolVisibilityConverter}}">
<Hyperlink NavigateUri="{Binding OwnsoftRefLink}" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</Grid>
</DataTemplate>
</dxe:ListBoxEdit.ItemTemplate>
</dxe:ListBoxEdit>
<TextBlock
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding HasFavoriten, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=false}">
Bisher haben Sie noch keine Prompt-Favoriten festgelegt.<LineBreak />
Bitte legen Sie in der Verwaltung Ihre gewünschten Prompt-Favoriten fest.</TextBlock>
</Grid>
</GroupBox>
<!--<GroupBox
Grid.Row="1"
Grid.Column="2"
Header="Details"
Style="{StaticResource ObjectEditGroupBox}">
<Grid
MaxWidth="700"
HorizontalAlignment="Stretch"
Background="#fdfdfd">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="80" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" MinWidth="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Name</Label>
<TextBox
Grid.Row="0"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
Text="{Binding ViewModel.Title, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="Beschreibung" />
<TextBox
Grid.Row="1"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
MaxLength="1024"
Style="{StaticResource TextBoxNotice}"
Text="{Binding ViewModel.Description, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Prompt" />
<TextBox
Grid.Row="2"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
MaxLength="1024"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding ViewModel.Prompt, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap" />
<Label
Grid.Row="3"
Grid.Column="0"
Content="Ersteller:" />
<comboboxes:ComboBoxEmployeeSearch
Grid.Row="3"
Grid.Column="2"
Margin="3"
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding ViewModel.Creator}" />
<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="4"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding IsEditingMode, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>-->
<!--<Button
Grid.Row="1"
Grid.ColumnSpan="3"
Command="{Binding SendCommand}"
Style="{StaticResource PrimaryButton}"
Visibility="{Binding HasFavoriten, Converter={StaticResource BoolVisibilityConverter}}">
Absenden
</Button>-->
</Grid>
</UserControl>

View File

@@ -0,0 +1,62 @@
using BeWo.ViewModel.View.AI;
using BeWo.ViewModel;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiPromptbausteinComplexSelectionView.xaml
/// </summary>
public partial class AiPromptbausteinComplexSelectionFavoritenView : UserControl
{
public AiPromptbausteinSelectionComplexViewModel ViewModel { get; set; }
public AiPromptbausteinComplexSelectionFavoritenView(AiPromptbausteinSelectionComplexViewModel viewModel)
{
InitializeComponent();
DataContext = ViewModel = viewModel;
Loaded += (s, e) =>
{
ViewModel.InitVMList();
listBoxEdit1.UnSelectAll();
};
}
private void Grid_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
{
}
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
private void Grid_MouseUp(object sender, MouseButtonEventArgs e)
{
if (!ViewModel.SendCommand.CanExecute(null))
return;
ViewModel.SendCommand.Execute(null);
e.Handled = true;
}
}
}

View File

@@ -74,6 +74,8 @@
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
EditValue="{Binding SelectedPrompt, Mode=TwoWay}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
@@ -82,8 +84,7 @@
<DataTemplate>
<Grid
Margin="0,3,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Transparent"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />

View File

@@ -46,15 +46,6 @@ namespace BeWo.View.Detail.AI
};
}
public void ReduceSelection()
{
groupBox1.Visibility = Visibility.Collapsed;
splitter.Visibility = Visibility.Collapsed;
groupbox2.Header = "Favoriten";
Grid.SetColumn(groupbox2, 0);
Grid.SetColumnSpan(groupbox2, 3);
}
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (ViewModel is null)

View File

@@ -65,6 +65,8 @@
MinHeight="100"
Padding="4,16,4,16"
AllowDrop="True"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ContextMenuOpening="treeView_ContextMenuOpening"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
@@ -136,6 +138,8 @@
x:Name="listBoxEdit1"
Padding="4,16,4,16"
AllowDrop="False"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ContextMenuOpening="ListBox_ContextMenuOpening"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
@@ -192,8 +196,7 @@
<DataTemplate>
<Grid
Margin="0,3,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Transparent"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />

View File

@@ -1,5 +1,4 @@
<UserControl
x:Name="root"
x:Class="BeWo.View.Detail.AI.AiPromptbausteinPromptView2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
@@ -10,6 +9,7 @@
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel.View.Administration"
x:Name="root"
Width="500"
Height="400">
<UserControl.Resources>
@@ -19,9 +19,7 @@
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid
HorizontalAlignment="Stretch"
Background="#eeeeee">
<Grid HorizontalAlignment="Stretch" Background="#eeeeee">
<Grid Margin="8,4,8,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="80" />
@@ -42,8 +40,7 @@
<TextBox
Grid.Row="0"
Grid.Column="2"
IsEnabled="{Binding CanEdit}"
Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" />
Text="{Binding PromptVM.Title, UpdateSourceTrigger=PropertyChanged, ElementName=root}" />
<Label
Grid.Row="1"
@@ -53,10 +50,9 @@
Grid.Row="1"
Grid.Column="2"
MaxHeight="100"
IsEnabled="{Binding CanEdit}"
MaxLength="1024"
Style="{StaticResource TextBoxNotice}"
Text="{Binding Description, UpdateSourceTrigger=PropertyChanged}"
Text="{Binding PromptVM.Description, UpdateSourceTrigger=PropertyChanged, ElementName=root}"
TextWrapping="Wrap" />
<Label
@@ -66,7 +62,6 @@
<TextBox
Grid.Row="2"
Grid.Column="2"
IsEnabled="{Binding PromptVM.CanEdit, ElementName=root}"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding PromptVM.Prompt, UpdateSourceTrigger=PropertyChanged, ElementName=root}"
TextWrapping="Wrap" />
@@ -80,22 +75,22 @@
Grid.Column="2"
Margin="3"
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding Creator}" />
SelectedCompactEmployeeDC="{Binding PromptVM.Creator, ElementName=root}" />
<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="4"
Grid.Column="2"
Margin="3"
IsChecked="{Binding IsPublic}"
IsEnabled="{Binding CanShareEdit, UpdateSourceTrigger=PropertyChanged}" />
IsChecked="{Binding PromptVM.IsPublic, ElementName=root}"
IsEnabled="{Binding PromptVM.CanShareEdit, UpdateSourceTrigger=PropertyChanged, ElementName=root}" />
<Label Grid.Row="5" Grid.Column="0">Favorit</Label>
<dxe:CheckEdit
Grid.Row="5"
Grid.Column="2"
Margin="3"
IsChecked="{Binding IsFavorite}"
IsChecked="{Binding PromptVM.IsFavorite, ElementName=root}"
IsEnabled="true" />

View File

@@ -13,6 +13,7 @@ using BS.Shared.Core;
using DevExpress.Mvvm;
using BeWo.ServiceProxy;
using BS.Shared.Extensions;
using System.Diagnostics;
namespace BeWo.ViewModel.View.AI
{
@@ -50,7 +51,7 @@ namespace BeWo.ViewModel.View.AI
AskDeleteCommand = new DelegateCommand(AskDelete, () => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModuleServiceRecordChat) && ListVM.SelectedVM is object);
SavePromptCommand = new DelegateCommand<AiConversationMessageVM>(SavePrompt, vm => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit));
AcceptSavePromptCommand = new DelegateCommand(AcceptSavePrompt);
AcceptSavePromptCommand = new DelegateCommand(AcceptSavePrompt, () => !string.IsNullOrWhiteSpace(SavePromptVM?.Title));
CancelSavePromptCommand = new DelegateCommand(CancelSavePrompt);
ListVM = new AiConversationListVM();

View File

@@ -59,7 +59,7 @@ namespace BeWo.ViewModel.View.AI
_SelectedFolder = value;
FirePropertyChanged(nameof(SelectedFolder));
if(SelectedPrompt is object)
if (SelectedPrompt is object)
{
SelectedPrompt.IsSelected = false;
SelectedPrompt = null;
@@ -79,6 +79,14 @@ namespace BeWo.ViewModel.View.AI
public AiPromptbausteinFolderListVM Folders { get; private set; }
public AiActionType LoadedActionType { get; set; }
public bool HasFavoriten
{
get
{
return Folders.Count > 3 && Folders.VMList[0].Prompts.Count > 0;
}
}
public void ResetSelection()
{
if (!IsFavorite)

View File

@@ -20,13 +20,10 @@ namespace BeWo.ViewModel.View.Administration
ViewModel = viewModel;
_IsNew = isNew;
if (!_IsNew)
ViewModel.PropertyChanged += (s, e) =>
{
ViewModel.PropertyChanged += (s, e) =>
{
AcceptCommand.RaiseCanExecuteChanged();
};
}
AcceptCommand.RaiseCanExecuteChanged();
};
}
public AiPromptbausteinFolderVM ViewModel { get; set; }
@@ -35,7 +32,7 @@ namespace BeWo.ViewModel.View.Administration
protected override bool canAccept()
{
return _IsNew || ViewModel.IsDirty;
return (_IsNew || ViewModel.IsDirty) && !string.IsNullOrWhiteSpace(ViewModel.Title);
}
}
}

View File

@@ -15,13 +15,10 @@ namespace BeWo.ViewModel.View.Administration
ViewModel = viewModel;
_IsNew = isNew;
if (!_IsNew)
{
ViewModel.PropertyChanged += (s, e) =>
ViewModel.PropertyChanged += (s, e) =>
{
AcceptCommand.RaiseCanExecuteChanged();
};
}
}
public AiPromptbausteinPromptVM ViewModel { get; private set; }
@@ -30,7 +27,7 @@ namespace BeWo.ViewModel.View.Administration
protected override bool canAccept()
{
return _IsNew || ViewModel.IsDirty;
return (_IsNew || ViewModel.IsDirty) && !string.IsNullOrWhiteSpace(ViewModel.Title);
}
}
}

View File

@@ -68,11 +68,11 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
<userSettings>
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>Office2010Black</value>
</setting>
</DXThemeManager>
</userSettings>
<userSettings>
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>Office2010Black</value>
</setting>
</DXThemeManager>
</userSettings>
</configuration>

View File

@@ -979,6 +979,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RomEV", "ReportImp\RomEV\Ro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UteHengstermannAbwAnker", "ReportImp\UteHengstermannAbwAnker\UteHengstermannAbwAnker.csproj", "{CCDA80D2-C56B-4BCA-8FE9-21907333A098}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KcmGmbHSozio", "ReportImp\KcmGmbHSozio\KcmGmbHSozio.csproj", "{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -12006,6 +12008,30 @@ Global
{CCDA80D2-C56B-4BCA-8FE9-21907333A098}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CCDA80D2-C56B-4BCA-8FE9-21907333A098}.Release|x86.ActiveCfg = Release|Any CPU
{CCDA80D2-C56B-4BCA-8FE9-21907333A098}.Release|x86.Build.0 = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|.NET.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|.NET.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|x86.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Debug|x86.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.DebugRemote|x86.Build.0 = Debug|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|.NET.ActiveCfg = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|.NET.Build.0 = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|Any CPU.Build.0 = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|x86.ActiveCfg = Release|Any CPU
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -12490,6 +12516,7 @@ Global
{C88E2FA3-50DB-4B9D-B0B7-16A719A4199D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{A2F237DC-997D-4B64-BA17-4F5157E4976A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{CCDA80D2-C56B-4BCA-8FE9-21907333A098} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -104,6 +104,42 @@ namespace BeWoPlanerMobil.Controllers
Model.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
Model.PossibleResources = KalenderService.GetAllResources();
if(Model.HasRightToInsertRessourceAppointments || Model.HasRightToViewAllResourceAppointments)
{
var allResources = KalenderService.GetAllResources().OrderBy(r => r.Name).ToList();
var categories2Resources = new Dictionary<ValueListEntryDC, List<ResourceDC>>();
foreach(var category in allResources.Select(resource => resource.ResourceCategory))
{
categories2Resources.AddOrUpdateValueInDictionary(category, allResources.Where(resource => resource.ResourceCategory.Equals(category)).OrderBy(r => r.Name).ToList());
}
Model.ResourceCategories2Resources = categories2Resources.OrderBy(kvp => kvp.Key.DisplayName).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}
if(Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
{
var compactEmployee = EmployeeService.GetActiveCompactEmployeeWithOid(Model.LoggedInEmployee.EmployeeOid.Value);
Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee).OrderBy(employee => employee.LastName).ToList();
}
else
{
Model.MyTeamEmployees = new List<CompactEmployeeDC>();
}
if(Model.HasRightToViewTeams && (Model?.LoggedInEmployee?.EmployeeOid.HasValue ?? false))
{
Model.MyTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(Model.LoggedInEmployee.EmployeeOid.Value).OrderBy(team => team.Name).ToList();
}
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(LoggedInUser.Employee.EmployeeOid);
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(possibleEmployee => Model.SelectedEmployeeOidsForFiltering?.Contains(possibleEmployee.EmployeeOid) ?? false).ToList();
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(possibleCustomer => Model.SelectedCustomerOidsForFiltering?.Contains(possibleCustomer.CustomerOid) ?? false).ToList();
Model.SelectedResourcesForFiltering = Model.PossibleResources.Where(possibleResource => possibleResource.ResourceOid.HasValue && (Model.SelectedResourceOidsForFiltering?.Contains(possibleResource.ResourceOid.Value) ?? false)).ToList();
ReloadAppointments();
}
@@ -114,6 +150,8 @@ namespace BeWoPlanerMobil.Controllers
throw new Exception("Bei DevExpressSchedulerController.ReloadAppointments() ist die Oid des angemeldeten Benutzers wider Erwarten NULL!");
}
UpdateSelectedObjects();
var employeeOid = Model.LoggedInEmployee.EmployeeOid.Value;
var user = LoggedInUser;
@@ -130,15 +168,15 @@ namespace BeWoPlanerMobil.Controllers
employeeOid,
intervalStart,
intervalEnd,
new List<long>(),
new List<long>(),
new List<long>(),
false,
false,
false,
false,
false,
true
Model.SelectedEmployeeOidsForFiltering,
Model.SelectedCustomerOidsForFiltering,
Model.SelectedResourceOidsForFiltering,
Model.ShowOnlyEmployees,
Model.ShowOnlyCustomers,
Model.ShowOnlyResources,
Model.ShowOnlyMyOwnAppointments,
Model.ShowOnlyMyOwnAppointments,
Model.ShowTasks
);
var selectedCustomerOids = Model.PossibleCustomers.Select(s => s.CustomerOid).ToList();
@@ -424,12 +462,35 @@ namespace BeWoPlanerMobil.Controllers
var showMenuItem = false;
//var isTask = appointment.IsTask;
//var isAbsenceTime = appointment.
var isTask = appointment.IsTask;
var isAbsenceTime = appointment.AbsenceReason != null;
if(isTask)
{
//showMenuItem =
}
return JsonConvert.SerializeObject(showMenuItem);
}
private void UpdateSelectedObjects()
{
var list = new List<ResourceDC>();
Model.ResourceCategories2Resources.Values.DoForEach(l => l.DoForEach(s => list.AddIfNotIn(s)));
Model.SelectedEmployees = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOids.Contains(employee.EmployeeOid)).ToList();
Model.SelectedCustomers = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
Model.SelectedResources = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOidsForFiltering.Contains(employee.EmployeeOid)).ToList();
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOidsForFiltering.Contains(customer.CustomerOid)).ToList();
Model.SelectedResourcesForFiltering = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOidsForFiltering.Contains(resource.ResourceOid.Value)).ToList();
Model.SelectedEmployeesForIntervalFinder = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOidsForIntervalFinder.Contains(employee.EmployeeOid)).ToList();
Model.SelectedCustomersForIntervalFinder = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOidsForIntervalFinder.Contains(customer.CustomerOid)).ToList();
Model.SelectedResourcesForIntervalFinder = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOidsForIntervalFinder.Contains(resource.ResourceOid.Value)).ToList();
}
[Authorize]
public ActionResult CheckEmployeeAvailability(string startString, string endString)
{
@@ -446,29 +507,110 @@ namespace BeWoPlanerMobil.Controllers
}
[Authorize]
public ActionResult SelectAllEmployeesForFiltering()
public ActionResult SelectAllEmployeesForFiltering(bool isChecked)
{
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Select(employee => employee.EmployeeOid).ToList();
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltEmployeePopupListPartial");
}
Model.SelectedEmployeeOidsForFiltering = Model.PossibleEmployees.Select(employee => employee.EmployeeOid).ToList();
return PartialView("AptFltEmployeePopupListPartial", Model);
}
[Authorize]
public ActionResult SelectAllCustomersForFiltering(bool isChecked)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltCustomerPopupListPartial");
}
Model.SelectedCustomerOidsForFiltering = Model.PossibleCustomers.Select(customer => customer.CustomerOid).ToList();
return PartialView("AptFltCustomerPopupListPartial", Model);
}
[Authorize]
public ActionResult SelectAllResourcesForFiltering(bool isChecked)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltResourcePopupListPartial");
}
Model.SelectedResourceOidsForFiltering = Model.PossibleResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
return PartialView("AptFltResourcePopupListPartial");
}
[Authorize]
public ActionResult SelectTeamForAppointment(long teamOid)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltEmployeePopupListPartial");
}
var selectedTeam = Model.MyTeams.FirstOrDefault(team => team.TeamOid.Equals(teamOid));
if(selectedTeam is null)
{
return PartialView("AptFltEmployeePopupListPartial");
}
var fullTeamObj = EmployeeService.LoadTeam(teamOid);
Model.SelectedEmployeeOids.AddRangeIfElementsNotIn(fullTeamObj.Member.Select(member => member.EmployeeOid));
return PartialView("AptFltEmployeePopupListPartial");
}
[Authorize]
public ActionResult SelectAllCustomersForFiltering()
public ActionResult UpdateEmployeeSelection(long[] selectedEmployeeOids)
{
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Select(customer => customer.CustomerOid).ToList();
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltEmployeePopupListPartial");
}
return PartialView("AptFltCustomerPopupListPartial");
var selectedEmployees = Model.PossibleEmployees.Where(possibleEmployee => selectedEmployeeOids.Contains(possibleEmployee.EmployeeOid)).ToList();
Model.SelectedEmployeeOidsForFiltering = selectedEmployees.Select(employee => employee.EmployeeOid).ToList();
return PartialView("AptFltEmployeePopupListPartial", Model);
}
[Authorize]
public ActionResult SelectAllResourcesForFiltering()
public ActionResult UpdateCustomerSelection(long[] selectedCustomerOids)
{
Model.SelectedResourcesForFiltering = Model.PossibleResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltCustomerPopupListPartial");
}
return PartialView("AptFltResourcePopupListPartial");
var selectedCustomers = Model.PossibleCustomers.Where(possibleCustomer => selectedCustomerOids.Contains(possibleCustomer.CustomerOid)).ToList();
return PartialView("AptFltCustomerPopupListPartial", Model);
}
[Authorize]
public ActionResult UpdateResourceSelection(long[] selectedResourceOids)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AptFltResourcePopupListPartial");
}
return PartialView("AptFltResourcePopupListPartial", Model);
}
}
}

View File

@@ -4925,7 +4925,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult ChangePassword(FormCollection formCollection)
{
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || LoggedInUser.UserVersion is null)
if(Model is null || false == MobileSessionFacade.IsUserLoggedIn() || LoggedInUser.UserVersion is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
@@ -4946,13 +4946,13 @@ namespace BeWoPlanerMobil.Controllers
{
var checkResult = UserService.CheckPassword(LoggedInUser.UserOid.Value, oldPassword, newPassword);
if(!(checkResult is null))
if(false == checkResult is null)
{
TempData[TempDataConstants.PwChErrKey] = checkResult;
return RedirectToActionPermanent("Main");
}
}
var userName = LoggedInUser.LoginName;
var userVersion = LoggedInUser.UserVersion.Value;

View File

@@ -28,28 +28,20 @@ namespace BeWoPlanerMobil.Controllers
{
get
{
if(!MobileSessionFacade.IsUserLoggedIn())
if(false == MobileSessionFacade.IsUserLoggedIn())
{
RedirectToActionPermanent("Index", "Login");
return null;
}
if (_Model == null)
if(false == _Model is null)
{
_Model = new ReportModel { ReportCreator = GetReportCreator() };
InitModel(_Model);
InitViewModel();
return _Model;
}
//if (((ReportModel) Session[ModelSessionConstants.ReportModelKey])?.LoggedInEmployee is null)
//{
// _Model = new ReportModel {ReportCreator = GetReportCreator()};
// InitModel(_Model);
// Session[ModelSessionConstants.ReportModelKey] = _Model;
//}
//else
//{
// _Model = (ReportModel) Session[ModelSessionConstants.ReportModelKey];
//}
_Model = new ReportModel { ReportCreator = GetReportCreator() };
InitModel(_Model);
InitViewModel();
return _Model;
}
@@ -93,29 +85,33 @@ namespace BeWoPlanerMobil.Controllers
Model.AllTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(LoggedInEmployee.EmployeeOid.Value);
Model.Dokutypes = ValueListService.GetAllValueListEntrysByType(ValueListEntryType.DocumentType);
if (Model.Dokutypes != null)
if(false == Model.Dokutypes is null)
{
Model.Dokutypes = Model.Dokutypes.OrderBy(s => s.ValueListEntryOid).ToArray();
}
if (Model.SelectedCustomerOid.HasValue)
if(Model.SelectedCustomerOid.HasValue)
{
Model.SelectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == Model.SelectedCustomerOid.Value);
}
if (Model.SelectedEmployeeOid.HasValue)
if(Model.SelectedEmployeeOid.HasValue)
{
Model.SelectedEmployee = Model.Employees.FirstOrDefault(employee => employee.EmployeeOid.Equals(Model.SelectedEmployeeOid.Value));
}
if (Model.SelectedTeamOid.HasValue)
if(Model.SelectedTeamOid.HasValue)
{
Model.SelectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid == Model.SelectedTeamOid.Value);
}
if (Model.SelectedOrganisationOid.HasValue)
if(Model.SelectedOrganisationOid.HasValue)
{
Model.SelectedOrganisation= Model.Organisations.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(Model.SelectedOrganisationOid.Value));
}
if (Model.SelectedServiceCategoryOid.HasValue)
if(Model.SelectedServiceCategoryOid.HasValue)
{
Model.SelectedServiceCategory = Model.ServiceCategories.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid == Model.SelectedServiceCategoryOid.Value);
}
@@ -137,12 +133,12 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult Report()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(false == MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
if(!Model.HasRightToViewQuittierungsbelege)
if(false == Model.HasRightToViewQuittierungsbelege)
{
return RedirectToActionPermanent("Main", "Main");
}
@@ -161,7 +157,7 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
if(!Model.HasRightToViewQuittierungsbelege)
if(false == Model.HasRightToViewQuittierungsbelege)
{
return RedirectToActionPermanent("Main", "Main");
}
@@ -171,8 +167,6 @@ namespace BeWoPlanerMobil.Controllers
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
}
}
catch(Exception e)
{
@@ -1232,11 +1226,23 @@ namespace BeWoPlanerMobil.Controllers
Model.QbEntryPageCount = pageCount;
Model.QbEntryCount = rowCount;
reportObjects = reportObjects.Where(x => x != null).ToList();
reportObjects = reportObjects.Where(servicesOverview => false == servicesOverview is null).ToList();
var srOids = new List<long>();
//var srOidsBillable = new List<long>();
reportObjects.DoForEach(x => x.Services.DoForEach(s => srOids.AddIfNotIn(s.ServiceRecordOid)));
//reportObjects.DoForEach(servicesOverview => servicesOverview.Services.DoForEach(s => srOids.AddIfNotIn(s.ServiceRecordOid)));
foreach(var reportObject in reportObjects)
{
foreach(var serviceDetail in reportObject.Services)
{
if(serviceDetail.IsBillable)
{
srOids.AddIfNotIn(serviceDetail.ServiceRecordOid);
}
}
}
Model.ConfirmationReceiptSignatures = OperationsService.LoadAllConfirmationReceiptSignaturesByServiceRecordOids(srOids, out var serviceRecordOidsWithSignature);
@@ -1246,12 +1252,14 @@ namespace BeWoPlanerMobil.Controllers
Model.ReportServiceRecordOids = new List<long>();
reportObjects.DoForEach(ro => ro.Services.DoForEach(s =>
{
Model.ReportServiceRecordOids.AddIfNotIn(s.ServiceRecordOid);
if(s.IsBillable)
{
Model.ReportServiceRecordOids.AddIfNotIn(s.ServiceRecordOid);
}
}));
var hasEmployeeSignature = srOids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, a));
var anyEmployeeSignatures = srOids.Any(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, a));
var hasEmployeeSignature = srOids.All(serviceRecordOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, serviceRecordOid));
var anyEmployeeSignatures = srOids.Any(serviceRecordOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, serviceRecordOid));
var employeeSignatureState = SignatureState.None;
@@ -1265,7 +1273,7 @@ namespace BeWoPlanerMobil.Controllers
employeeSignatureState = SignatureState.All;
}
if(!Model.HasRightToProvideEmployeeSignatureForOthers)
if(false == Model.HasRightToProvideEmployeeSignatureForOthers)
{
// Prüfen, ob alle eigenen ServiceRecords unterschrieben sind
var ownServiceRecordOids = new List<long>();
@@ -1296,20 +1304,26 @@ namespace BeWoPlanerMobil.Controllers
reportObjects.DoForEach(reportObject =>
{
var quittierungsbelegItems = new List<QuittierungsbelegItem>();
bool fristAbgelaufen = false;
var fristAbgelaufen = false;
reportObject.Services.DoForEach(serviceDetail =>
{
quittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail));
if (this.Model.MokSettings != null && this.Model.MokSettings.AnzTageUnterschriftErfolgt > 0)
if(false == serviceDetail.IsBillable)
{
if (DateTime.Now.Date.Subtract(serviceDetail.StartDate).TotalDays > this.Model.MokSettings.AnzTageUnterschriftErfolgt)
{
fristAbgelaufen = true;
}
return;
}
quittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail));
if(false == Model.MokSettings?.AnzTageUnterschriftErfolgt > 0)
{
return;
}
if(DateTime.Now.Date.Subtract(serviceDetail.StartDate).TotalDays > Model.MokSettings.AnzTageUnterschriftErfolgt)
{
fristAbgelaufen = true;
}
});
if(quittierungsbelegItems.Count == 0)
@@ -1319,11 +1333,11 @@ namespace BeWoPlanerMobil.Controllers
var oids = quittierungsbelegItems.Select(s => s.ServiceRecordOid).ToList();
var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Customer, a));
var hasCustomerSignature = srOids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Customer, a));
var employeeSignatureState2 = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Employee);
var employeeSignatureState2 = GetSignatureState(srOids, serviceRecordOidsWithSignature, SignatureType.Employee);
var customerSignatureState = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Customer);
var customerSignatureState = GetSignatureState(srOids, serviceRecordOidsWithSignature, SignatureType.Customer);
var customerSignatureOid = hasCustomerSignature ? customerSignatures.FirstOrDefault(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value)))?.ConfirmationReceiptSignatureOid : null;
var sigs = customerSignatures.Where(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value))).ToList();
@@ -1350,6 +1364,7 @@ namespace BeWoPlanerMobil.Controllers
var customerSignatureServiceRecordOids = new List<long>();
var employeeSignatureServiceRecordOids = new List<long>();
if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer))
{
customerSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Customer];
@@ -1360,7 +1375,7 @@ namespace BeWoPlanerMobil.Controllers
employeeSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Employee];
}
foreach (var quittierungsbelegItem in quittierungsbelegItems)
foreach(var quittierungsbelegItem in quittierungsbelegItems)
{
var serviceRecordOid = quittierungsbelegItem.ServiceRecordOid;
@@ -1374,7 +1389,7 @@ namespace BeWoPlanerMobil.Controllers
employeeOids.AddIfNotIn(serviceDetail.EmployeeOid);
}
if(!Model.HasRightToProvideEmployeeSignatureForOthers)
if(false == Model.HasRightToProvideEmployeeSignatureForOthers)
{
var serviceRecordOidsFromOtherEmployees = reportObject.Services.Where(serviceDetail => !serviceDetail.EmployeeOid.Equals(LoggedInEmployee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid).ToList();
var ownServiceRecordOids = reportObject.Services.Where(serviceDetail => serviceDetail.EmployeeOid.Equals(LoggedInEmployee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid).ToList();

View File

@@ -58,7 +58,12 @@ namespace BeWoPlanerMobil.Controllers
private void InitViewModel()
{
if (Model.HasRightToInsertRessourceAppointments || Model.HasRightToViewAllResourceAppointments)
if(Model is null)
{
throw new Exception("Das Model im SchedulerController ist wider Erwarten null!");
}
if(Model.HasRightToInsertRessourceAppointments || Model.HasRightToViewAllResourceAppointments)
{
var allResources = KalenderService.GetAllResources().OrderBy(r => r.Name).ToList();
@@ -72,51 +77,46 @@ namespace BeWoPlanerMobil.Controllers
Model.ResourceCategories2Resources = categories2Resources.OrderBy(kvp => kvp.Key.DisplayName).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}
if (Model?.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
if(Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
{
var compactEmployee = EmployeeService.GetActiveCompactEmployeeWithOid(Model.LoggedInEmployee.EmployeeOid.Value);
Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee).OrderBy(employee => employee.LastName).ToList();
}
else if (!(Model is null))
else
{
Model.MyTeamEmployees = new List<CompactEmployeeDC>();
}
if (Model.HasRightToViewTeams && (Model?.LoggedInEmployee?.EmployeeOid.HasValue ?? false))
if(Model.HasRightToViewTeams && (Model?.LoggedInEmployee?.EmployeeOid.HasValue ?? false))
{
Model.MyTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(Model.LoggedInEmployee.EmployeeOid.Value).OrderBy(team => team.Name).ToList();
}
if (!(Model is null))
{
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(LoggedInUser.Employee.EmployeeOid);
}
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(LoggedInUser.Employee.EmployeeOid);
if (Model.HasRightToViewCustomerSelectionInScheduler)
if(Model.HasRightToViewCustomerSelectionInScheduler)
{
Model.AllCustomers = CustomerService.GetAllActiveCompactCustomers().OrderBy(customer => customer.LastName).ToList();
}
if (Model.HasRightToViewEmployeeAppointments)
if(Model.HasRightToViewEmployeeAppointments)
{
Model.AllEmployees = EmployeeService.GetAllActiveEmployeesCompact().OrderBy(employee => employee.LastName).ToList();
}
//LoadAppointmentsForDate();
if (Model.SelectedAppointmentOid.HasValue)
if(Model.SelectedAppointmentOid.HasValue)
{
if (Model.Appointments == null)
if(Model.Appointments is null)
{
LoadAppointmentsForDate();
}
Model.SelectedAppointment = Model.Appointments.FirstOrDefault(app => app.SchedulerAppointmentOid.HasValue && app.SchedulerAppointmentOid.Value == Model.SelectedAppointmentOid.Value);
Model.SelectedAppointment = Model.Appointments?.FirstOrDefault(app => app.SchedulerAppointmentOid.HasValue && app.SchedulerAppointmentOid.Value == Model.SelectedAppointmentOid.Value);
}
SetHasResourcesEmployeesOrCustomers();
UpdateSelectedObjects();
}
private void UpdateSelectedObjects()

View File

@@ -27,6 +27,7 @@ namespace BeWoPlanerMobil.Models
public List<ResourceDC> PossibleResources { get; set; }
public List<CompactEmployeeDC> PossibleEmployees { get; set; }
#region Terminformular-Elemente
public List<CompactCustomerDC> SelectedCustomers { get; set; }
public List<ResourceDC> SelectedResources { get; set; }
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
@@ -48,6 +49,7 @@ namespace BeWoPlanerMobil.Models
get => DevExpressSchedulerSessionModel.SelectedResourceOids;
set => DevExpressSchedulerSessionModel.SelectedResourceOids = value;
}
#endregion
public EmployeeAvailabilityObject EmployeeAvailabilityObject { get; set; }
@@ -67,22 +69,101 @@ namespace BeWoPlanerMobil.Models
return null;
}
public List<long> SelectedEmployeesForFiltering
public List<long> SelectedEmployeeOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedEmployeesForFiltering;
set => DevExpressSchedulerSessionModel.SelectedEmployeesForFiltering = value;
get => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering = value;
}
public List<long> SelectedCustomersForFiltering
public List<long> SelectedCustomerOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedCustomersForFiltering;
set => DevExpressSchedulerSessionModel.SelectedCustomersForFiltering = value;
get => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering = value;
}
public List<long> SelectedResourcesForFiltering
public List<long> SelectedResourceOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedResourcesForFiltering;
set => DevExpressSchedulerSessionModel.SelectedResourcesForFiltering = value;
get => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering = value;
}
public List<CompactTeamDC> MyTeams { get; set; } = new List<CompactTeamDC>();
public Dictionary<ValueListEntryDC, List<ResourceDC>> ResourceCategories2Resources { get; set; } = new Dictionary<ValueListEntryDC, List<ResourceDC>>();
public List<CompactEmployeeDC> MyTeamEmployees { get; set; }
public List<long> TeamMemberCustomerOids { get; set; }
public List<CompactEmployeeDC> SelectedEmployeesForFiltering { get; set; }
public List<CompactCustomerDC> SelectedCustomersForFiltering { get; set; }
public List<ResourceDC> SelectedResourcesForFiltering { get; set; }
public List<CompactEmployeeDC> SelectedEmployeesForIntervalFinder { get; set; }
public List<CompactCustomerDC> SelectedCustomersForIntervalFinder { get; set; }
public List<ResourceDC> SelectedResourcesForIntervalFinder { get; set; }
public List<long> SelectedEmployeeOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder = value;
}
public List<long> SelectedCustomerOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedCustomerOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedCustomerOidsForIntervalFinder = value;
}
public List<long> SelectedResourceOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedResourceOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedResourceOidsForIntervalFinder = value;
}
public bool ShowTasks
{
get => DevExpressSchedulerSessionModel.ShowTasks;
set => DevExpressSchedulerSessionModel.ShowTasks = value;
}
public bool ShowOnlyPrivateAppointments
{
get => DevExpressSchedulerSessionModel.ShowOnlyPrivateAppointments;
set => DevExpressSchedulerSessionModel.ShowOnlyPrivateAppointments = value;
}
public bool ShowOnlyEmployees
{
get => DevExpressSchedulerSessionModel.ShowOnlyEmployees;
set => DevExpressSchedulerSessionModel.ShowOnlyEmployees = value;
}
public bool ShowOnlyCustomers
{
get => DevExpressSchedulerSessionModel.ShowOnlyCustomers;
set => DevExpressSchedulerSessionModel.ShowOnlyCustomers = value;
}
public bool ShowOnlyResources
{
get => DevExpressSchedulerSessionModel.ShowOnlyResources;
set => DevExpressSchedulerSessionModel.ShowOnlyResources = value;
}
public bool ShowAbsenceTimes
{
get => DevExpressSchedulerSessionModel.ShowAbsenceTimes;
set => DevExpressSchedulerSessionModel.ShowAbsenceTimes = value;
}
public bool ShowEmployeeColors
{
get => DevExpressSchedulerSessionModel.ShowEmployeeColors;
set => DevExpressSchedulerSessionModel.ShowEmployeeColors = value;
}
public bool ShowOnlyMyOwnAppointments
{
get => DevExpressSchedulerSessionModel.ShowOnlyMyOwnAppointments;
set => DevExpressSchedulerSessionModel.ShowOnlyMyOwnAppointments = value;
}
}
}

View File

@@ -10,20 +10,47 @@ namespace BeWoPlanerMobil.Models
public List<long> SelectedResourceOids { get; set; }
public SchedulerViewType CurrentSchedulerViewType { get; set; }
public List<long> SelectedEmployeesForFiltering { get; set; }
public List<long> SelectedCustomersForFiltering { get; set; }
public List<long> SelectedResourcesForFiltering { get; set; }
public List<long> SelectedEmployeeOidsForFiltering { get; set; }
public List<long> SelectedCustomerOidsForFiltering { get; set; }
public List<long> SelectedResourceOidsForFiltering { get; set; }
public List<long> SelectedEmployeeOidsForIntervalFinder { get; set; }
public List<long> SelectedCustomerOidsForIntervalFinder { get; set; }
public List<long> SelectedResourceOidsForIntervalFinder { get; set; }
public bool ShowTasks { get; set; }
public bool ShowOnlyPrivateAppointments { get; set; }
public bool ShowOnlyEmployees { get; set; }
public bool ShowOnlyCustomers { get; set; }
public bool ShowOnlyResources { get; set; }
public bool ShowAbsenceTimes { get; set; }
public bool ShowEmployeeColors { get; set; }
public bool ShowOnlyMyOwnAppointments { get; set; }
public override void ResetValues()
{
base.ResetValues();
SelectedCustomerOids = null;
SelectedEmployeeOids = null;
SelectedResourceOids = null;
SelectedEmployeesForFiltering = null;
SelectedCustomersForFiltering = null;
SelectedResourcesForFiltering = null;
SelectedCustomerOids = new List<long>();
SelectedEmployeeOids = new List<long>();
SelectedResourceOids = new List<long>();
SelectedEmployeeOidsForFiltering = new List<long>();
SelectedCustomerOidsForFiltering = new List<long>();
SelectedResourceOidsForFiltering = new List<long>();
SelectedEmployeeOidsForIntervalFinder = new List<long>();
SelectedCustomerOidsForIntervalFinder = new List<long>();
SelectedResourceOidsForIntervalFinder = new List<long>();
ShowTasks = false;
ShowOnlyPrivateAppointments = false;
ShowOnlyEmployees = false;
ShowOnlyCustomers = false;
ShowOnlyResources = false;
ShowAbsenceTimes = false;
ShowEmployeeColors = false;
ShowOnlyMyOwnAppointments = false;
}
}
}

View File

@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared;
using BS.Shared.Core;
@@ -21,19 +20,21 @@ namespace BeWoPlanerMobil.Models
SessionModel.ResetValues();
}
public SchedulerSessionModel SchedulerSessionModel
{
get
{
return SessionModel as SchedulerSessionModel;
}
}
public SchedulerSessionModel SchedulerSessionModel => SessionModel as SchedulerSessionModel;
public List<long> TeamMemberCustomerOids { get; set; }
public DateTime SelectedDate { get { return SchedulerSessionModel.SelectedDate; } set { SchedulerSessionModel.SelectedDate = value; } }
public DateTime SelectedDate
{
get => SchedulerSessionModel.SelectedDate;
set => SchedulerSessionModel.SelectedDate = value;
}
public long? SelectedAppointmentOid { get { return SchedulerSessionModel.SelectedAppointmentOid; } set { SchedulerSessionModel.SelectedAppointmentOid = value; } }
public long? SelectedAppointmentOid
{
get => SchedulerSessionModel.SelectedAppointmentOid;
set => SchedulerSessionModel.SelectedAppointmentOid = value;
}
public SchedulerAppointmentDC SelectedAppointment { get; set; }
@@ -42,11 +43,11 @@ namespace BeWoPlanerMobil.Models
public List<AppointmentListItem> AppointmentListItems { get; set; }
public bool HasRightToEditAppointment(String identifier)
public bool HasRightToEditAppointment(string identifier)
{
var appointment = AppointmentListItems.FirstOrDefault(app => app.Identifier.Equals(identifier))?.SchedulerAppointment; //Appointments.FirstOrDefault(app => app.SchedulerAppointmentOid.HasValue && app.SchedulerAppointmentOid.Value == appointmentOid);
var appointment = AppointmentListItems.FirstOrDefault(app => app.Identifier.Equals(identifier))?.SchedulerAppointment;
return appointment != null && BS.Shared.Core.Utils.CheckSchedulerRights(appointment.CustomerList, appointment.ResourceList, appointment.EmployeeList, appointment.Originator, appointment.SchedulerAppointmentOid is null, SchedulerRightsCheckType.Edit, LoggedInUser, TeamMemberCustomerOids ?? new List<long>());
return appointment != null && Utils.CheckSchedulerRights(appointment.CustomerList, appointment.ResourceList, appointment.EmployeeList, appointment.Originator, appointment.SchedulerAppointmentOid is null, SchedulerRightsCheckType.Edit, LoggedInUser, TeamMemberCustomerOids ?? new List<long>());
}
public string DescriptionToEdit => SelectedAppointment?.Description ?? string.Empty;
@@ -65,16 +66,20 @@ namespace BeWoPlanerMobil.Models
{
var allResources = new List<ResourceDC>();
foreach(var cat2res in ResourceCategories2Resources)
foreach(var cat2Res in ResourceCategories2Resources)
{
allResources.AddRangeIfElementsNotIn(cat2res.Value);
allResources.AddRangeIfElementsNotIn(cat2Res.Value);
}
return allResources.OrderBy(resource => resource.Name).ToList();
}
}
public List<long> SelectedResourceOids { get { return SchedulerSessionModel.SelectedResourceOids; } set { SchedulerSessionModel.SelectedResourceOids = value; } }
public List<long> SelectedResourceOids
{
get => SchedulerSessionModel.SelectedResourceOids;
set => SchedulerSessionModel.SelectedResourceOids = value;
}
public List<ResourceDC> SelectedResources { get; set; }
@@ -103,13 +108,21 @@ namespace BeWoPlanerMobil.Models
public List<CompactEmployeeDC> AllEmployees { get; set; } = new List<CompactEmployeeDC>();
public List<long> SelectedEmployeeOids { get { return SchedulerSessionModel.SelectedEmployeeOids; } set { SchedulerSessionModel.SelectedEmployeeOids = value; } }
public List<long> SelectedEmployeeOids
{
get => SchedulerSessionModel.SelectedEmployeeOids;
set => SchedulerSessionModel.SelectedEmployeeOids = value;
}
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
public List<CompactCustomerDC> AllCustomers { get; set; } = new List<CompactCustomerDC>();
public List<long> SelectedCustomerOids { get { return SchedulerSessionModel.SelectedCustomerOids; } set { SchedulerSessionModel.SelectedCustomerOids = value; } }
public List<long> SelectedCustomerOids
{
get => SchedulerSessionModel.SelectedCustomerOids;
set => SchedulerSessionModel.SelectedCustomerOids = value;
}
public List<CompactCustomerDC> SelectedCustomers { get; set; } = new List<CompactCustomerDC>();
@@ -122,11 +135,25 @@ namespace BeWoPlanerMobil.Models
public bool ShowCustomerButton => IsInEditMode ? HasRightToInsertCustomerAppointments : HasRightToEditCustomerAppointments;
//IntervalFinder
public List<long> SelectedEmployeeOidsForIntervalFinder { get { return SchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder; } set { SchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder = value; } }
public List<long> SelectedEmployeeOidsForIntervalFinder
{
get => SchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder;
set => SchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder = value;
}
public List<CompactEmployeeDC> SelectedEmployeesForIntervalFinder { get; set; } = new List<CompactEmployeeDC>();
public List<long> SelectedCustomerOidsForIntervalFinder { get { return SchedulerSessionModel.SelectedCustomerOidsForIntervalFinder; } set { SchedulerSessionModel.SelectedCustomerOidsForIntervalFinder = value; } }
public List<long> SelectedCustomerOidsForIntervalFinder
{
get => SchedulerSessionModel.SelectedCustomerOidsForIntervalFinder;
set => SchedulerSessionModel.SelectedCustomerOidsForIntervalFinder = value;
}
public List<CompactCustomerDC> SelectedCustomersForIntervalFinder { get; set; } = new List<CompactCustomerDC>();
public List<long> SelectedResourceOidsForIntervalFinder { get { return SchedulerSessionModel.SelectedResourceOidsForIntervalFinder; } set { SchedulerSessionModel.SelectedResourceOidsForIntervalFinder = value; } }
public List<long> SelectedResourceOidsForIntervalFinder
{
get => SchedulerSessionModel.SelectedResourceOidsForIntervalFinder;
set => SchedulerSessionModel.SelectedResourceOidsForIntervalFinder = value;
}
public List<ResourceDC> SelectedResourcesForIntervalFinder { get; set; } = new List<ResourceDC>();
public Dictionary<DateTimeSpan, Dictionary<DateTime, bool>> FreeIntervals { get; set; } = new Dictionary<DateTimeSpan, Dictionary<DateTime, bool>>();
@@ -149,38 +176,82 @@ namespace BeWoPlanerMobil.Models
}
}
public bool IsInIntervalFinderMode { get { return SchedulerSessionModel.IsInIntervalFinderMode; } set { SchedulerSessionModel.IsInIntervalFinderMode = value; } }
public DateTime? IntervalStartDate { get { return SchedulerSessionModel.IntervalStartDate; } set { SchedulerSessionModel.IntervalStartDate = value; } }
public DateTime? IntervalEndDate { get { return SchedulerSessionModel.IntervalEndDate; } set { SchedulerSessionModel.IntervalEndDate = value; } }
public bool IsInIntervalFinderMode
{
get => SchedulerSessionModel.IsInIntervalFinderMode;
set => SchedulerSessionModel.IsInIntervalFinderMode = value;
}
public DateTime? IntervalStartDate
{
get => SchedulerSessionModel.IntervalStartDate;
set => SchedulerSessionModel.IntervalStartDate = value;
}
public DateTime? IntervalEndDate
{
get => SchedulerSessionModel.IntervalEndDate;
set => SchedulerSessionModel.IntervalEndDate = value;
}
public string IntervalStartDateStr => IntervalStartDate.HasValue ? IntervalStartDate.Value.ToString("yyyy-MM-ddTHH:mm") : string.Empty;
public string IntervalEndDateStr => IntervalEndDate.HasValue ? IntervalEndDate.Value.ToString("yyyy-MM-ddTHH:mm") : string.Empty;
public string IntervalStartTimeStr => IntervalStartDate.HasValue ? $"{IntervalStartDate:HH:mm}" : string.Empty;
public string IntervalEndTimeStr => IntervalEndDate.HasValue ? $"{IntervalEndDate:HH:mm}" : string.Empty;
public int? IntervalDuration { get { return SchedulerSessionModel.IntervalDuration; } set { SchedulerSessionModel.IntervalDuration = value; } }
public int? IntervalDuration
{
get => SchedulerSessionModel.IntervalDuration;
set => SchedulerSessionModel.IntervalDuration = value;
}
public string IntervalDurationStr => IntervalDuration.HasValue ? $"{IntervalDuration}" : string.Empty;
[Display(Name = "Ganztägig")]
public bool IsAllDay { get { return SchedulerSessionModel.IsAllDay; } set { SchedulerSessionModel.IsAllDay = value; } }
public bool IsAllDay
{
get => SchedulerSessionModel.IsAllDay;
set => SchedulerSessionModel.IsAllDay = value;
}
[Display(Name = "Privat")]
public bool IsPrivate { get { return SchedulerSessionModel.IsPrivate; } set { SchedulerSessionModel.IsPrivate = value; } }
public bool IsPrivate
{
get => SchedulerSessionModel.IsPrivate;
set => SchedulerSessionModel.IsPrivate = value;
}
public List<CompactEmployeeDC> MyTeamEmployees { get; set; }
public List<long> SelectedResourceOidsForFiltering { get { return SchedulerSessionModel.SelectedResourceOidsForFiltering; } set { SchedulerSessionModel.SelectedResourceOidsForFiltering = value; } }
public List<long> SelectedResourceOidsForFiltering
{
get => SchedulerSessionModel.SelectedResourceOidsForFiltering;
set => SchedulerSessionModel.SelectedResourceOidsForFiltering = value;
}
public List<ResourceDC> SelectedResourcesForFiltering { get; set; }
public List<long> SelectedEmployeeOidsForFiltering { get { return SchedulerSessionModel.SelectedEmployeeOidsForFiltering; } set { SchedulerSessionModel.SelectedEmployeeOidsForFiltering = value; } }
public List<long> SelectedEmployeeOidsForFiltering
{
get => SchedulerSessionModel.SelectedEmployeeOidsForFiltering;
set => SchedulerSessionModel.SelectedEmployeeOidsForFiltering = value;
}
public List<CompactEmployeeDC> SelectedEmployeesForFiltering { get; set; }
public List<long> SelectedCustomerOidsForFiltering { get { return SchedulerSessionModel.SelectedCustomerOidsForFiltering; } set { SchedulerSessionModel.SelectedCustomerOidsForFiltering = value; } }
public List<long> SelectedCustomerOidsForFiltering
{
get => SchedulerSessionModel.SelectedCustomerOidsForFiltering;
set => SchedulerSessionModel.SelectedCustomerOidsForFiltering = value;
}
public List<CompactCustomerDC> SelectedCustomersForFiltering { get; set; }
public List<CompactTeamDC> MyTeams { get; set; } = new List<CompactTeamDC>();
public bool ShouldLoadTasks { get { return SchedulerSessionModel.ShouldLoadTasks; } set { SchedulerSessionModel.ShouldLoadTasks = value; } }
public bool ShouldLoadTasks
{
get => SchedulerSessionModel.ShouldLoadTasks;
set => SchedulerSessionModel.ShouldLoadTasks = value;
}
}
public class WeekViewObject

View File

@@ -1,7 +1,11 @@
@using BeWoPlanerMobil.Util
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
<script type="text/javascript">
@foreach(var customer in Model.PossibleCustomers)
{
var checkedValue = Model.SelectedCustomersForFiltering.Contains(customer) ? "checked" : string.Empty;
</script>
<div class="custom-control custom-checkbox customer-text">
<input type="checkbox" class="custom-control-input" id="customer-@customer.CustomerOid-checkbox" @checkedValue onchange="window.changeCustomerListSelection()" />
<label class="custom-control-label customer-name-label" for="customer-@customer.CustomerOid-checkbox">@customer.DetailDescription</label>
</div>
}

View File

@@ -1,7 +1,103 @@
@using BeWoPlanerMobil.Util
@using BS.Shared.Extensions
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
<script type="text/javascript">
function selectAllCustomersOnChange() {
const isChecked = $("#all-customers-checkbox").prop("checked");
</script>
$("#customer-input-container").load("@Url.Action("SelectAllCustomersForFiltering")", { isChecked: isChecked }, () => { scheduler.Refresh(); });
}
function customerListSearchOnChange() {
var text = $("#customer-search-input").val().toLowerCase();
const entries = $(".customer-text");
if(text.length === 0) {
entries.show();
}
$.each(entries, function (index, item) {
const customer = $(item);
if(customer.find(".customer-name-label").text().toLowerCase().includes(text)) {
customer.show();
} else {
customer.hide();
}
});
}
function resetCustomerSeach() {
$("#customer-search-input").val("");
$(".customer-text").show();
}
function removeSelectedCustomer(customerOid) {
const checkbox = $(`#customer-${customerOid}-checkbox`);
if(checkbox.length) {
checkbox.prop("checked", false);
}
changeCustomerListSelection();
}
function changeCustomerListSelection() {
const selectedCustomerOids = $("#customer-input-container input:checked").map(function () {return $(this).attr("id").split("-")[1];}).get();
const allCustomersCount = $("#customer-input-container input[type=checkbox]").map(function () {return $(this).attr("id").split("-")[1];}).get();
const selectedCustomersCount = selectedCustomerOids.length;
$("#all-customers-checkbox").prop("checked", (allCustomersCount === selectedCustomersCount));
$("#customer-input-container").load("@Url.Action("UpdateCustomerSelection")", { selectedCustomerOids: selectedCustomerOids }, () => { scheduler.Refresh(); });
}
</script>
<div class="modal" tabindex="-1" role="dialog" id="customers-popup-apt-flt">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title text-center w-100 font-weight-bold">
<span class="fas fa-user text-bewo-customers"></span>
Klienten
</h6>
<button type="button" class="close" data-dismiss="modal" onclick="resetCustomerSeach()">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
@{
var allCustomersCheckedVal = Model.PossibleCustomers.AreListEqual(Model.SelectedCustomers) ? "checked" : string.Empty;
}
<div class="custom-control custom-checkbox custom-control-inline mx-auto">
<input type="checkbox" class="custom-control-input" id="all-customers-checkbox" @allCustomersCheckedVal onchange="selectAllCustomersOnChange()" />
<label class="custom-control-label" for="all-customers-checkbox">Alle</label>
</div>
</div>
</div>
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="customerListSearchOnChange()" id="customer-search-input" />
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onclick="resetCustomerSeach()">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
<div id="customer-input-container">
@Html.Partial("AptFltCustomerPopupListPartial", Model)
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
</div>
</div>
</div>
</div>

View File

@@ -1,7 +1,11 @@
@using BeWoPlanerMobil.Util
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
<script type="text/javascript">
@foreach(var employee in Model.PossibleEmployees)
{
var checkedValue = Model.SelectedEmployeesForFiltering.Contains(employee) ? "checked" : string.Empty;
</script>
<div class="custom-control custom-checkbox employee-text">
<input type="checkbox" class="custom-control-input" id="employee-@employee.EmployeeOid-checkbox" @checkedValue onchange="window.changeEmployeeListSelection()" />
<label class="custom-control-label employee-name-label" for="employee-@employee.EmployeeOid-checkbox">@employee.DetailDescription</label>
</div>
}

View File

@@ -6,20 +6,7 @@
function selectAllEmployeesOnChange() {
const isChecked = $("#all-employees-checkbox").prop("checked");
$("#employee-input-container").load(
"@Url.Action("SelectAllEmployees")",
{
isChecked: isChecked
},
() => {
$("#selected-employees-list").load(
"@Url.Action("LoadUpdatedEmployees")",
() => {
$("#one-day-scheduler-partial-container").load('@Url.Action("FetchAppointments", "Scheduler")');
}
);
}
);
$("#employee-input-container").load("@Url.Action("SelectAllEmployeesForFiltering")", { isChecked: isChecked }, () => { scheduler.Refresh(); });
}
function employeeListSearchOnChange() {
@@ -45,5 +32,102 @@
function resetEmployeeSearch() {
$("#employee-search-input").val("");
$(".employee-text").show();
}
function selectTeamForAppointment(teamOid) {
$("#employee-input-container").load("@Url.Action("SelectTeamForAppointment")", { teamOid: teamOid }, () => {
scheduler.Refresh();
});
}
function removeSelectedEmployee(employeeOid) {
const checkbox = $(`#employee-${employeeOid}-checkbox`);
if(checkbox.length) {
checkbox.prop("checked", false);
}
changeEmployeeListSelection();
}
function changeEmployeeListSelection() {
const selectedEmployeeOids = $("#employee-input-container input:checked").map(function() { return $(this).attr("id").split("-")[1]; }).get();
const allEmployeesCount = $("#employee-input-container input[type=checkbox]").map(function () { return $(this).attr("id").split("-")[1]; }).get().length;
const selectedEmployeesCount = selectedEmployeeOids.length;
console.log(selectedEmployeeOids);
$("#all-employees-checkbox").prop("checked", (allEmployeesCount === selectedEmployeesCount));
$("#employee-input-container").load("@Url.Action("UpdateEmployeeSelection", "DevExpressScheduler")", {selectedEmployeeOids: selectedEmployeeOids }, () => { scheduler.Refresh(); });
}
</script>
<div class="modal" tabindex="-1" role="dialog" id="employees-popup-apt-flt">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title text-center w-100 font-weight-bold">
<span class="fas fa-user text-bewo-employee"></span>
Mitarbeiter
</h6>
<button type="button" class="close" data-dismiss="modal" onclick="resetEmployeeSearch()">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
<div class="custom-control custom-checkbox custom-control-inline mx-auto">
@{
var allEmployeesCheckedVal = Model.PossibleEmployees.AreListEqual(Model.SelectedEmployees) ? "checked" : string.Empty;
}
<input type="checkbox" class="custom-control-input" id="all-employees-checkbox" @allEmployeesCheckedVal onchange="selectAllEmployeesOnChange()" />
<label class="custom-control-label" for="all-employees-checkbox">Alle</label>
</div>
</div>
</div>
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="employeeListSearchOnChange()" id="employee-search-input" />
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onclick="resetEmployeeSearch()">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
@if(Model.HasRightToViewTeams)
{
<div class="card w-100 mb-3">
<div class="card-header" data-toggle="collapse" data-target="#collapsable-teams-selection">
<div class="d-flex align-items-center">
<h5 class="mr-auto">Meine Teams</h5>
<div class="btn-group" role="group">
<span class="fas fa-chevron-down text-primary"></span>
</div>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "collapsable-teams-selection")" id="collapsable-teams-selection">
<div class="card-body">
@foreach(var team in Model.MyTeams)
{
<button type="button" class="btn btn-bewo-teams w-100 my-2" onclick="selectTeamForAppointment(@team.TeamOid)">@team.Name</button>
}
</div>
</div>
</div>
<hr />
}
<div id="employee-input-container">
@Html.Partial("AptFltEmployeePopupListPartial")
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
</div>
</div>
</div>
</div>

View File

@@ -1,7 +1,29 @@
@using BeWoPlanerMobil.Util
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
<script type="text/javascript">
@foreach(var category2Resources in Model.ResourceCategories2Resources)
{
<div class="card w-100 mb-3 category-card" id="resource-category-@category2Resources.Key.ValueListEntryOid">
<div class="card-header tree-card-header" data-toggle="collapse" data-target="#collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
<div class="d-flex align-items-center">
<h5 class="mr-auto">@category2Resources.Key.DisplayName</h5>
<div class="btn-group" role="group">
<span class="fas fa-chevron-down text-primary"></span>
</div>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"collapsable-resource-category-{category2Resources.Key.ValueListEntryOid}")" id="collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
<div class="card-body resource-list">
@foreach(var resource in category2Resources.Value)
{
var checkedValue = Model.SelectedResourcesForFiltering.Contains(resource) ? "checked" : string.Empty;
</script>
<div class="custom-control custom-checkbox resource-text">
<input type="checkbox" class="custom-control-input" id="resource-@resource.ResourceOid-checkbox" @checkedValue onchange="window.changeResourceListSelection()" />
<label class="custom-control-label resource-name-label" for="resource-@resource.ResourceOid-checkbox">@resource.Name</label>
</div>
}
</div>
</div>
</div>
}

View File

@@ -3,5 +3,78 @@
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
<script type="text/javascript">
function selectAllResourcesOnChange() {
const isChecked = $("#all-resources-checkbox").prop("checked");
</script>
$("#resource-input-container").load("@Url.Action("SelectAllResourcesForFiltering")", { isChecked: isChecked }, () => { scheduler.Refresh(); });
}
function removeSelectedResource(resourceOid) {
const checkbox = $(`#resource-${resourceOid}-checkbox`);
if(checkbox.length) {
checkbox.prop("checked", false);
}
changeResourceListSelection();
}
function changeResourceListSelection() {
const selectedResourceOids = $("#resource-input-container input:checked").map(function() {return $(this).attr("id").split("-")[1];}).get();
const allResourcesCount = $("#resource-input-container input[type=checkbox]").map(function () {return $(this).attr("id").split("-")[1];}).get().length;
const selectedResourcesCount = selectedResourceOids.length;
$("#all-resources-checkbox").prop("checked", (allResourcesCount === selectedResourcesCount));
$("#resource-input-container").load("@Url.Action("UpdateResourceSelection")", { selectedResourceOids: selectedResourceOids }, () => { scheduler.Refresh(); });
}
</script>
<div class="modal" tabindex="-1" role="dialog" id="resources-popup-apt-flt">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title text-center w-100 font-weight-bold">
<span class="fas fa-cubes text-bewo-resource"></span>
Ressourcen
</h6>
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('resource-search-input', 'resource-text', 'category-card')">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
<div class="custom-control custom-checkbox custom-control-inline mx-auto">
@{
var allResourcesCheckedVal = Model.PossibleResources.AreListEqual(Model.SelectedResources) ? "checked" : string.Empty;
}
<input type="checkbox" class="custom-control-input" id="all-resources-checkbox" @allResourcesCheckedVal onchange="selectAllResourcesOnChange()" />
<label class="custom-control-label" for="all-resources-checkbox">Alle</label>
</div>
</div>
</div>
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="treeSearchOnChange('resource-search-input', 'resource-text', 'category-card', 'resource-name-label', 'resource-list')" id="resource-search-input" />
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onclick="resetTreeSearch('resource-search-input', 'resource-text', 'category-card')">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
<div id="resource-input-container">
@Html.Partial("AptFltResourcePopupListPartial")
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
</div>
</div>
</div>
</div>

View File

@@ -106,7 +106,7 @@
const tmpDate = new Date();
const end = new Date(tmpDate.setTime(start.getTime() + duration));
e.handled = true;
const startStr = getTimeStamp(start, false, false);
@@ -133,57 +133,57 @@
currentItem.SetVisible(false);
}
}
}
}
}
</script>
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle m-1" type="button" data-toggle="dropdown">
Filtern
</button>
<button class="btn btn-primary dropdown-toggle m-1" type="button" data-toggle="dropdown">
Filtern
</button>
<div class="dropdown-menu">
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="only-my-own-appointments-cb2">
<label class="form-check-label" for="only-my-own-appointments-cb2">Nur meine Termine</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="only-private-appointments-cb2">
<label class="form-check-label" for="only-private-appointments-cb2">Nur private Termine</label>
</div>
</form>
</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="employee-colors-cb2">
<label class="form-check-label" for="employee-colors-cb2">Mitarbeiterfarben</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="absence-times-cb2">
<label class="form-check-label" for="absence-times-cb2">Abwesenheiten</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="tasks-cb2">
<label class="form-check-label" for="tasks-cb2">Aufgaben</label>
</div>
</form>
</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="only-my-own-appointments-cb2">
<label class="form-check-label" for="only-my-own-appointments-cb2">Nur meine Termine</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="only-private-appointments-cb2">
<label class="form-check-label" for="only-private-appointments-cb2">Nur private Termine</label>
</div>
</form>
</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="employee-colors-cb2">
<label class="form-check-label" for="employee-colors-cb2">Mitarbeiterfarben</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="absence-times-cb2">
<label class="form-check-label" for="absence-times-cb2">Abwesenheiten</label>
</div>
</form>
</div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="tasks-cb2">
<label class="form-check-label" for="tasks-cb2">Aufgaben</label>
</div>
</form>
</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item">
<form class="form-inline">
<div class="form-group form-check">
@@ -209,27 +209,33 @@
</form>
</div>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<i class="fas fa-user text-bewo-employee"></i>
Mitarbeiter
<span class="badge badge-bewo-employee">0</span>
<a href="#" class="dropdown-item" onclick="$('#employees-popup-apt-flt').modal('show')">
<i class="fas fa-user text-bewo-employee"></i>
Mitarbeiter
<span class="badge badge-bewo-employee">0</span>
</a>
<a href="#" class="dropdown-item" onclick="$('#customers-popup-apt-flt').modal('show')">
<i class="fas fa-user text-bewo-customers"></i>
Klienten
<span class="badge badge-bewo-customers">0</span>
</a>
<a href="#" class="dropdown-item">
<i class="fas fa-user text-bewo-customers"></i>
Klienten
<span class="badge badge-bewo-customers">0</span>
</a>
<a href="#" class="dropdown-item">
<i class="fas fa-cubes text-bewo-resource"></i>
Ressourcen
<span class="badge badge-bewo-resource">0</span>
<i class="fas fa-cubes text-bewo-resource" onclick="$('#resources-popup-apt-flt').modal('show')"></i>
Ressourcen
<span class="badge badge-bewo-resource">0</span>
</a>
</div>
</div>
@using(Html.BeginForm())
{
<div id="scheduler-container">
@Html.Partial("SchedulerPagePartial", Model)
</div>
}
<div id="scheduler-container">
@Html.Partial("SchedulerPagePartial", Model)
</div>
}
@Html.Partial("AptFltEmployeesPartial")
@Html.Partial("AptFltCustomersPartial")
@Html.Partial("AptFltResourcesPartial")

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+104027544+999999999+251230:1445+00244++BK05Q126KE1'
UNB+UNOC:3+104027544+999999999+260313:1445+00245++BK05Q126KE2'
UNH+00001+KOTR:02:001:KV'
IDK+100820488+99+Brandenburgische BKK'
VDT+20100101'
@@ -1679,7 +1679,7 @@ VDT+20120401'
FKT+01'
VKG+01+109737010+5++++++00'
NAM+01+Betriebskrankenkasse+mkk - meine Krankenkasse+Mitarbeiterkasse'
ANS+1+10969+Berlin+Lindenstr. 67'
ANS+1+10409+Prenzlauer Allee 96'
UNT+000008+00102'
UNH+00103+KOTR:02:001:KV'
IDK+104220878+99+BKK Deutsche Bank AG/Ost'
@@ -5082,7 +5082,7 @@ VDT+20120401'
FKT+01'
VKG+01+109723913+5++++++00'
NAM+01+Betriebskrankenkasse+mkk - meine Krankenkasse+Mitarbeiterkasse'
ANS+1+10969+Berlin+Lindenstr. 67'
ANS+1+10409+Prenzlauer Allee 96'
UNT+000008+00295'
UNH+00296+KOTR:02:001:KV'
IDK+109531045+99+BKK Salzgitter'
@@ -5273,7 +5273,7 @@ VKG+09+661430035+5++29++++76'
VKG+09+109723913+5++29++++90'
VKG+09+109723913+5++29++++B1'
NAM+01+Betriebskrankenkasse+mkk - meine Krankenkasse'
ANS+1+10969+Berlin+Lindenstr. 67'
ANS+1+10409+Prenzlauer Allee 96'
UNT+000080+00303'
UNH+00304+KOTR:02:001:KV'
IDK+109737010+99+BKK mkk Ost (ehem. BKK VBU)'
@@ -5353,7 +5353,7 @@ VKG+09+661430035+5++29++++76'
VKG+09+109723913+5++29++++90'
VKG+09+109723913+5++29++++B1'
NAM+01+Betriebskrankenkasse+mkk - meine Krankenkasse'
ANS+1+10969+Berlin+Lindenstr. 67'
ANS+1+10409+Prenzlauer Allee 96'
UNT+000080+00304'
UNH+00305+KOTR:02:001:KV'
IDK+109920514+99+BAHN-BKK RGS Bln 1'
@@ -5966,4 +5966,4 @@ NAM+01+Betriebskrankenkasse+futur+Gesch.Ber.Neue Bundesl
ANS+1+47803+Krefeld+Girmesgath 5'
ANS+3+70426+Stuttgart'
UNT+000009+00365'
UNZ+000365+00244'
UNZ+000365+00245'

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+109979990+999999999+251209:1744+00001++EK05Q126KE0'
UNB+UNOC:3+109979990+999999999+260317:1853+00003++EK05Q126KE2'
UNH+00001+KOTR:02:001:KV'
IDK+100167999+99+DAK+78602'
VDT+19951001'
@@ -505,6 +505,7 @@ VKG+09+101576623+5++29++99++65'
VKG+09+101576623+5++29++99++66'
VKG+09+661430035+5++29++99++67'
VKG+09+661430035+5++29++99++68'
VKG+09+101576623+5++29++99++69'
VKG+09+661430035+5++29++99++71'
VKG+09+661430035+5++29++99++72'
VKG+09+101576623+5++29++99++75'
@@ -515,7 +516,7 @@ ANS+2+22236+Hamburg+Postfach 60 26 60'
ANS+3+22291+Hamburg'
ASP+01+0341/25920-37++INTER-FORUM AG+(Fachliche Betreuung)'
ASP+02+0203/80950+0203/8095199+Abrechnungszentrum Duisburg+Fachliche Betreuung'
UNT+000057+00050'
UNT+000058+00050'
UNH+00051+KOTR:02:001:KV'
IDK+101576623+99+TECHNIKER KRANKENKASSE'
VDT+19950701'
@@ -2649,4 +2650,4 @@ DFU+02+016+++++ftam.syntela.de?:9000'
UEM+5+00+I8'
UEM+6+00+I8'
UNT+000013+00261'
UNZ+000261+00001'
UNZ+000261+00003'

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+109900019+999999999+251017:1000+00034++IK05Q425KE0'
UNB+UNOC:3+109900019+999999999+260205:1000+00035++IK05Q126KE0'
UNH+00001+KOTR:02:001:KV'
IDK+100202527+99+IKK Nord (vorm. IKK MV)+78301'
VDT+19950801'
@@ -775,7 +775,7 @@ VKG+09+103501080+5++28++++75'
VKG+09+103501080+5++28++++90'
VKG+09+661430035+5++28++++99'
NAM+01+BIG direkt gesund (Haupt IK)'
ANS+1+44137+Dortmund+Rheinische Str. 1'
ANS+1+44263+Dortmund+Hörder-Bach-Allee 1-3'
ANS+2+44006+Dortmund+Postfach 10 06 42'
UNT+000033+00072'
UNH+00073+KOTR:02:001:KV'
@@ -808,7 +808,7 @@ VKG+09+103501080+5++28++++75'
VKG+09+103501080+5++28++++90'
VKG+09+661430035+5++28++++99'
NAM+01+BIG direkt gesund'
ANS+1+44137+Dortmund+Rheinische Str. 1'
ANS+1+44263+Dortmund+Hörder-Bach-Allee 1-3'
ANS+2+44006+Dortmund+Postfach 10 06 42'
UNT+000033+00073'
UNH+00074+KOTR:02:001:KV'
@@ -2119,7 +2119,7 @@ VKG+03+109900019+5++07++++B1'
VKG+09+109303301+5++28++++B1'
VKG+09+109303301+5++29++++B1'
NAM+01+IKK Südwest'
ANS+1+66111+Saarbrücken+Berliner Promenade 1'
ANS+1+66113+Saarbrücken+Europaallee 3-4'
UNT+000082+00210'
UNH+00211+KOTR:02:001:KV'
IDK+109500253+99+IKK-LV Brandenburg und Berlin'
@@ -2300,4 +2300,4 @@ NAM+01+IKK Classic+c/o DAVASO GmbH'
ANS+1+04316+Leipzig+Sommerfelder Str. 120'
ANS+2+04304+Leipzig+500761'
UNT+000008+00227'
UNZ+000227+00034'
UNZ+000227+00035'

View File

@@ -33,10 +33,9 @@ namespace ABCBetreuungenReports.Invoicing
SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
{
var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc);
if (!scap.CostBearer2SupportConcept.CostBearer.Organisation.Name.ToLower().Contains("alt"))
string kostentraeger = scap.CostBearer2SupportConcept.CostBearer.Organisation.Name.ToLower();
if (!kostentraeger.Contains("alt"))
{
var crp = scap.CostBearer2SupportConcept.CostBearer.CostRatePeriods;
decimal minsProFLS = 60;
if (crp != null && crp.Count > 0)
@@ -46,25 +45,33 @@ namespace ABCBetreuungenReports.Invoicing
}
// Klären, welche Kostenträger betroffen sind. (Funktion?)
decimal counter = 0;
Dictionary<decimal, decimal> preiseZuAnzahl = new Dictionary<decimal, decimal>();
foreach (var sr in serviceRecordsInPeriod)
{
if (sr.ServiceDescription.Name.ToLower().Contains("behördengang") || sr.ServiceDescription.Name.ToLower().Contains("außentermin") || sr.ServiceDescription.Name.ToLower().Contains("wohnung"))
{
string preisbezeichnung = kostentraeger.Contains("kompensatorisch") ? "Kontaktpauschale kompensatorisch" : "Kontaktpauschale qualifiziert";
var preis = GetPreis(preisbezeichnung, sr.Start.Value);
decimal unitcount = 1;
// Bei Gruppenbuchungen muss die Pauschale durch die Teilnehmerzahl geteilt werden
if (sr.GroupPersonCount.HasValue)
counter = counter + (1m / Convert.ToDecimal(sr.GroupPersonCount.Value));
else
counter += 1;
unitcount /= Convert.ToDecimal(sr.GroupPersonCount.Value);
if (preiseZuAnzahl.ContainsKey(preis))
preiseZuAnzahl[preis] += unitcount;
else
preiseZuAnzahl.Add(preis, unitcount);
}
}
if (counter > 0)
if (preiseZuAnzahl.Count > 0)
{
List<InvoiceItem> toAdd = new List<InvoiceItem>();
toAdd.Add(CreateKontaktpauschalenItem(counter, invoicePeriod.StartDate, invoicePeriod.EndDate));
list.AddRange(toAdd);
foreach (var item in preiseZuAnzahl)
{
list.Add(CreateKontaktpauschalenItem(item.Value, item.Key, invoicePeriod.StartDate, invoicePeriod.EndDate));
}
}
}
@@ -91,41 +98,20 @@ namespace ABCBetreuungenReports.Invoicing
}
}
}
// Klären, wie die InvoiceItems heißen sollen
// if (iServiceRecord != null)
// {
// var cat = iServiceRecord.ServiceDescription.CategoryName;
// var desc = iServiceRecord.ServiceDescription.Name;
// if (cat == "Direkte Leistung")
// {
// invoiceItem.ItemDescription = "face-to-face";
// invoiceItem.UnitDescription = "Fachleistungsstunde (FLS)";
// }
// else
// {
// invoiceItem.ItemDescription = desc;
// invoiceItem.UnitDescription = "Stunde";
// }
//}
return invoiceItem;
}
private InvoiceItem CreateKontaktpauschalenItem(decimal? unitCount, DateTime? itemPeriodStart, DateTime? itemPeriodEnd)
private InvoiceItem CreateKontaktpauschalenItem(decimal unitCount, decimal preis, DateTime? itemPeriodStart, DateTime? itemPeriodEnd)
{
decimal pauschale = PauschalenHelper.GetPreis("Kontaktpauschale", itemPeriodStart.Value);
var ii = new InvoiceItem()
{
UnitCount = unitCount,
ItemDescription = "Anfahrtspauschale",
UnitDescription = "Pauschale pro direktem Kontakt",
AmountPerUnit = pauschale,
AmountTotal = pauschale * unitCount,
GrossAmountTotal = pauschale * unitCount,
AmountPerUnit = preis,
AmountTotal = unitCount * preis,
GrossAmountTotal = unitCount * preis,
ItemPeriodStart = itemPeriodStart,
ItemPeriodEnd = itemPeriodEnd,
RateFactor = 0

View File

@@ -104,50 +104,65 @@ namespace ABCBetreuungenReports.Invoicing
private static InvoiceItemDC CreateKontaktpauschalenItem(AccountingPeriod accountingPeriod, string recipientOrganisation)
{
InvoiceItemDC invoiceItem = null;
decimal unitCount = 0;
Dictionary<decimal, decimal> preiseZuAnzahl = new Dictionary<decimal, decimal>();
foreach (var sr in accountingPeriod.ServiceRecordsInPeriod)
foreach (var sr in accountingPeriod.ServiceRecordsInPeriod)
{
if (sr.ServiceDescription.Name.ToLower().Contains("behördengang") || sr.ServiceDescription.Name.ToLower().Contains("außentermin") || sr.ServiceDescription.Name.ToLower().Contains("wohnung"))
{
unitCount++;
}
string preisbezeichnung = recipientOrganisation.Contains("kompensatorisch") ? "Kontaktpauschale kompensatorisch" : "Kontaktpauschale qualifiziert";
var preis = PauschalenHelper.GetPreis(preisbezeichnung, accountingPeriod.PeriodStart);
decimal unitcount = 1;
// Bei Gruppenbuchungen muss die Pauschale durch die Teilnehmerzahl geteilt werden
if (sr.GroupPersonCount.HasValue)
unitcount /= Convert.ToDecimal(sr.GroupPersonCount.Value);
if (preiseZuAnzahl.ContainsKey(preis))
preiseZuAnzahl[preis] += unitcount;
else
preiseZuAnzahl.Add(preis, unitcount);
}
}
if (unitCount > 0)
if (preiseZuAnzahl.Count > 0)
{
//decimal pauschale = PauschalenHelper._FAHRTKOSTENPAUSCHALE;
decimal pauschale = PauschalenHelper.GetPreis("Kontaktpauschale", accountingPeriod.PeriodStart);
decimal rateFactor = accountingPeriod.RateFactor == 0 ? 1 : accountingPeriod.RateFactor;
if (accountingPeriod.RateFactor == 0)
invoiceItem = new InvoiceItemDC()
{
UnitCount = unitCount,
ItemDescription = "Kontaktpauschale",
UnitDescription = "Pauschale pro direktem Kontakt",
AmountPerUnit = pauschale,
AmountTotal = pauschale * unitCount,
GrossAmountTotal = pauschale * unitCount,
ItemPeriodStart = accountingPeriod.PeriodStart,
ItemPeriodEnd = accountingPeriod.PeriodEnd,
RateFactor = 0,
};
else
//decimal pauschale = PauschalenHelper._FAHRTKOSTENPAUSCHALE;
foreach (var item in preiseZuAnzahl)
{
invoiceItem = new InvoiceItemDC()
if (accountingPeriod.RateFactor == 0)
{
UnitCount = unitCount,
ItemDescription = "Kontaktpauschale",
UnitDescription = "Pauschale pro direktem Kontakt",
AmountPerUnit = pauschale,
AmountTotal = pauschale * unitCount * accountingPeriod.RateFactor,
GrossAmountTotal = pauschale * unitCount * accountingPeriod.RateFactor,
ItemPeriodStart = accountingPeriod.PeriodStart,
ItemPeriodEnd = accountingPeriod.PeriodEnd,
RateFactor = accountingPeriod.RateFactor
};
}
invoiceItem = new InvoiceItemDC()
{
UnitCount = item.Value,
ItemDescription = "Kontaktpauschale",
UnitDescription = "Pauschale pro direktem Kontakt",
AmountPerUnit = item.Key,
AmountTotal = item.Value * item.Key,
GrossAmountTotal = item.Value * item.Key,
ItemPeriodStart = accountingPeriod.PeriodStart,
ItemPeriodEnd = accountingPeriod.PeriodEnd,
RateFactor = 0,
};
}
else
{
invoiceItem = new InvoiceItemDC()
{
UnitCount = item.Value,
ItemDescription = "Kontaktpauschale",
UnitDescription = "Pauschale pro direktem Kontakt",
AmountPerUnit = item.Key,
AmountTotal = item.Value * item.Key * accountingPeriod.RateFactor,
GrossAmountTotal = item.Value * item.Key * accountingPeriod.RateFactor,
ItemPeriodStart = accountingPeriod.PeriodStart,
ItemPeriodEnd = accountingPeriod.PeriodEnd,
RateFactor = accountingPeriod.RateFactor
};
}
}
}
return invoiceItem;

View File

@@ -148,7 +148,6 @@ namespace BeWoBoland
this.xrLabel2.StylePriority.UseBorderWidth = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.StylePriority.UseForeColor = false;
this.xrLabel2.Text = "Soziotherapie Antje Boland";
//
// xrLabel1
//
@@ -429,7 +428,7 @@ namespace BeWoBoland
this.xrLabel4.SizeF = new System.Drawing.SizeF(319.8698F, 25.00006F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "Rechnung Nr. [InvoiceNumer]\n";
this.xrLabel4.Text = "Rechnung Nr. [InvoiceNumber]\n";
this.xrLabel4.WordWrap = false;
//
// lblAdresse

View File

@@ -58,6 +58,12 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Calculation\CustomCalculations.cs" />
<Compile Include="Finanzauswertung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Finanzauswertung.designer.cs">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\BarbetragInvoiceCreation.cs" />
@@ -89,6 +95,10 @@
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Finanzauswertung.resx">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>

View File

@@ -0,0 +1,182 @@
using System;
using System.Collections.Generic;
using BeWo.Data;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DiakonischesWerkMuelheimTwg.Invoicing;
using static BeWo.Report.ReportObjects.FinanceRO;
namespace BeWo.Report.DefaultReports
{
public partial class Finanzauswertung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<FinanceRO>
{
public Finanzauswertung()
{
InitializeComponent();
}
public void SetReportDataSource(FinanceRO pRO)
{
if (pRO.SupportConceptFinanceList != null)
{
foreach (var scRo in pRO.SupportConceptFinanceList)
{
if (scRo.Costbearer2Supportconcept != null)
{
CalculateBillableAmountInTimeSpan(scRo, pRO.ReportStartDate, pRO.ReportEndDate, false, "Finanzauswertung");
}
if (scRo.CustomerName.Contains("Test") || scRo.CustomerName.Contains("Kuck"))
{
}
}
}
if (pRO.ReportStartDate.HasValue && pRO.ReportEndDate.HasValue)
{
DateTime start = pRO.ReportStartDate.Value;
DateTime end = pRO.ReportEndDate.Value;
if (start.Year == end.Year && start.Month == end.Month && start.Day == 1 &&
end.Day == DateTime.DaysInMonth(end.Year, end.Month))
{
lblTitel.Text = String.Format("Finanzauswertung {0:MMMM yyyy}", start);
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:MMMM}", start);
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:MMMM}", start);
cellFehlkontakteHeader.Text = String.Format("Fehl-\nkontakte {0:MMMM}", start);
}
else
{
lblTitel.Text = String.Format("Finanzauswertung {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
//cellFehlkontakteHeader.Text = String.Format("Fehl-\nkontakte {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
}
if (pRO.RateFactor.HasValue)
{
cellRateFactorHeader.Text = String.Format("geleistete Std. x {0:0.##}", pRO.RateFactor);
}
else
{
//cellRateFactorHeader.Visible = false;
//cellRateFactor.Visible = false;
}
}
else
{
cellBewilligtImZeitraumHeader.Visible = false;
cellBewilligteFLSImBereich.Visible = false;
cellGeleistetImBereich.Visible = false;
cellGeleistetImZeitraumHeader.Visible = false;
cellRateFactorHeader.Visible = false;
cellRateFactor.Visible = false;
}
if (pRO.GruppierungLeistungskategorie && pRO.SupportConceptFinanceList != null)
{
GroupHeader1.Visible = true;
GroupFooter1.Visible = true;
foreach (var scRo in pRO.SupportConceptFinanceList)
{
if (String.IsNullOrEmpty(scRo.Leistungskategorie))
{
scRo.GruppierungsKategorie = " ";
}
else
{
scRo.GruppierungsKategorie = String.Format("Leistungskategorie {0}", scRo.Leistungskategorie);
}
}
}
this.bindingSource1.DataSource = pRO;
}
private void CalculateBillableAmountInTimeSpan(SupportConceptFinanceRO scRo, DateTime? start, DateTime? end, bool totalOrReportTimeSpan, String invoiceCreatorId)
{
if (scRo.CustomerName.Contains("Test") || scRo.CustomerName.Contains("Kuck"))
{
}
String tenant = null;
if (MultitenancyOperationContextExt.Current != null)
tenant = MultitenancyOperationContextExt.Current.Tenant;
else
tenant = SessionFacade.Tenant;
var factory = new CustomInvoiceFactory();
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> dict = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
CompactSupportConceptDC sc = CreateCompactSupportConcept(scRo.Costbearer2Supportconcept);
if (scRo.ServiceRecords != null)
{
foreach (var sr in scRo.ServiceRecords)
{
sr.AlreadyAccounted = false;
}
}
else
{
scRo.ServiceRecords = new List<ServiceRecordDC>();
}
dict.Add(sc, scRo.ServiceRecords);
var creator = factory.CreateInvoiceCreator(invoiceCreatorId, tenant, dict);
//String text = String.Format("Tenant={0}, Context=Null? {1}, Factory = {2}", tenant,
// MultitenancyOperationContextExt.Current == null, factory);
DateTimeSpan span = null;
if (start.HasValue && end.HasValue)
{
span = new DateTimeSpan();
span.StartDate = start.Value;
span.EndDate = end.Value;
}
var invoices = creator.GenerateServiceInvoices(scRo.Costbearer2Supportconcept.CostBearer.CostBearerOid.Value, span, dict);
if (invoices != null && invoices.Count == 1)
{
//var i = invoices[0];
if (totalOrReportTimeSpan)
{
scRo.BillableAmountUntilNow = invoices[0].ClaimSum ?? 0;
}
else
{
scRo.BillableAmountInReportTimeSpan = invoices[0].ClaimSum ?? 0;
}
}
else
{
decimal summe = 0;
foreach (var inv in invoices)
summe += inv.ClaimSum ?? 0;
if (totalOrReportTimeSpan)
scRo.BillableAmountUntilNow = summe;
else
scRo.BillableAmountInReportTimeSpan = summe;
}
}
private CompactSupportConceptDC CreateCompactSupportConcept(SupportConceptCostBearerRelDC c2s)
{
var dc = new CompactSupportConceptDC();
dc.SupportConceptOid = c2s.SupportConcept.SupportConceptOid;
dc.CostBearerRelOids = new List<long>();
dc.CostBearerRelOids.Add(c2s.CostBearer2SupportConceptOid.Value);
//dc.IsApproved = c2s.ApprovedStartDate.HasValue && c2s.ApprovedEndDate.HasValue;
dc.IsApproved = true;
return dc;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,21 @@
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
namespace KcmGmbHSozio.Calculations
{
public class CustomGroupDurationCalculator : GroupDurationCalculator
{
public override void CalculateGroupDuration(ServiceRecordGroup group)
{
base.CalculateGroupDuration(group);
foreach (var sr in group.ServiceRecordList)
{
if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("soziotherapie"))
{
sr.RoundedDuration = sr.GroupRoundedDuration.Value;
}
}
}
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace KcmGmbHSozio.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
foreach (var list in supportConcepts2ServiceRecords.Values)
{
foreach (var sr in list)
{
var cat = sr.ServiceDescription.Category;
if (sr.CostBearer != null && !sr.CostBearer.Name.Contains("LWL") && !sr.CostBearer.Name.Contains("LVR") &&
!String.IsNullOrEmpty(cat.Name) && cat.Name.ToLower().Contains("soziotherapie"))
{
return new SoziotherapieInvoiceCreation();
}
}
}
return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
}
}

View File

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

View File

@@ -0,0 +1,170 @@
using System;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using System.Text.RegularExpressions;
using System.IO;
using DevExpress.XtraPrinting.Drawing;
namespace KcmGmbHSozio
{
public partial class LeistungsnachweisSoziotherapie : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public LeistungsnachweisSoziotherapie()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
if (pRO.Mandator.Logo?.Original is object)
xrPictureBox3.ImageSource = new ImageSource(false, pRO.Mandator.Logo.Original);
double gesamt = 0;
double gesamtGruppe = 0;
if (pRO.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
{
ServicesOverviewRO.CreateSignatureString(s);
var serviceRecord = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(s.ServiceRecordOid);
pRO.ReferenceNumber = serviceRecord.CostBearer2SupportConcept.CustomerReferenceNumber;
if (serviceRecord.CostBearer2SupportConcept.ApprovedStartDate != null)
pRO.ApprovedStartDate = String.Format("{0:dd.MM.yyyy}", serviceRecord.CostBearer2SupportConcept.ApprovedStartDate);
if (serviceRecord.CostBearer2SupportConcept.ApprovedEndDate != null)
pRO.ApprovedEndDate = String.Format("{0:dd.MM.yyyy}", serviceRecord.CostBearer2SupportConcept.ApprovedEndDate);
var srDc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(serviceRecord);
s.GoalList = String.Empty;
if (srDc.Goals != null && srDc.Goals.Count > 0)
{
foreach (var goal in srDc.Goals)
{
if (!String.IsNullOrEmpty(goal.Abbreviation))
{
if (s.GoalList.Length > 0)
s.GoalList += ", ";
s.GoalList += goal.Abbreviation;
}
}
}
if (s.ServiceDescription.Contains("Gruppe"))
{
s.IsGroup = true;
gesamtGruppe += s.Minutes;
s.ServiceDescription = "E";
if (s.Minutes <= 45)
s.Notice5 = "2002678";
else if (s.Minutes <= 60)
s.Notice5 = "2002677";
else
s.Notice5 = "2002672";
}
else
{
gesamt += s.Minutes;
}
if (s.ServiceDescription.Contains("Video"))
{
s.ServiceDescription = "V";
if (s.Minutes <= 30)
{
s.Notice5 = "2001615";
}
else
{
s.Notice5 = "2001616";
}
}
else if (s.ServiceDescription.Contains("Telefon"))
{
s.ServiceDescription = "T";
if (s.Minutes <= 30)
{
s.Notice5 = "2001618";
}
else
{
s.Notice5 = "2001617";
}
}
else if (s.ServiceDescription.Contains("Aufsuchende Prob"))
{
s.ServiceDescription = "A";
s.Notice5 = "2001607";
}
else
{
if (s.ServiceDescription.Contains("Büro"))
{
s.ServiceDescription = "E";
}
else if (s.ServiceDescription.Contains("Aufsuchend"))
{
s.ServiceDescription = "A";
}
if (s.Minutes <= 10)
{
s.Notice5 = "2001613";
}
else if (s.Minutes <= 30)
{
s.Notice5 = "2001612";
}
else if (s.Minutes <= 45)
{
s.Notice5 = "2001611";
}
else
{
s.Notice5 = "2001610";
}
}
}
}
cellGesamt.Text = String.Format("{0:0.00}", gesamt / 60);
if (gesamtGruppe > 0)
{
cellGesamtGruppe.Text = String.Format("{0:0.00}", gesamtGruppe / 90);
}
this.bindingSource1.DataSource = pRO;
}
private void picSignature_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
{
XRPictureBox xrBox = sender as XRPictureBox;
string base64String = xrBox.Tag as string;
if (!String.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
System.Drawing.Image img = ByteArrayToImage(binData);
xrBox.Image = Utils.CropImage(img);
}
else
{
xrBox.Image = null;
}
}
public System.Drawing.Image ByteArrayToImage(byte[] byteArrayIn)
{
using (var memoryStream = new MemoryStream(byteArrayIn))
{
return System.Drawing.Image.FromStream(memoryStream);
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

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

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1,144 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace KcmGmbHSozio.Reporting
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
if (lROs.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
if (rootReport.Pages.Count == 0)
{
rootReport.CreateDocument();
}
for (int i = 1; i < lROs.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
if (lNext.Pages.Count == 0)
{
lNext.CreateDocument();
}
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
}
public override XtraReport CreateServiceOverviewReportForCustomers(IList<long> customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
var roList = new List<ServicesOverviewRO>();
foreach (var coid in customerOids)
{
var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
if (ro != null)
{
roList.Add(ro);
}
}
if (roList.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid);
rootReport.CreateDocument();
for (int i = 1; i < roList.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid);
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
ServicesOverviewRO defaultRo = ServicesOverviewRO.CopyFromRO(ro);
ServicesOverviewRO sozioRo = ServicesOverviewRO.CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
ServicesOverviewRO.CreateSignatureString(s);
if (s.ServiceCategory.ToLower().Contains("sozio"))
{
sozioRo.Services.Add(s);
}
else
{
defaultRo.Services.Add(s);
}
}
}
XtraReport report = null;
report = AddReportToReport<BeWo.Report.DefaultReports.Quittierungsbeleg>(report, defaultRo);
report = AddReportToReport<LeistungsnachweisSoziotherapie>(report, sozioRo);
if (report == null)
report = new XtraReport();
return report;
}
public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, string reportId)
{
return CreateServicesOverviewReportForRo(ro, null);
}
private XtraReport AddReportToReport<T>(XtraReport report, ServicesOverviewRO ro) where T : XtraReport, IBeWoReport<ServicesOverviewRO>, new()
{
if (ro.Services.Count > 0)
{
if (report == null)
{
report = new T();
((T)report).SetReportDataSource(ro);
}
else
{
if (report.Pages.Count == 0)
{
report.CreateDocument();
}
XtraReport newReport = new T();
((T)newReport).SetReportDataSource(ro);
newReport.CreateDocument();
report.Pages.AddRange(newReport.Pages);
}
}
return report;
}
}
}

View File

@@ -0,0 +1,921 @@
using BeWo.Report.ReportObjects;
namespace KcmGmbHSozio
{
partial class SoziotherapieRechnung
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SoziotherapieRechnung));
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.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable6 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// ReportHeader
//
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.ReportHeader.HeightF = 0F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRateFactorNull.Name = "ruleRateFactorNull";
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 200.625F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.Font = new DevExpress.Drawing.DXFont("Arial", 7F);
this.bottomMarginBand1.HeightF = 97.29169F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
this.bottomMarginBand1.StylePriority.UseFont = false;
//
// Page1
//
this.Page1.BorderWidth = 2F;
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrRichText1,
this.xrTable2,
this.xrLabel6,
this.xrLabel7,
this.xrLabel4,
this.lblAdresse});
this.Page1.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.Page1.HeightF = 396.0767F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseBorderWidth = false;
this.Page1.StylePriority.UseFont = false;
//
// xrRichText1
//
this.xrRichText1.Font = new DevExpress.Drawing.DXFont("Calibri", 8.5F);
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(317.0001F, 18F);
this.xrRichText1.StylePriority.UseFont = false;
//
// xrTable2
//
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Calibri", 9F);
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(366.9999F, 177.8851F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow4,
this.xrTableRow3,
this.xrTableRow5});
this.xrTable2.SizeF = new System.Drawing.SizeF(283.7153F, 75F);
this.xrTable2.StylePriority.UseFont = false;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell16,
this.xrTableCell17});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 1D;
//
// xrTableCell16
//
this.xrTableCell16.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell16.BorderColor = System.Drawing.Color.Black;
this.xrTableCell16.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell16.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell16.StylePriority.UseBackColor = false;
this.xrTableCell16.StylePriority.UseBorderColor = false;
this.xrTableCell16.StylePriority.UseBorders = false;
this.xrTableCell16.StylePriority.UseFont = false;
this.xrTableCell16.StylePriority.UsePadding = false;
this.xrTableCell16.StylePriority.UseTextAlignment = false;
this.xrTableCell16.Text = "Rechnungsnummer";
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell16.Weight = 0.53122486267026214D;
//
// xrTableCell17
//
this.xrTableCell17.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell17.BorderColor = System.Drawing.Color.Black;
this.xrTableCell17.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell17.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceNumber")});
this.xrTableCell17.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell17.Name = "xrTableCell17";
this.xrTableCell17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell17.StylePriority.UseBackColor = false;
this.xrTableCell17.StylePriority.UseBorderColor = false;
this.xrTableCell17.StylePriority.UseBorders = false;
this.xrTableCell17.StylePriority.UseFont = false;
this.xrTableCell17.StylePriority.UsePadding = false;
this.xrTableCell17.StylePriority.UseTextAlignment = false;
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell17.Weight = 0.53122488360866615D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell12,
this.xrTableCell13});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 1D;
//
// xrTableCell12
//
this.xrTableCell12.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell12.BorderColor = System.Drawing.Color.Black;
this.xrTableCell12.Borders = DevExpress.XtraPrinting.BorderSide.Left;
this.xrTableCell12.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell12.StylePriority.UseBackColor = false;
this.xrTableCell12.StylePriority.UseBorderColor = false;
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UseFont = false;
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "Rechnungsdatum";
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell12.Weight = 0.53122486267026214D;
//
// xrTableCell13
//
this.xrTableCell13.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell13.BorderColor = System.Drawing.Color.Black;
this.xrTableCell13.Borders = DevExpress.XtraPrinting.BorderSide.Right;
this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDateTime", "{0:dd.MM.yyyy}")});
this.xrTableCell13.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell13.StylePriority.UseBackColor = false;
this.xrTableCell13.StylePriority.UseBorderColor = false;
this.xrTableCell13.StylePriority.UseBorders = false;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.StylePriority.UsePadding = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell13.Weight = 0.53122488360866615D;
//
// xrTableRow5
//
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell6,
this.xrTableCell7});
this.xrTableRow5.Name = "xrTableRow5";
this.xrTableRow5.Weight = 1D;
//
// xrTableCell6
//
this.xrTableCell6.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell6.BorderColor = System.Drawing.Color.Black;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell6.BorderWidth = 2F;
this.xrTableCell6.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell6.StylePriority.UseBackColor = false;
this.xrTableCell6.StylePriority.UseBorderColor = false;
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseBorderWidth = false;
this.xrTableCell6.StylePriority.UseFont = false;
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "IK-Nummer";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell6.Weight = 0.53122486267026214D;
//
// xrTableCell7
//
this.xrTableCell7.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell7.BorderColor = System.Drawing.Color.Black;
this.xrTableCell7.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell7.BorderWidth = 2F;
this.xrTableCell7.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell7.StylePriority.UseBackColor = false;
this.xrTableCell7.StylePriority.UseBorderColor = false;
this.xrTableCell7.StylePriority.UseBorders = false;
this.xrTableCell7.StylePriority.UseBorderWidth = false;
this.xrTableCell7.StylePriority.UseFont = false;
this.xrTableCell7.StylePriority.UsePadding = false;
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell7.Weight = 0.53122488360866615D;
//
// xrLabel6
//
this.xrLabel6.BackColor = System.Drawing.Color.Transparent;
this.xrLabel6.CanShrink = true;
this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 337.0768F);
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(650.7153F, 38.99988F);
this.xrLabel6.StylePriority.UseBackColor = false;
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.Text = "Abrechnung Soziotherapie-Leistungen gemäß §37a SGV, Versicherte(r): [CustomerLast" +
"Name], [CustomerFirstName]\r\nVersichtennummer: [CustomerInsuranceNumber]";
this.xrLabel6.WordWrap = false;
//
// xrLabel7
//
this.xrLabel7.BackColor = System.Drawing.Color.Transparent;
this.xrLabel7.CanShrink = true;
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 376.0766F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(650.7153F, 20F);
this.xrLabel7.StylePriority.UseBackColor = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "Zeitraum: [AccountingPeriod]";
this.xrLabel7.WordWrap = false;
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Calibri", 14F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 286.6351F);
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(319.8698F, 25.00006F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "Rechnung Nr. [InvoiceNumber]\n";
this.xrLabel4.WordWrap = false;
//
// lblAdresse
//
this.lblAdresse.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
this.lblAdresse.Multiline = true;
this.lblAdresse.Name = "lblAdresse";
this.lblAdresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAdresse.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.lblAdresse.StylePriority.UseFont = false;
//
// ReportFooter
//
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel15,
this.xrLabel14,
this.xrLabel5,
this.xrTable4});
this.ReportFooter.Font = new DevExpress.Drawing.DXFont("Times New Roman", 10F);
this.ReportFooter.HeightF = 184.9419F;
this.ReportFooter.Name = "ReportFooter";
this.ReportFooter.StylePriority.UseFont = false;
//
// xrLabel15
//
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 93.02252F);
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel15.SizeF = new System.Drawing.SizeF(250.0001F, 17.00001F);
this.xrLabel15.StylePriority.UseFont = false;
this.xrLabel15.Text = "Mit freundlichen Grüßen";
//
// xrLabel14
//
this.xrLabel14.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 161.5793F);
this.xrLabel14.Multiline = true;
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(250F, 23.36261F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "[CreatorName]";
//
// xrLabel5
//
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Italic);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0.0001271566F, 10.00001F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(250F, 17F);
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "Abschließende Bemerkungen:";
//
// xrTable4
//
this.xrTable4.Font = new DevExpress.Drawing.DXFont("Arial", 9F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0.0001271566F, 35.00004F);
this.xrTable4.Name = "xrTable4";
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow10,
this.xrTableRow14});
this.xrTable4.SizeF = new System.Drawing.SizeF(650.7154F, 26F);
this.xrTable4.StylePriority.UseFont = false;
//
// xrTableRow10
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell18});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.38095238095238093D;
//
// xrTableCell18
//
this.xrTableCell18.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell18.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell18.Name = "xrTableCell18";
this.xrTableCell18.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell18.StylePriority.UseFont = false;
this.xrTableCell18.StylePriority.UsePadding = false;
this.xrTableCell18.Text = "xrTableCell1";
this.xrTableCell18.Weight = 3D;
//
// xrTableRow14
//
this.xrTableRow14.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell19});
this.xrTableRow14.Name = "xrTableRow14";
this.xrTableRow14.Weight = 0.23809523809523808D;
//
// xrTableCell19
//
this.xrTableCell19.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.StylePriority.UseFont = false;
this.xrTableCell19.Weight = 3D;
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport1});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// Detail1
//
this.Detail1.HeightF = 0F;
this.Detail1.Name = "Detail1";
//
// DetailReport1
//
this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail2,
this.GroupHeader1,
this.GroupFooter1});
this.DetailReport1.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
this.DetailReport1.DataSource = this.bindingSource1;
this.DetailReport1.Level = 0;
this.DetailReport1.Name = "DetailReport1";
//
// Detail2
//
this.Detail2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable6});
this.Detail2.HeightF = 25F;
this.Detail2.Name = "Detail2";
//
// xrTable6
//
this.xrTable6.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow25});
this.xrTable6.SizeF = new System.Drawing.SizeF(649.9997F, 25F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow25
//
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell40,
this.xrTableCell42,
this.xrTableCell20,
this.xrTableCell45,
this.xrTableCell47});
this.xrTableRow25.Name = "xrTableRow25";
this.xrTableRow25.Weight = 1D;
//
// xrTableCell3
//
this.xrTableCell3.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AccountingPeriodStart")});
this.xrTableCell3.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell3.Multiline = true;
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell3.StylePriority.UseBorderColor = false;
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UsePadding = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell3.TextFormatString = "{0:dd.MM.yyyy}";
this.xrTableCell3.Weight = 0.49411074825218504D;
//
// xrTableCell40
//
this.xrTableCell40.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell40.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell40.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitDescription")});
this.xrTableCell40.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell40.Name = "xrTableCell40";
this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell40.StylePriority.UseBorderColor = false;
this.xrTableCell40.StylePriority.UseBorders = false;
this.xrTableCell40.StylePriority.UseFont = false;
this.xrTableCell40.StylePriority.UsePadding = false;
this.xrTableCell40.StylePriority.UseTextAlignment = false;
this.xrTableCell40.Text = "Soziotherapie";
this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell40.Weight = 0.574668553042295D;
//
// xrTableCell42
//
this.xrTableCell42.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
this.xrTableCell42.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell42.Name = "xrTableCell42";
this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell42.StylePriority.UseBorderColor = false;
this.xrTableCell42.StylePriority.UseBorders = false;
this.xrTableCell42.StylePriority.UseFont = false;
this.xrTableCell42.StylePriority.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.98353224604329026D;
//
// xrTableCell20
//
this.xrTableCell20.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell20.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCount")});
this.xrTableCell20.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell20.StylePriority.UseBorderColor = false;
this.xrTableCell20.StylePriority.UseBorders = false;
this.xrTableCell20.StylePriority.UseFont = false;
this.xrTableCell20.StylePriority.UsePadding = false;
this.xrTableCell20.StylePriority.UseTextAlignment = false;
this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell20.TextFormatString = "{0:0.##}";
this.xrTableCell20.Weight = 0.28500763022709164D;
//
// xrTableCell45
//
this.xrTableCell45.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell45.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.HourlyRate", "{0:0.00}")});
this.xrTableCell45.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell45.Name = "xrTableCell45";
this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell45.StylePriority.UseBorderColor = false;
this.xrTableCell45.StylePriority.UseBorders = false;
this.xrTableCell45.StylePriority.UseFont = false;
this.xrTableCell45.StylePriority.UsePadding = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
this.xrTableCell45.Text = "xrTableCell45";
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell45.Weight = 0.2850076284740265D;
//
// xrTableCell47
//
this.xrTableCell47.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
this.xrTableCell47.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell47.StylePriority.UseBorderColor = false;
this.xrTableCell47.StylePriority.UseBorders = false;
this.xrTableCell47.StylePriority.UseFont = false;
this.xrTableCell47.StylePriority.UsePadding = false;
this.xrTableCell47.StylePriority.UseTextAlignment = false;
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell47.Weight = 0.46525585332388275D;
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.GroupHeader1.HeightF = 25F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
// xrTable5
//
this.xrTable5.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(649.9998F, 25F);
this.xrTable5.StylePriority.UseFont = false;
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell32,
this.xrTableCell37,
this.xrTableCell14,
this.xrTableCell36,
this.xrTableCell34});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 1D;
//
// xrTableCell2
//
this.xrTableCell2.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell2.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell2.Multiline = true;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell2.StylePriority.UseBackColor = false;
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 = "Datum";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 0.54176126036459427D;
//
// xrTableCell32
//
this.xrTableCell32.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell32.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell32.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell32.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell32.StylePriority.UseBackColor = false;
this.xrTableCell32.StylePriority.UseBorderColor = false;
this.xrTableCell32.StylePriority.UseBorders = false;
this.xrTableCell32.StylePriority.UseFont = false;
this.xrTableCell32.StylePriority.UsePadding = false;
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "Positionsnummer";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell32.Weight = 0.63008808839302122D;
//
// xrTableCell37
//
this.xrTableCell37.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell37.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell37.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell37.StylePriority.UseBackColor = false;
this.xrTableCell37.StylePriority.UseBorderColor = false;
this.xrTableCell37.StylePriority.UseBorders = false;
this.xrTableCell37.StylePriority.UseFont = false;
this.xrTableCell37.StylePriority.UsePadding = false;
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Bezeichnung";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 1.078381382409926D;
//
// xrTableCell14
//
this.xrTableCell14.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell14.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell14.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell14.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell14.StylePriority.UseBackColor = false;
this.xrTableCell14.StylePriority.UseBorderColor = false;
this.xrTableCell14.StylePriority.UseBorders = false;
this.xrTableCell14.StylePriority.UseFont = false;
this.xrTableCell14.StylePriority.UsePadding = false;
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "Menge";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell14.Weight = 0.31249312969635945D;
//
// xrTableCell36
//
this.xrTableCell36.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell36.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell36.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell36.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell36.StylePriority.UseBackColor = false;
this.xrTableCell36.StylePriority.UseBorderColor = false;
this.xrTableCell36.StylePriority.UseBorders = false;
this.xrTableCell36.StylePriority.UseFont = false;
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.Text = "Preis";
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell36.Weight = 0.31249314533833322D;
//
// xrTableCell34
//
this.xrTableCell34.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell34.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell34.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell34.Name = "xrTableCell34";
this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell34.StylePriority.UseBackColor = false;
this.xrTableCell34.StylePriority.UseBorderColor = false;
this.xrTableCell34.StylePriority.UseBorders = false;
this.xrTableCell34.StylePriority.UseFont = false;
this.xrTableCell34.StylePriority.UsePadding = false;
this.xrTableCell34.StylePriority.UseTextAlignment = false;
this.xrTableCell34.Text = "Betrag";
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell34.Weight = 0.51012434888924074D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.GroupFooter1.HeightF = 47.91667F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrTable1
//
this.xrTable1.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(649.9999F, 25F);
this.xrTable1.StylePriority.UseFont = false;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell5});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell1.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell1.Font = new DevExpress.Drawing.DXFont("Calibri", 12F, DevExpress.Drawing.DXFontStyle.Bold);
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 = "Rechnungsbetrag";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell1.Weight = 2.3522344892514937D;
//
// xrTableCell5
//
this.xrTableCell5.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell5.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
this.xrTableCell5.Font = new DevExpress.Drawing.DXFont("Calibri", 12F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 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.MiddleRight;
this.xrTableCell5.Weight = 0.41733623261820113D;
//
// SoziotherapieRechnung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.Page1,
this.ReportFooter,
this.DetailReport});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(100F, 50F, 200.625F, 97.29169F);
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.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.XRLabel lblAdresse;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
private DevExpress.XtraReports.UI.DetailBand Detail1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
private DevExpress.XtraReports.UI.DetailBand Detail2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRTable xrTable5;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell32;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTable xrTable6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell40;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell42;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell45;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
private DevExpress.XtraReports.UI.XRRichText xrRichText1;
}
}

View File

@@ -0,0 +1,98 @@
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
using System;
using System.Text;
namespace KcmGmbHSozio
{
[IDSpecificClass(Identifier = "RechnungSoziotherapie")]
public partial class SoziotherapieRechnung : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public SoziotherapieRechnung()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
string poBox = null;
if (pRO.InvoiceBase.RecipientContactInformations.Count > 0)
{
foreach (var i in pRO.InvoiceBase.RecipientContactInformations)
{
if (i.ContactType == BS.Shared.ContactType.private_POBox)
poBox = i.ContactValue;
}
}
StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmpty(pRO.RecipientOrganisation))
{
sb.AppendLine(pRO.RecipientOrganisation);
}
if (!String.IsNullOrEmpty(pRO.RecipientAddressLine1))
{
sb.AppendLine(pRO.RecipientAddressLine1);
}
if (!String.IsNullOrEmpty(pRO.RecipientContactPerson))
{
sb.AppendLine(pRO.RecipientContactPerson);
}
if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation))
{
sb.AppendLine(pRO.RecipientDivision);
}
if (!String.IsNullOrEmpty(poBox))
{
sb.AppendLine(poBox);
}
else if (!String.IsNullOrEmpty(pRO.RecipientPoBox))
{
sb.AppendLine(pRO.RecipientPoBox);
}
else if (!String.IsNullOrEmpty(pRO.RecipientStreet))
{
sb.AppendLine(pRO.RecipientStreet);
}
if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown))
{
sb.AppendLine("");
sb.AppendLine(pRO.RecipientPostCodeAndTown);
}
lblAdresse.Text = sb.ToString();
decimal hours = 0;
if (pRO.ServiceInvoicePeriods != null)
{
foreach (var sip in pRO.ServiceInvoicePeriods)
{
foreach (var ii in sip.ServiceInvoiceItems)
{
hours += ii.Hours ?? 0;
if (ii.UnitDescription == null || !ii.UnitDescription.StartsWith("GPos"))
{
ii.UnitDescription = "";
}
// Einheit setzen
ii.HourlyRateString = "Stunden";
if (ii.ServiceDescription != null && ii.ServiceDescription.ToLower().Contains("hausbesuchspauschale"))
{
ii.HourlyRateString = "";
}
}
}
}
if (String.IsNullOrEmpty(pRO.Notice))
{
xrLabel5.Visible = false;
}
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAKgBcAGQAZQBmAHAAYQBwACAAXAB3AGkAZABjAHQAbABwAGEAcgB9AHsAXABzAHQAeQBsAGUAcwBoAGUAZQB0ACAAewBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AcgBtAGEAbAA7AH0AewBcACoAXABjAHMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEQAZQBmAGEAdQBsAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAOwB9AHsAXAAqAFwAYwBzADIAXABzAGIAYQBzAGUAZABvAG4AMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQAgAEwAaQBuAGUAIABOAHUAbQBiAGUAcgA7AH0AewBcACoAXABjAHMAMwBcAGYAMQBcAGYAcwAyADQAXAB1AGwAXABjAGYAMgAgAEgAeQBwAGUAcgBsAGkAbgBrADsAfQB7AFwAKgBcAHQAcwA0AFwAdABzAHIAbwB3AGQAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBiADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHQAMwBcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAATgBvAHIAbQBhAGwAIABUAGEAYgBsAGUAOwB9AHsAXAAqAFwAdABzADUAXAB0AHMAcgBvAHcAZABcAHMAYgBhAHMAZQBkAG8AbgA0AFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcgBiAHIAZAByAHQAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAbABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBiAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAaABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgB2AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAcgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZAByADEAMAA4AFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABUAGEAYgBsAGUAIABTAGkAbQBwAGwAZQAgADEAOwB9AH0AewBcACoAXABsAGkAcwB0AG8AdgBlAHIAcgBpAGQAZQB0AGEAYgBsAGUAfQBcAG4AbwB1AGkAYwBvAG0AcABhAHQAXABoAHQAbQBhAHUAdABzAHAAXABzAHAAbAB5AHQAdwBuAGkAbgBlAFwAYQBsAG4AdABiAGwAaQBuAGQAXABlAHgAcABzAGgAcgB0AG4AXABzAHAAbAB0AHAAZwBwAGEAcgBcAG4AbwBnAHIAbwB3AGEAdQB0AG8AZgBpAHQAXAB1AHQAaQBuAGwAXABuAG8AYgByAGsAdwByAHAAdABiAGwAXABmAHQAbgBsAHkAdAB3AG4AaQBuAGUAXABuAG8AdABjAHYAYQBzAHAAXABkAG4AdABiAGwAbgBzAGIAZABiAFwAbgBlAHcAdABiAGwAcwB0AHkAcgB1AGwAcwBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAXABmADEAXABmAHMAMgA0AFwAYwBmADEAXABwAGEAcgB9AA==</value>
</data>
</root>

View File

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

View File

@@ -280,7 +280,7 @@ namespace BeWo.Service.Plugins
//t = "6860475645"; // Lebenshilfe Duisburg ATZ (Projekt heißt LebenshilfeDuisburgAtz6860475645)
//t = "9678360705"; // Lebenshilfe Duisburg HPTG (Projekt heißt LebenshilfeDuisburgHPTG)
//t = "4823067940"; // Die Kette 2
//t = "8283849714"; // Forum e.V. (proviel GmbH)
t = "8283849714"; // Forum e.V. (proviel GmbH)
//t = "3915346496"; // Sprungbrett 2. DB (Haus Theresia)
//t = "2387527289"; // Lebenshilfe Duisburg HPFH
//t = "2314784470"; // Lebenshilfe Duisburg BeWo
@@ -429,6 +429,7 @@ namespace BeWo.Service.Plugins
//t = "5960095273"; // Flexible Jugendarbeit Frankfurt (Oder) e.V.
//t = "6664235818"; // PariMobil gGmbH Krefeld
//t = "5740586468"; // Ute Hengstermann - ABW Anker
//t = "9885937567"; // Antje Boland - BeWo Boland
return t;
#else