Perseh Hilfeplan Import + KI Prototyp,

This commit is contained in:
Christian
2024-06-19 16:13:56 +02:00
parent fae18138a7
commit 12faccb71b
61 changed files with 4831 additions and 2588 deletions

View File

@@ -0,0 +1,63 @@
<view:BeWoView x:Class="BeWo.AI.View.AiChatView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:view="clr-namespace:BeWo.View"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:validation="clr-namespace:BeWo.Validation"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
mc:Ignorable="d" VerticalAlignment="Stretch" Focusable="True">
<view:BeWoView.Resources>
<!--<Expander x:Name="ExpanderTemplate" IsExpanded="True">
<Expander.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14" Margin="0" />
</Grid>
</Expander.Header>
</Expander>-->
</view:BeWoView.Resources>
<Grid Margin="0" Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxlc:LayoutControl Orientation="Vertical" Padding="0">
<dxlc:LayoutGroup dxlc:LayoutControl.AllowVerticalSizing="True" Height="200">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="{t:Translate Formulieren Sie hier Ihre Anfrage}"></Label>
<TextBox x:Name="TextBoxAnfrage" Grid.Row="1" MinHeight="60" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"></TextBox>
</Grid>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup dxlc:LayoutControl.AllowVerticalSizing="True">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="{t:Translate Ergebnis}"></Label>
<TextBox x:Name="TextBoxErgebnis" Grid.Row="1" MinHeight="60" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" TextWrapping="Wrap" ></TextBox>
</Grid>
</dxlc:LayoutGroup>
</dxlc:LayoutControl>
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" Height="Auto" Margin="5,10,10,10" HorizontalAlignment="Right">
<Button x:Name="btnSend" Content="{t:Translate Absenden}" Margin="0,0,3,0" Height="25" Click="btnSend_Click"/>
<Button x:Name="btnClose" Content=" Schließen " Margin="0,0,3,0" Height="25" Click="btnClose_Click"/>
</StackPanel>
</Grid>
</view:BeWoView>

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using BeWo.Annotations;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View;
using BeWo.View.Controls;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using MessageBox = System.Windows.MessageBox;
namespace BeWo.AI.View
{
public partial class AiChatView : BeWoView
{
public event Action CloseButtonClicked;
private long cb2scOid;
private DateTime startDate;
private DateTime endDate;
public AiChatView(long c2sOid, DateTime start, DateTime end)
{
InitializeComponent();
this.cb2scOid = c2sOid;
this.startDate = start;
this.endDate = end;
}
private void ReloadViewModel(AiChatDC dc)
{
TextBoxErgebnis.Text = dc.Result;
}
private void btnSend_Click(object sender, RoutedEventArgs e)
{
var acdc = new AiChatDC();
acdc.Prompt = TextBoxAnfrage.Text;
ServiceFacade.DoOperationsServiceAsync(s => s.CreateAiQueryForServiceRecords(acdc, cb2scOid, startDate, endDate),
dc =>
{
this.Dispatch(delegate
{
ReloadViewModel(dc);
});
});
}
private void btnClose_Click(object sender, RoutedEventArgs e)
{
CloseButtonClicked?.Invoke();
}
}
}

View File

@@ -195,6 +195,10 @@
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Page Include="AI\View\AiChatView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="BSLogoControl.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -315,6 +319,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\HilfeplanImportView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Controls\DPCtrlEmployeeContractTooltip.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -818,6 +826,9 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="AI\View\AiChatView.xaml.cs">
<DependentUpon>AiChatView.xaml</DependentUpon>
</Compile>
<Compile Include="BSLogoControl.xaml.cs">
<DependentUpon>BSLogoControl.xaml</DependentUpon>
</Compile>
@@ -1034,6 +1045,7 @@
<Compile Include="ViewModel\ListViewModel\GkvAbrechnungListVM.cs" />
<Compile Include="ViewModel\ListViewModel\PreisListVM.cs" />
<Compile Include="ViewModel\GkvAbrechnungVM.cs" />
<Compile Include="ViewModel\PlatzhalterVM.cs" />
<Compile Include="ViewModel\PreisVM.cs" />
<Compile Include="ViewModel\PrintSelectionVM.cs" />
<Compile Include="ViewModel\QuittierungsbelegsstatusVM.cs" />
@@ -1127,6 +1139,9 @@
<Compile Include="ViewModel\OrganisationPersonRelationVM.cs" />
<Compile Include="ViewModel\TextModuleVM.cs" />
<Compile Include="ViewModel\VerordnungslistenVM.cs" />
<Compile Include="View\HilfeplanImportView.xaml.cs">
<DependentUpon>HilfeplanImportView.xaml</DependentUpon>
</Compile>
<Compile Include="View\BeWoWindowBuilder.cs" />
<Compile Include="View\Controls\DPCtrlEmployeeContractTooltip.xaml.cs">
<DependentUpon>DPCtrlEmployeeContractTooltip.xaml</DependentUpon>
@@ -2671,392 +2686,392 @@
<ItemGroup>
<PublishFile Include="Blacklight.Wpf.Controls">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Charts.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v23.2.Linq">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Office.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.PivotGrid.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Printing.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.RichEdit.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.RichEdit.v23.2.Export">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Sparkline.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Utils.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Accordion.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Charts.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Core.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Docking.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Layout.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Mvvm.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Ribbon.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Scheduler.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.LightGray.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2007Black.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2010Black.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2013.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2016White.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraBars.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraCharts.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraEditors.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraNavBar.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPivotGrid.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPrinting.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraReports.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2.Reporting">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraTreeList.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
</ItemGroup>
@@ -3193,6 +3208,9 @@
<ItemGroup>
<Resource Include="Ressources\Icons\BoyAndGirl.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Ressources\Icons\chatbot.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>

View File

@@ -49,8 +49,8 @@ namespace BeWo
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3.20";
public static string Version = "Version 3.20.2";
public static string ShortVersion = "3.21";
public static string Version = "Version 3.21";
public static int RenderTier = 0;
@@ -505,7 +505,10 @@ namespace BeWo
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowHilfeplanStatistikReport);
AppSettings.ShowHilfeplanStatistikReport = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MoKSessionTimeout);
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAI);
AppSettings.ShowAI = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MoKSessionTimeout);
if(int.TryParse(val, out var sessionTimeout))
{
AppSettings.MoKSessionTimeout = sessionTimeout;
@@ -523,6 +526,10 @@ namespace BeWo
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowImportAbschlagszahlungen);
AppSettings.ShowImportAbschlagszahlungen = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowPersehImport);
AppSettings.ShowPersehImport = val != null && val.Equals("1");
switch (_Mandator.BeWoClientType)
{
@@ -584,6 +591,7 @@ namespace BeWo
showDienstplanung = true;
showHilfeplanBezeichnung = true;
AppSettings.AllowStorno = true;
AppSettings.ShowAI = true;
//showInfoButtonInCalender = true;
#endif

View File

@@ -445,10 +445,15 @@ namespace BeWo.Core.Config
public bool ShowHilfeplanStatistikReport { get; set; }
public bool ShowAI { get; set; }
public bool AllowGkvAbrechnung { get; set; }
public bool ShowImportAbschlagszahlungen { get; set; }
public bool ShowPersehImport { get; set; }
private SchedulerViewType _SchedulerViewType;
public SchedulerViewType SchedulerViewType
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -46,6 +46,14 @@ namespace BeWo.View
return beWoWindow;
}
public static BeWoWindow GetBeWoWindow(String title, Control control, double height = 600, double width = 1200)
{
var beWoWindow = GetGenericBeWoWindow(title, 100, height, 1000, 100, width, 1600);
beWoWindow.GroupBoxContent = control;
return beWoWindow;
}
public static void ShowErrorMessageBox(string text)
{
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);

View File

@@ -1,5 +1,5 @@
<localView:BeWoView x:Class="BeWo.View.Detail.SupportConceptView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
@@ -931,10 +931,10 @@
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox x:Name="chkShowSelectedGoals" IsThreeState="False" Grid.Column="0" Margin="3,0,10,0" VerticalAlignment="Center" Content="Nur ausgewählte Elemente anzeigen" Checked="ChkShowSelectedGoals_OnChecked" Unchecked="ChkShowSelectedGoals_OnUnchecked"/>
<dxe:TextEdit Margin="3,3,7,3" Grid.Column="1"
Height="23"
@@ -942,7 +942,11 @@
NullText="Suche..."
ShowNullText="True" EditValueChanged="TxtSearchGoals_OnEditValueChanged">
</dxe:TextEdit>
<!--<Label x:Name="SearchFieldLabel" Grid.Column="1" Content="Suche" VerticalAlignment="Center" HorizontalAlignment="Left" />
<Button Margin="3 0 0 0" Grid.Column="2"
ToolTip="{markup:Translate Klicken Sie hier um Ziele aus einem bestehenden Dokument zu importieren}"
Name="ButtenImport" Click="ButtenImport_Click"
HorizontalAlignment="Left" Content="{markup:Translate Ziele importieren}" />
<!--<Label x:Name="SearchFieldLabel" Grid.Column="1" Content="Suche" VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBox x:Name="cbtv_search" Grid.Column="2" Margin="3" Height="23" Template="{StaticResource SearchBoxTemplate}" HorizontalAlignment="Stretch" />-->
</Grid>

View File

@@ -85,6 +85,12 @@ namespace BeWo.View.Detail
InitializeComponent();
ViewModel = pViewModel;
//tabitem_goalsNeu.Visibility = Visibility.Collapsed;
if (!BeWoApp.AppSettings.ShowPersehImport || !BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ImportData))
{
ButtenImport.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConceptView_AllowArchiving))
{
lblArchiviert.Visibility = Visibility.Hidden;
@@ -1950,7 +1956,19 @@ namespace BeWo.View.Detail
}
private void ButtenImport_Click(object sender, RoutedEventArgs e)
{
var ctrl = new HilfeplanImportView(this.ViewModel.DataContract.SupportConceptOid);
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Importiere Hilfeplan"), ctrl, this.Height, this.Width);
ctrl.CloseButtonClicked += () => beWoWindow.Close();
beWoWindow.ShowDialog();
ReloadViewModel(this.ViewModel.DataContract.SupportConceptOid.Value);
}
}
public class ValueListEntryTypeToColorConverter : IValueConverter

View File

@@ -306,6 +306,7 @@
</TransformGroup>
</Image.RenderTransform>
</Image>
<TextBox x:Name="txtTimeRecording" Text="{markup:Translate Zeiterfassung}" Margin="10,0,0,0" Background="{x:Null}"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}" FontSize="22"
BorderBrush="{x:Null}" VerticalAlignment="Stretch" BorderThickness="0,0,0,0"
@@ -383,7 +384,8 @@
x:Name="multiEmployeeControl" Width="250" MinHeight="100" MaxHeight="200" VerticalAlignment="Top"
Visibility="Collapsed" />
<Button x:Name="ButtonZeiterfassungErstellen" Margin="0,65,0,0" Height="22" Content="{markup:Translate Zeiterfassung erstellen}" Click="ButtonZeiterfassungErstellen_Click" HorizontalAlignment="Left" VerticalAlignment="Bottom" Visibility="Visible" ToolTip="{markup:Translate Zeiterfassung wird gemäß der hinterlegten Betreuungszeiten erstellt\, falls noch nicht vorhanden}"></Button>
<TextBlock x:Name="ButtonStatistics" HorizontalAlignment="Center" Width="Auto" Margin="5,2,0,0" Grid.Column="2" Visibility="{Binding StatisticsButtonVisible, Converter={StaticResource BoolVisibilityConverter}}" PreviewMouseLeftButtonDown="PrintStatistics" ToolTip="{markup:Translate Statistik anzeigen}">
<StackPanel Grid.Column="2" Orientation="Horizontal">
<TextBlock x:Name="ButtonStatistics" HorizontalAlignment="Left" Width="Auto" Margin="5,2,0,0" Visibility="{Binding StatisticsButtonVisible, Converter={StaticResource BoolVisibilityConverter}}" PreviewMouseLeftButtonDown="PrintStatistics" ToolTip="{markup:Translate Statistik anzeigen}">
<Hyperlink NavigateUri="https://www.bewoplaner.de" TargetName="newWindow" Foreground="Transparent" >
<Image HorizontalAlignment="Left" Source="..\..\..\Ressources\Icons\ChartBarDisabled.png"
@@ -393,6 +395,17 @@
</Hyperlink>
</TextBlock>
<TextBlock x:Name="ButtonOpenAiChat" HorizontalAlignment="Left" Width="Auto" Margin="5,2,0,0" Grid.Column="2" Visibility="{Binding OpenAiChatButtonVisible, Converter={StaticResource BoolVisibilityConverter}}" PreviewMouseLeftButtonDown="OpenAiChat">
<Hyperlink NavigateUri="https://www.bewoplaner.de" TargetName="newWindow" Foreground="Transparent" >
<Image HorizontalAlignment="Left" Source="..\..\..\Ressources\Icons\chatbot.png" Width="48" Height="48"
Style="{StaticResource toolbarImageStyle}" >
</Image>
</Hyperlink>
</TextBlock>
</StackPanel>
<Grid Grid.Row="0" VerticalAlignment="Top" Margin="13,1,0,0" Grid.Column="3" Visibility="{Binding HasStatistics, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter='false'}">
<ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<Grid x:Name="StatisticInfoGrid">

View File

@@ -50,6 +50,7 @@ using Size = System.Windows.Size;
using SupportConceptService = BeWo.Core.Service.SupportConceptService;
using VerticalAlignment = System.Windows.VerticalAlignment;
using DependencyObject = System.Windows.DependencyObject;
using BeWo.AI.View;
namespace BeWo.View.Detail.Zeiterfassung
{
@@ -5018,6 +5019,39 @@ namespace BeWo.View.Detail.Zeiterfassung
BeWoUtils.NavigateToReportUri(url, "Druckvorschau");
}
private void OpenAiChat(object sender, MouseButtonEventArgs e)
{
var node = ViewModel.SelectedCustomerNode;
long c2sOid = 0;
if (node != null && node.SupportConceptTreeNodeDC != null && node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC != null)
{
c2sOid = node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC.CostBearer2SupportConceptOid.Value;
}
var sr = ViewModel.ServiceRecordsForSelectedCustomer;
var earliestStartDate = sr.Any() ? sr.OrderBy(o => o.StartDate).First().StartDate : DateTime.Now;
var latestEndDate = sr.Any()
? sr.OrderByDescending(o => o.EndDate).First().EndDate
: DateTime.Now.AddSeconds(1);
if (latestEndDate.Hour == 0 && latestEndDate.Minute == 0 && latestEndDate.Second == 1)
{
latestEndDate = latestEndDate.AddHours(23);
latestEndDate = latestEndDate.AddMinutes(59);
}
var ctrl = new AiChatView(c2sOid, earliestStartDate, latestEndDate);
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Frage unsere KI"), ctrl, Math.Min(800, this.ActualHeight), Math.Min(1200, this.ActualWidth));
ctrl.CloseButtonClicked += () => beWoWindow.Close();
beWoWindow.ShowDialog();
}
private void multiSupportConceptControl_ListChanged(object sender, EventArgs<IList<CompactSupportConceptDC>> e)
{
ViewModel.UpdateGroupServiceAccountings(e.Data);

View File

@@ -0,0 +1,99 @@
<view:BeWoView x:Class="BeWo.View.HilfeplanImportView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:view="clr-namespace:BeWo.View"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:validation="clr-namespace:BeWo.Validation"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
mc:Ignorable="d" VerticalAlignment="Stretch" Focusable="True">
<view:BeWoView.Resources>
<!--<Expander x:Name="ExpanderTemplate" IsExpanded="True">
<Expander.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14" Margin="0" />
</Grid>
</Expander.Header>
</Expander>-->
</view:BeWoView.Resources>
<Grid Margin="0" Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Content="{t:Translate Bitte wählen Sie das zu importierende PDF Dokument aus}"></Label>
<controls:PopUpEdit IsReadOnly="True" Name="popupedit_file" Grid.Column="1" Margin="0,0,0,0" Height="23" Width="250" Grid.Row="0" HorizontalAlignment="Left" DeleteButtonVisibility="Collapsed" PopUpClick="popupedit_file_PopUpClick" />
<Button x:Name="ButtonImport" Grid.Column="2" Margin="5,0,0,0" Height="22" Content="Datei auslesen" Click="ButtonImport_Click" HorizontalAlignment="Left" VerticalAlignment="Center" Visibility="Visible" ></Button>
</Grid>
<GroupBox x:Name="GroupBoxMain" Grid.Row="1" Margin="5" Header="{t:Translate Inhalt des Dokuments}" Style="{StaticResource ObjectEditGroupBox}" Visibility="Hidden">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel x:Name="PanelGruppen" Grid.Row="0">
</StackPanel>
<Expander x:Name="GridZiele" IsExpanded="True" Grid.Row="1" Margin="5">
<Expander.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label HorizontalAlignment="Left" VerticalAlignment="Center" Content="{t:Translate Zielplanung}" FontSize="14" Margin="0" />
</Grid>
</Expander.Header>
<TreeView x:Name="treeview_Goals" Margin="3 3 7 3" Padding="5 5 10 5"
ItemContainerStyle="{DynamicResource goal_treeitemstyle}"
ItemTemplate="{DynamicResource goal_treeitemtemplate}" Grid.RowSpan="1" MinHeight="100"
VirtualizingStackPanel.IsVirtualizing="False">
<TreeView.Resources>
<Style x:Key="goal_treeitemstyle" TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
</Style>
<HierarchicalDataTemplate x:Key="goal_treeitemtemplate" DataType="{x:Type view:GoalTreeItem}" ItemsSource="{Binding Path=Children}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Margin="0,0,0,0" Cursor="Arrow" Background="Transparent" Height="21" Padding="0,3,0,0" VerticalAlignment="Center" BorderThickness="0"
IsReadOnly="True" Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Focusable="False" FontSize="13">
</TextBox>
</Grid>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Expander>
</Grid>
</ScrollViewer>
</GroupBox>
<StackPanel Grid.ColumnSpan="3" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center" Height="Auto" Margin="5,10,10,10" HorizontalAlignment="Right">
<Button x:Name="btnSave" Content="{t:Translate Daten übernehmen}" Margin="0,0,3,0" Height="25" Click="btnSave_Click" />
<Button x:Name="btnClose" Content=" Abbrechen " Margin="0,0,3,0" Height="25" Click="btnClose_Click"/>
</StackPanel>
</Grid>
</view:BeWoView>

View File

@@ -0,0 +1,268 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using BeWo.Annotations;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View.Controls;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using MessageBox = System.Windows.MessageBox;
namespace BeWo.View
{
public partial class HilfeplanImportView : INotifyPropertyChanged
{
private HilfeplanImportDC _ViewModel;
private String _UploadFileName;
private long? _SupportConceptOid;
public event PropertyChangedEventHandler PropertyChanged;
public event Action CloseButtonClicked;
private HilfeplanImportDC ViewModel
{
get { return _ViewModel; }
set
{
DataContext = value;
_ViewModel = value;
}
}
public HilfeplanImportView(long? supportConceptOid)
{
InitializeComponent();
_SupportConceptOid = supportConceptOid;
ClearControls();
}
private void ReloadViewModel(HilfeplanImportDC dc)
{
this.ViewModel = dc;
ClearControls();
UpdateControls(dc);
}
private void ClearControls()
{
PanelGruppen.Children.Clear();
treeview_Goals.ItemsSource = null;
}
private void UpdateControls(HilfeplanImportDC dc)
{
if (dc.Gruppen != null)
{
foreach (var gruppe in dc.Gruppen)
{
ErstelleGruppe(gruppe);
}
}
if (dc.Ziele != null)
{
ErstelleTreeView(dc.Ziele);
}
GroupBoxMain.Visibility = Visibility.Visible;
}
private void ErstelleGruppe(HilfeplanImportItemDC gruppe)
{
var expander = new Expander();
expander.Margin = new Thickness(5);
expander.FontSize = 14;
expander.Header = gruppe.Label;
expander.IsExpanded = true;
var itemGrid = new Grid();
//itemGrid.FontWeight = FontWeights.Normal;
itemGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
itemGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
expander.Content = itemGrid;
if (gruppe.Items != null)
{
foreach (var item in gruppe.Items)
{
itemGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
var label = new System.Windows.Controls.Label();
label.FontSize = 12;
label.Margin = new Thickness(3);
label.Content = item.Label;
label.SetValue(Grid.ColumnProperty, 0);
label.SetValue(Grid.RowProperty, itemGrid.RowDefinitions.Count - 1);
var txt = new System.Windows.Controls.TextBox();
txt.FontSize = 12;
txt.Margin = new Thickness(3);
txt.Text = item.Content;
txt.MinWidth = 300;
txt.SetValue(Grid.ColumnProperty, 1);
txt.SetValue(Grid.RowProperty, itemGrid.RowDefinitions.Count - 1);
txt.Tag = item;
itemGrid.Children.Add(label);
itemGrid.Children.Add(txt);
}
}
PanelGruppen.Children.Add(expander);
}
private void ErstelleTreeView(IList<HilfeplanImportZielDC> ziele)
{
var treeItems = new BindingList<GoalTreeItem>();
foreach (var item in ziele)
{
GoalTreeItem ziel = new GoalTreeItem { Name = item.ZielName, Notice = item.ZielBeschreibung };
GoalTreeItem parent = treeItems.Where(i => i.Name == item.Bereich).FirstOrDefault();
if (parent == null)
{
parent = new GoalTreeItem();
parent.Name = item.Bereich;
treeItems.Add(parent);
}
parent.Children.Add(ziel);
}
treeview_Goals.ItemsSource = treeItems;
}
private void popupedit_file_PopUpClick(object sender, RoutedEventArgs ev)
{
var dlg = new OpenFileDialog();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
try
{
_UploadFileName = dlg.FileName;
popupedit_file.Text = dlg.SafeFileName;
ButtonImport.IsEnabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
private void ButtonImport_Click(object sender, RoutedEventArgs pe)
{
if (!String.IsNullOrEmpty(popupedit_file.Text))
{
try
{
var upload = new ProgressStream(File.OpenRead(_UploadFileName));
//upload.ProgressChanged += (s, e) => Dispatcher.BeginInvoke(
// DispatcherPriority.Normal,
// (Action)(() =>
// {
// progressbar_upload.Value = e.Data;
// text_progress.Content = string.Format("Bitte warten... {0:00}%", e.Data * 100);
// }));
long oid = 0;
var lUlPackage = new UploadPackage(null, 0, _UploadFileName, null, 0, 0, upload);
ServiceFacade.DoStreamingServiceAsync(
s => s.UploadPersehFile(lUlPackage),
r => this.Dispatch(
delegate
{
upload.Dispose();
if (r.HilfeplanImportData != null)
{
ReloadViewModel(r.HilfeplanImportData);
}
}),
() => this.Dispatch(
delegate
{
upload.Dispose();
}));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
ViewModel.SupportConceptOid = _SupportConceptOid;
var result = ServiceFacade.DoCustomerServiceSync(s => s.ImportSupportConcept(ViewModel));
if (!String.IsNullOrEmpty(result))
{
MessageBox.Show(result, "Import", MessageBoxButton.OK, MessageBoxImage.Information);
}
CloseButtonClicked?.Invoke();
}
private void btnClose_Click(object sender, RoutedEventArgs e)
{
CloseButtonClicked?.Invoke();
}
}
public class GoalTreeItem
{
private BindingList<GoalTreeItem> _Children;
public GoalTreeItem() { }
public bool IsHidden { get; set; }
public String Name { get; set; }
public String Notice { get; set; }
public BindingList<GoalTreeItem> Children
{
get => _Children ?? (_Children = new BindingList<GoalTreeItem>());
set => _Children = value;
}
}
}

View File

@@ -98,7 +98,8 @@
</Border>
<StackPanel Grid.ColumnSpan="3" Grid.Column="0" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Stretch" Height="40" Margin="5,10,0,0">
<Button x:Name="btnNew" Content="Neu" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="3,0,0,0" Click="btnNew_Click" />
<Button x:Name="btnCopy" Visibility="Collapsed" Content="Kopieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnCopy_Click" />
<Button x:Name="btnImport" Visibility="Collapsed" Content="Importieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="3,0,0,0" Click="btnImport_Click" />
<Button x:Name="btnCopy" Visibility="Collapsed" Content="Kopieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnCopy_Click" />
<Button x:Name="btnEdit" Content="Öffnen" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnEdit_Click" />
<Button x:Name="btnArchive" Content="Archivieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnArchive_Click" />
<Button x:Name="btnDelete" Content="Löschen" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnDelete_Click" />

View File

@@ -90,6 +90,8 @@ namespace BeWo.View.Navigation
public delegate void CreateNewObjectDelegate();
public delegate void ImportObjectsDelegate();
public delegate bool DeleteObjectDelegate(IFilterableDC obj);
public delegate void OpenObjectDelegate(IFilterableDC obj);
@@ -104,6 +106,8 @@ namespace BeWo.View.Navigation
public event CreateNewObjectDelegate CreateNewObject;
public event ImportObjectsDelegate ImportObjects;
public event DeleteObjectDelegate DeleteObject;
public event EventHandler<EventArgs<IEnumerable<IFilterableDC>>> ExcelExport;
@@ -197,6 +201,28 @@ namespace BeWo.View.Navigation
}
}
public bool ImportButtonVisible
{
get
{
return btnImport.Visibility == Visibility.Visible;
}
set
{
btnImport.Visibility = value ? Visibility.Visible : Visibility.Collapsed;
}
}
//[TypeConverter(typeof(UserRightTypeArrayConverter))]
//public UserRightType[] ImportDemands
//{
// set
// {
// DemandUserRight.SetVisibleDemands(btnImport, value);
// }
//}
public bool DeleteButtonVisible
{
get
@@ -567,7 +593,15 @@ namespace BeWo.View.Navigation
}
}
private void btnCopy_Click(object sender, RoutedEventArgs e)
private void btnImport_Click(object sender, RoutedEventArgs e)
{
if (ImportObjects != null)
{
ImportObjects();
}
}
private void btnCopy_Click(object sender, RoutedEventArgs e)
{
if (CopyObject != null)
{

View File

@@ -56,6 +56,7 @@
ExcelExport="mainNavigationView_ExcelExport"
Print="mainNavigationView_Print"
CopyObject="MainNavigation_CopyObject"
ImportObjects="MainNavigationView_OnImportObjects"
ShowDetailsPanel="True"
DetailPanelItemTemplate="{StaticResource SupportConceptDetailInfoTemplate}"
ContentGroupStyle="{StaticResource SupportConceptNavigationStyle}"

View File

@@ -186,6 +186,11 @@ namespace BeWo.View.Navigation
{
mainNavigationView.btnCopy.Visibility = Visibility.Visible;
}
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ImportData))
{
mainNavigationView.btnImport.Visibility = Visibility.Visible;
}
}
private void SupportConceptFilterComboBoxOnSelectionChanged(object o, SelectionChangedEventArgs selectionChangedEventArgs)
@@ -506,5 +511,18 @@ namespace BeWo.View.Navigation
//ServiceFacade.DoCustomerServiceAsync(s2 => s2.InsertNewSupportConcept(copy), l => this.Dispatch(() => ReloadData(true)));
});
}
private void MainNavigationView_OnImportObjects()
{
var ctrl = new HilfeplanImportView(null);
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Importiere Hilfeplan"), ctrl, this.Height, this.Width);
ctrl.CloseButtonClicked += () => beWoWindow.Close();
beWoWindow.ShowDialog();
ReloadData(true);
}
}
}

View File

@@ -335,6 +335,7 @@ namespace BeWo.ViewModel.ListViewModel
FirePropertyChanged(PropertyName_Statistics);
FirePropertyChanged("HasStatistics");
FirePropertyChanged("StatisticsButtonVisible");
FirePropertyChanged("OpenAiChatButtonVisible");
}
}
@@ -348,6 +349,11 @@ namespace BeWo.ViewModel.ListViewModel
get { return BeWoApp.AppSettings.ShowHilfeplanStatistikReport && SelectedCustomerNode != null && SelectedCustomerNode.SupportConceptTreeNodeDC != null; }
}
public bool OpenAiChatButtonVisible
{
get { return BeWoApp.AppSettings.ShowAI && (BeWoApp.LoggedOnUser.HasRight(UserRightType.AiChatInZeiterfassung)) && SelectedCustomerNode != null && SelectedCustomerNode.SupportConceptTreeNodeDC != null; }
}
public ServiceRecordTimeInterval ServiceRecordTimeInterval
{
get { return _ServiceRecordTimeInterval; }

View File

@@ -1613,7 +1613,7 @@ namespace BeWo.ViewModel
foreach (var item in goals)
{
if (!oid2Entry.ContainsKey(item.ValueListEntryOid.Value))
if (item.ValueListEntryOid.HasValue && !oid2Entry.ContainsKey(item.ValueListEntryOid.Value))
{
oid2Entry.Add(item.ValueListEntryOid.Value, item);
}

View File

@@ -101,7 +101,13 @@ namespace BeWo.ViewModel
{
if (!IsUnterschriftRight(r))
{
possibleRights.Add(r);
if (r != UserRightType.SupportConcept_ImportData || BeWoApp.AppSettings.ShowPersehImport)
{
if (r != UserRightType.AiChatInZeiterfassung || BeWoApp.AppSettings.ShowAI)
{
possibleRights.Add(r);
}
}
}
}
}

View File

@@ -388,7 +388,7 @@ namespace BeWo.Data.Access
var max = ende.Date.AddDays(1);
c.Add(Restrictions.Ge(ServiceRecord.PropertyName_Start, start.Date))
.Add(Restrictions.Lt(ServiceRecord.PropertyName_End, max.Date));
.Add(Restrictions.Lt(ServiceRecord.PropertyName_Start, max.Date));
return c.List<ServiceRecord>().ToList();

View File

@@ -152,6 +152,10 @@ namespace BeWo.Data.Security
return "3.19";
}
if (r == UserRightType.SupportConcept_ImportData || r == UserRightType.AiChatInZeiterfassung)
{
return "3.21";
}
return "1.0";
}

View File

@@ -1317,6 +1317,10 @@ namespace BeWo.Report.ReportObjects
{
if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
{
if (sr.Start.Value.Year == 2023 && sr.Start.Value.Month == 10 && sr.Start.Value.Day == 3)
{
int test = 0;
}
var dd = dayToDetail[sr.Start.Value.Day];
if (!IsServiceRecordFehlzeit(sr) && AddServiceRecordToDuration(sr))

View File

@@ -368,11 +368,28 @@ namespace BeWo.Report.ReportObjects
}
detail.Goals = "";
detail.Ziele = "";
detail.Massnahmen = "";
foreach (var goal in sortedGoals)
{
if (detail.Goals.Length > 0)
detail.Goals += ", ";
detail.Goals += goal.TypeDescription;
if (goal.Type == ValueListEntryType.SupportConceptGoalType || goal.Type == ValueListEntryType.SupportConceptIndividualGoalType)
{
if (detail.Massnahmen.Length > 0)
detail.Massnahmen += ", ";
detail.Massnahmen += goal.TypeDescription;
}
else
{
if (detail.Ziele.Length > 0)
detail.Ziele += ", ";
detail.Ziele += goal.TypeDescription;
}
}
@@ -446,8 +463,15 @@ namespace BeWo.Report.ReportObjects
public DateTime? EndTime { get; set; }
//Goals enthält alle Ziele und Maßnahmen, mit komma getrennt hintereinander
public string Goals { get; set; }
//enthält nur Ziele
public string Ziele { get; set; }
//enthält nur Massnahmen
public string Massnahmen { get; set; }
public List<string> GoalPaths { get; set; }
public string InsUser { get; set; }

View File

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

View File

@@ -87,7 +87,18 @@ namespace BloemelingUndTeckhaus
IBeWoReport<ServiceInvoiceRO> singleReport = new ServiceInvoiceReport();
if (iDC.ServiceInvoicePeriods.Count > 0)
{
var serviceCategory = iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory.Name.ToLower();
String serviceCategory = "";
if (iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod == null)
{
if (iDC.InvoiceBase.SupportConceptCostBearerRelDc.ApprovalPeriodList.Count == 1 && iDC.InvoiceBase.SupportConceptCostBearerRelDc.ApprovalPeriodList[0].ServiceCategory != null)
{
//serviceCategory = iDC.InvoiceBase.SupportConceptCostBearerRelDc.ApprovalPeriodList[0].ServiceCategory.Name.ToLower();
}
}
else if (iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory != null)
{
serviceCategory = iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory.Name.ToLower();
}
if (serviceCategory.Contains("soziotherapie"))
singleReport = new SoziotherapieRechnung();
else if (serviceCategory.Contains("assistenz"))

View File

@@ -258,6 +258,14 @@ namespace BloemelingUndTeckhaus
{
return DAOFactory.GenericDAO.LoadByID<Customer>(sip.Customer.CustomerOid);
}
else
{
if (pRO.InvoiceBase.SupportConceptOid.HasValue)
{
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(pRO.InvoiceBase.SupportConceptOid.Value);
return sc.Customer;
}
}
}

View File

@@ -40,6 +40,12 @@ namespace HPHBersenbrueck.Invoicing
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
{
if (iServiceRecord.ServiceDescription.Name.StartsWith("6 ") || iServiceRecord.ServiceDescription.Name.StartsWith("10 ") || iServiceRecord.ServiceDescription.Name.ToLower().Contains("unrefinanziert") ||
iServiceRecord.ServiceDescription.Name.Contains("Fahr"))
{
return null;
}
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
ii.ItemDescription = iServiceRecord.ServiceDescription.CategoryName;
if (ii.ItemDescription.StartsWith("Neu "))

View File

@@ -0,0 +1,724 @@
using BeWo.Report.ReportObjects;
namespace PariSozial
{
partial class AssistenzstundenReport
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components;
/// <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);
}
#region Designer generated code
/// <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();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.xrTableServiceRecords1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow6 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.ruleRowVisible = new DevExpress.XtraReports.UI.FormattingRule();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel19 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel29 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel25 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel24 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel23 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel22 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel21 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel20 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel18 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.formattingRuleServiceDesc = new DevExpress.XtraReports.UI.FormattingRule();
this.formattingRuleCostBearer = new DevExpress.XtraReports.UI.FormattingRule();
this.formattingRuleEmployeeName = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.lblSummeMinuten = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.fieldAbrechenbareMinuten = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldBillableFLS = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldAbrechenbareFLS = new DevExpress.XtraReports.UI.CalculatedField();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableServiceRecords1});
this.Detail.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.Detail.HeightF = 40F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.StylePriority.UseFont = false;
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTableServiceRecords1
//
this.xrTableServiceRecords1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 0F);
this.xrTableServiceRecords1.Name = "xrTableServiceRecords1";
this.xrTableServiceRecords1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(650F, 40F);
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
this.xrTableServiceRecords1.StylePriority.UseBorders = false;
this.xrTableServiceRecords1.StylePriority.UseFont = false;
this.xrTableServiceRecords1.StylePriority.UseTextAlignment = false;
this.xrTableServiceRecords1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell4,
this.xrTableCell11,
this.xrTableCell1,
this.xrTableCell7,
this.xrTableCell5});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableRow2.StylePriority.UseTextAlignment = false;
this.xrTableRow2.Weight = 1.25D;
//
// xrTableCell3
//
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Datum";
this.xrTableCell3.Weight = 0.20524816333368198D;
//
// xrTableCell4
//
this.xrTableCell4.Multiline = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Uhrzeit\r\nvon ..... bis";
this.xrTableCell4.Weight = 0.25401997956299693D;
//
// xrTableCell11
//
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "Anzahl Minuten";
this.xrTableCell11.Weight = 0.21661999388924277D;
//
// xrTableCell1
//
this.xrTableCell1.Multiline = true;
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Text = "Tätigkeitszweck";
this.xrTableCell1.Weight = 0.365788748861114D;
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1});
this.DetailReport.DataMember = "Services";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
this.DetailReport.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.DetailReport.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable3});
this.Detail1.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.Detail1.HeightF = 30F;
this.Detail1.Name = "Detail1";
this.Detail1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail1.StylePriority.UseFont = false;
this.Detail1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTable3
//
this.xrTable3.BorderColor = System.Drawing.Color.Black;
this.xrTable3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 0F);
this.xrTable3.Name = "xrTable3";
this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow6});
this.xrTable3.SizeF = new System.Drawing.SizeF(650F, 30F);
this.xrTable3.StylePriority.UseFont = false;
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTableRow6
//
this.xrTableRow6.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13,
this.xrTableCell14,
this.xrTableCell15,
this.xrTableCell2,
this.xrTableCell8,
this.xrTableCell6});
this.xrTableRow6.FormattingRules.Add(this.ruleRowVisible);
this.xrTableRow6.Name = "xrTableRow6";
this.xrTableRow6.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableRow6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableRow6.Weight = 1.5D;
//
// xrTableCell13
//
this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.StartDate", "{0:dd.MM.yyyy}")});
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.StylePriority.UsePadding = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "xrTableCell13";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.10627102845134587D;
//
// xrTableCell14
//
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.TimeRangeString")});
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell14.StylePriority.UseFont = false;
this.xrTableCell14.StylePriority.UsePadding = false;
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell14.Weight = 0.13152356364414533D;
//
// xrTableCell15
//
this.xrTableCell15.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Minutes", "{0:0.##}")});
this.xrTableCell15.Name = "xrTableCell15";
this.xrTableCell15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
this.xrTableCell15.StylePriority.UseFont = false;
this.xrTableCell15.StylePriority.UsePadding = false;
this.xrTableCell15.StylePriority.UseTextAlignment = false;
this.xrTableCell15.Text = "xrTableCell15";
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell15.Weight = 0.11215893165550706D;
//
// xrTableCell2
//
this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.ServiceDescription")});
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell2.Weight = 0.18939389467655621D;
//
// ruleRowVisible
//
this.ruleRowVisible.Condition = "(Not Contains([ServiceCategory], \'Assistenz\')) And (Not Contains([ServiceDescript" +
"ion], \'Assistenz\'))";
this.ruleRowVisible.DataMember = "Services";
this.ruleRowVisible.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRowVisible.Name = "ruleRowVisible";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleStartDate.DataMember = "ServicesDouble";
this.formattingRuleStartDate.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleStartDate.Name = "formattingRuleStartDate";
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel19,
this.xrLabel10,
this.xrLabel29,
this.xrLabel25,
this.xrLabel24,
this.xrLabel23,
this.xrLabel22,
this.xrLabel21,
this.xrLabel9,
this.xrLabel20,
this.xrLabel18,
this.xrLabel14,
this.xrLabel13,
this.xrLabel12,
this.xrLabel1});
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.ReportHeader.HeightF = 336.1666F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// xrLabel19
//
this.xrLabel19.LocationFloat = new DevExpress.Utils.PointFloat(56.41683F, 109.375F);
this.xrLabel19.Name = "xrLabel19";
this.xrLabel19.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel19.SizeF = new System.Drawing.SizeF(93.58321F, 18F);
this.xrLabel19.StylePriority.UseFont = false;
this.xrLabel19.Text = "Anbieter:";
//
// xrLabel10
//
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 296.4583F);
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(62.99998F, 18F);
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "Monat:";
//
// xrLabel29
//
this.xrLabel29.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel29.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLSPerWeek")});
this.xrLabel29.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel29.LocationFloat = new DevExpress.Utils.PointFloat(372.5418F, 238F);
this.xrLabel29.Name = "xrLabel29";
this.xrLabel29.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel29.SizeF = new System.Drawing.SizeF(292.4999F, 25.00003F);
this.xrLabel29.StylePriority.UseBorders = false;
this.xrLabel29.StylePriority.UseFont = false;
this.xrLabel29.TextFormatString = "{0:0.0#} Stunden";
//
// xrLabel25
//
this.xrLabel25.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel25.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReferenceNumber")});
this.xrLabel25.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel25.LocationFloat = new DevExpress.Utils.PointFloat(372.5418F, 213F);
this.xrLabel25.Name = "xrLabel25";
this.xrLabel25.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel25.SizeF = new System.Drawing.SizeF(292.5001F, 25F);
this.xrLabel25.StylePriority.UseBorders = false;
this.xrLabel25.StylePriority.UseFont = false;
//
// xrLabel24
//
this.xrLabel24.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel24.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerFirstName")});
this.xrLabel24.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel24.LocationFloat = new DevExpress.Utils.PointFloat(372.5418F, 188F);
this.xrLabel24.Name = "xrLabel24";
this.xrLabel24.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel24.SizeF = new System.Drawing.SizeF(292.5F, 25F);
this.xrLabel24.StylePriority.UseBorders = false;
this.xrLabel24.StylePriority.UseFont = false;
//
// xrLabel23
//
this.xrLabel23.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerLastName")});
this.xrLabel23.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel23.LocationFloat = new DevExpress.Utils.PointFloat(372.5418F, 163F);
this.xrLabel23.Name = "xrLabel23";
this.xrLabel23.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel23.SizeF = new System.Drawing.SizeF(292.4999F, 25F);
this.xrLabel23.StylePriority.UseBorders = false;
this.xrLabel23.StylePriority.UseFont = false;
//
// xrLabel22
//
this.xrLabel22.LocationFloat = new DevExpress.Utils.PointFloat(150F, 109.375F);
this.xrLabel22.Multiline = true;
this.xrLabel22.Name = "xrLabel22";
this.xrLabel22.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel22.SizeF = new System.Drawing.SizeF(515.0417F, 40.3333F);
this.xrLabel22.StylePriority.UseBorders = false;
this.xrLabel22.StylePriority.UseFont = false;
this.xrLabel22.Text = "PariSozial - gemeinnützige Gesellschaft für Paritätische Sozialdienste mbH\r\nin de" +
"r Stadt Mönchengladbach";
//
// xrLabel21
//
this.xrLabel21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Year")});
this.xrLabel21.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel21.LocationFloat = new DevExpress.Utils.PointFloat(338.1668F, 296.4583F);
this.xrLabel21.Name = "xrLabel21";
this.xrLabel21.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel21.SizeF = new System.Drawing.SizeF(225F, 18F);
this.xrLabel21.StylePriority.UseBorders = false;
this.xrLabel21.StylePriority.UseFont = false;
//
// xrLabel9
//
this.xrLabel9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Month")});
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(104.1667F, 296.4583F);
this.xrLabel9.Name = "xrLabel9";
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel9.SizeF = new System.Drawing.SizeF(161.125F, 18F);
this.xrLabel9.StylePriority.UseBorders = false;
this.xrLabel9.StylePriority.UseFont = false;
//
// xrLabel20
//
this.xrLabel20.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel20.LocationFloat = new DevExpress.Utils.PointFloat(284.9167F, 296.4583F);
this.xrLabel20.Name = "xrLabel20";
this.xrLabel20.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel20.SizeF = new System.Drawing.SizeF(53.25014F, 18F);
this.xrLabel20.StylePriority.UseFont = false;
this.xrLabel20.Text = "Jahr:";
//
// xrLabel18
//
this.xrLabel18.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 238F);
this.xrLabel18.Name = "xrLabel18";
this.xrLabel18.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel18.SizeF = new System.Drawing.SizeF(288F, 25F);
this.xrLabel18.StylePriority.UseFont = false;
this.xrLabel18.Text = "Bewilligte Leistungsstunden / wöchentl.";
//
// xrLabel14
//
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 213F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(288F, 25F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "Aktenzeichen Landschaftsverband: ";
//
// xrLabel13
//
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 188F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(288F, 25F);
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.Text = "Vorname Klient/in:";
//
// xrLabel12
//
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 163F);
this.xrLabel12.Name = "xrLabel12";
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel12.SizeF = new System.Drawing.SizeF(288F, 25F);
this.xrLabel12.StylePriority.UseFont = false;
this.xrLabel12.Text = "Name Klient/in:";
//
// xrLabel1
//
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Arial", 14F, ((DevExpress.Drawing.DXFontStyle)((DevExpress.Drawing.DXFontStyle.Bold | DevExpress.Drawing.DXFontStyle.Underline))));
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(150F, 61.45833F);
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(502.4166F, 25F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;
this.xrLabel1.Text = "Tätigkeitsnachweis Assistenzleistungen";
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// formattingRuleServiceDesc
//
this.formattingRuleServiceDesc.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleServiceDesc.DataMember = "ServicesDouble";
this.formattingRuleServiceDesc.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleServiceDesc.Name = "formattingRuleServiceDesc";
//
// formattingRuleCostBearer
//
this.formattingRuleCostBearer.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleCostBearer.DataMember = "ServicesDouble";
this.formattingRuleCostBearer.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleCostBearer.Name = "formattingRuleCostBearer";
//
// formattingRuleEmployeeName
//
this.formattingRuleEmployeeName.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleEmployeeName.DataMember = "ServicesDouble";
this.formattingRuleEmployeeName.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleEmployeeName.Name = "formattingRuleEmployeeName";
//
// topMarginBand1
//
this.topMarginBand1.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F);
this.topMarginBand1.HeightF = 50F;
this.topMarginBand1.Name = "topMarginBand1";
this.topMarginBand1.StylePriority.UseFont = false;
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 30F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// ReportFooter
//
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel7,
this.xrLabel6,
this.xrLabel5,
this.lblSummeMinuten,
this.xrLabel3});
this.ReportFooter.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.ReportFooter.HeightF = 108.75F;
this.ReportFooter.Name = "ReportFooter";
this.ReportFooter.StylePriority.UseFont = false;
//
// xrLabel7
//
this.xrLabel7.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(449.5834F, 90.74999F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(241.5833F, 17.99997F);
this.xrLabel7.StylePriority.UseBorders = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "Unterschrift Klient/in";
//
// xrLabel6
//
this.xrLabel6.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(191.1667F, 90.74999F);
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(241.25F, 17.99997F);
this.xrLabel6.StylePriority.UseBorders = false;
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.Text = "Unterschrift Mitarbeiter/in";
//
// xrLabel5
//
this.xrLabel5.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(41.16669F, 90.74999F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(133.9583F, 17.99997F);
this.xrLabel5.StylePriority.UseBorders = false;
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "Datum";
//
// lblSummeMinuten
//
this.lblSummeMinuten.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.lblSummeMinuten.BorderWidth = 1F;
this.lblSummeMinuten.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.lblSummeMinuten.LocationFloat = new DevExpress.Utils.PointFloat(229.5001F, 0F);
this.lblSummeMinuten.Name = "lblSummeMinuten";
this.lblSummeMinuten.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F);
this.lblSummeMinuten.SizeF = new System.Drawing.SizeF(88.83F, 30F);
this.lblSummeMinuten.StylePriority.UseBorders = false;
this.lblSummeMinuten.StylePriority.UseBorderWidth = false;
this.lblSummeMinuten.StylePriority.UseFont = false;
this.lblSummeMinuten.StylePriority.UsePadding = false;
this.lblSummeMinuten.StylePriority.UseTextAlignment = false;
this.lblSummeMinuten.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrLabel3
//
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(70.66996F, 0F);
this.xrLabel3.Multiline = true;
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(158.83F, 30F);
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.StylePriority.UseTextAlignment = false;
this.xrLabel3.Text = "Summe";
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// fieldAbrechenbareMinuten
//
this.fieldAbrechenbareMinuten.DataMember = "Services";
this.fieldAbrechenbareMinuten.Expression = "Iif([IsBillable], [Minutes], 0)";
this.fieldAbrechenbareMinuten.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldAbrechenbareMinuten.Name = "fieldAbrechenbareMinuten";
//
// fieldBillableFLS
//
this.fieldBillableFLS.Expression = "[TotalFLMBillable] / 60";
this.fieldBillableFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldBillableFLS.Name = "fieldBillableFLS";
//
// fieldAbrechenbareFLS
//
this.fieldAbrechenbareFLS.Expression = "([TotalFLMBillable] / 60) * 1.2";
this.fieldAbrechenbareFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldAbrechenbareFLS.Name = "fieldAbrechenbareFLS";
//
// xrTableCell5
//
this.xrTableCell5.Multiline = true;
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Text = "Unterschrift\r\nKlient/in";
this.xrTableCell5.Weight = 0.31174150625791663D;
//
// xrTableCell6
//
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Weight = 0.16140998371105708D;
//
// xrTableCell7
//
this.xrTableCell7.Multiline = true;
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "Einsatzkraft";
this.xrTableCell7.Weight = 0.23166620596447055D;
//
// xrTableCell8
//
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.EmployeeAbbr")});
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "xrTableCell8";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell8.Weight = 0.11994946282466618D;
//
// AssistenzstundenReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.DetailReport,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.ReportFooter});
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
this.fieldAbrechenbareMinuten,
this.fieldBillableFLS,
this.fieldAbrechenbareFLS});
this.DataSource = this.bindingSource1;
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.formattingRuleStartDate,
this.formattingRuleServiceDesc,
this.formattingRuleCostBearer,
this.formattingRuleEmployeeName,
this.ruleRowVisible});
this.Margins = new DevExpress.Drawing.DXMargins(31F, 75F, 50F, 30F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.SnapGridSize = 9F;
this.Version = "23.2";
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
#endregion
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
private DevExpress.XtraReports.UI.DetailBand Detail1;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRTable xrTableServiceRecords1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.FormattingRule formattingRuleStartDate;
private DevExpress.XtraReports.UI.FormattingRule formattingRuleServiceDesc;
private DevExpress.XtraReports.UI.FormattingRule formattingRuleCostBearer;
private DevExpress.XtraReports.UI.FormattingRule formattingRuleEmployeeName;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
private DevExpress.XtraReports.UI.XRLabel xrLabel20;
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
private DevExpress.XtraReports.UI.XRLabel xrLabel21;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
private DevExpress.XtraReports.UI.XRLabel xrLabel29;
private DevExpress.XtraReports.UI.XRLabel xrLabel25;
private DevExpress.XtraReports.UI.XRLabel xrLabel24;
private DevExpress.XtraReports.UI.XRLabel xrLabel23;
private DevExpress.XtraReports.UI.XRLabel xrLabel22;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.CalculatedField fieldAbrechenbareMinuten;
private DevExpress.XtraReports.UI.XRLabel lblSummeMinuten;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
private DevExpress.XtraReports.UI.CalculatedField fieldBillableFLS;
private DevExpress.XtraReports.UI.CalculatedField fieldAbrechenbareFLS;
private DevExpress.XtraReports.UI.XRLabel xrLabel19;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.FormattingRule ruleRowVisible;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
}
}

View File

@@ -0,0 +1,84 @@
using System;
using System.Collections;
using System.ComponentModel;
using BeWo.Service.ServiceImplementations;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using System.Collections.Generic;
namespace PariSozial
{
public partial class AssistenzstundenReport : XtraReport
{
public AssistenzstundenReport()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
double minTotal = 0;
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
{
if (s.ServiceCategory.Contains("Assistenz") || s.ServiceDescription.Contains("Assistenz"))
{
minTotal += s.Minutes;
}
}
}
bindingSource1.DataSource = pRO;
// rechnungsDatum.Text = DateTime.Now.ToShortDateString();
lblSummeMinuten.Text = string.Format("{0:0.##}", minTotal);
var approved = pRO.ApprovedFLSPerWeek;
//var stats = GetStatistics(pRO);
//if (stats != null)
//{
// approved = stats.MinutesApprovedPerWeek / 60;
//}
}
private SupportConceptPeriodStatisticsDC GetStatistics(ServicesOverviewRO ro)
{
if (ro.CostBearer2SupportConceptList != null && ro.CostBearer2SupportConceptList.Count > 0)
{
var service = new OperationsServiceImp();
foreach (var cb2sc in ro.CostBearer2SupportConceptList)
{
long cb2scOid = cb2sc.Oid.Value;
var stats = service.CreateSupportConceptStatistics(cb2scOid, ro.EndDate);
if (stats.PeriodStatistics != null && stats.PeriodStatistics.Count > 0)
{
foreach (var ps in stats.PeriodStatistics)
{
if (ps.SupportConceptApprovalPeriod != null && ps.SupportConceptApprovalPeriod.ServiceCategory != null &&
ps.SupportConceptApprovalPeriod.ServiceCategory.Name.Contains("Assistenz"))
{
return ps;
}
}
}
}
}
return null;
}
}
}

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,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
namespace PariSozial.Invoicing
{
public class CustomAssistenzInvoiceCreation : InvoiceCreation
{
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "Assistenz";
invoice.InvoiceBase.InvoiceTypeText = "Assistenzleistung";
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
if (!iServiceRecord.ServiceDescription.CategoryName.Contains("Assistenz"))
{
return null;
}
return base.CreateInvoiceItem(iServiceRecord, scap, calc);
}
//public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
// Calculations calc)
//{
// return itemList;
//}
}
}

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace PariSozial.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 sd = sr.ServiceDescription.Category;
var ic = GetInvoiceCreatorForCategory(sd);
if (ic != null)
return ic;
}
}
return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
private InvoiceCreation GetInvoiceCreatorForCategory(ServiceCategoryDC sd)
{
if (sd != null && !String.IsNullOrEmpty(sd.Name))
{
String cat = sd.Name.ToLower().Trim();
if (cat.IndexOf("assistenz") >= 0)
{
return new CustomAssistenzInvoiceCreation();
}
}
return null;
}
}
}

View File

@@ -55,7 +55,15 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="AssistenzstundenReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="AssistenzstundenReport.Designer.cs">
<DependentUpon>AssistenzstundenReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\AssistenzInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\CustomSettlementInvoiceCreation.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
@@ -101,6 +109,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="AssistenzstundenReport.resx">
<DependentUpon>AssistenzstundenReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>

View File

@@ -1,7 +1,9 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace SHKService
@@ -25,40 +27,48 @@ namespace SHKService
// Im Programm ist es für die damit dann einfacher. Nur in der Hilfeplanübersicht und in der Mitarbeiterauslastung wollen sie nach wie vor allen in Stunden haben.
// Daher werden die Werte hier, sollte das ein solcher Kostenträger sein, wieder auf den Stundenwert gesetzt.
foreach (var emp in pRO.EmployeeDetailList)
{
foreach (var supp in emp.SupportConceptDetailList)
{
if (supp.CostBearer2SupportConcept.CostBearer.CostRatePeriods != null)
{
foreach (var crp in supp.CostBearer2SupportConcept.CostBearer.CostRatePeriods)
{
if (crp.CostRateType == BS.Shared.CostRatePeriodType.MinutesPerServiceUnit && crp.CostRateValue == 1)
{
crp.CostRateValue = 60;
foreach (var emp in pRO.EmployeeDetailList)
{
emp.FLSTotalHoursByContract *= 60;
// Erst Ursprungswerte vom Gesamten des Mitarbeiters abziehen
emp.ApprovedHoursPerWeek -= supp.ApprovedHoursPerWeek;
emp.ApprovedHoursPerWeekTotal -= supp.ApprovedHoursPerWeekTotal;
emp.ApprovedHoursPerWeekWithRateFactor -= supp.ApprovedHoursPerWeekWithRateFactor;
emp.ApprovedHoursPerWeekWithRateFactorTotal -= supp.ApprovedHoursPerWeekWithRateFactorTotal;
// Stundenwert draus machen
supp.ApprovedHoursPerWeek *= 60;
supp.ApprovedHoursPerWeekTotal *= 60;
supp.ApprovedHoursPerWeekWithRateFactor *= 60;
supp.ApprovedHoursPerWeekWithRateFactorTotal *= 60;
// Stundenwert wieder aufs Gesamt addieren
emp.ApprovedHoursPerWeek += supp.ApprovedHoursPerWeek;
emp.ApprovedHoursPerWeekTotal += supp.ApprovedHoursPerWeekTotal;
emp.ApprovedHoursPerWeekWithRateFactor += supp.ApprovedHoursPerWeekWithRateFactor;
emp.ApprovedHoursPerWeekWithRateFactorTotal += supp.ApprovedHoursPerWeekWithRateFactorTotal;
}
foreach (var supp in emp.SupportConceptDetailList)
{
var tes2t = supp.ApprovedHoursPerWeek;
foreach (var test in supp.CostBearer2SupportConcept.CostBearer.CostRatePeriods)
{
if (test.CostRateType == BS.Shared.CostRatePeriodType.MinutesPerServiceUnit && test.CostRateValue == 1)
{
//test.CostRateValue = 60;
}
}
}
}
}
var crDcs = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(supp.CostBearer2SupportConcept.CostBearer.CostRatePeriods);
var crp = crDcs.GetCostRatePeriodForDate(BS.Shared.CostRatePeriodType.MinutesPerServiceUnit, pRO.ReportStartDate);
if (crp != null && !String.IsNullOrEmpty(crp.UnitName) && crp.UnitName.ToLower().Contains("min") && crp.CostRateValue.HasValue && crp.CostRateValue.Value > 0)
{
decimal multi = 60 / crp.CostRateValue.Value;
// Erst Ursprungswerte vom Gesamten des Mitarbeiters abziehen
emp.ApprovedHoursPerWeek -= supp.ApprovedHoursPerWeek;
emp.ApprovedHoursPerWeekTotal -= supp.ApprovedHoursPerWeekTotal;
emp.ApprovedHoursPerWeekWithRateFactor -= supp.ApprovedHoursPerWeekWithRateFactor;
emp.ApprovedHoursPerWeekWithRateFactorTotal -= supp.ApprovedHoursPerWeekWithRateFactorTotal;
// Stundenwert draus machen
supp.ApprovedHoursPerWeek *= multi;
supp.ApprovedHoursPerWeekTotal *= multi;
supp.ApprovedHoursPerWeekWithRateFactor *= multi;
supp.ApprovedHoursPerWeekWithRateFactorTotal *= multi;
// Stundenwert wieder aufs Gesamt addieren
emp.ApprovedHoursPerWeek += supp.ApprovedHoursPerWeek;
emp.ApprovedHoursPerWeekTotal += supp.ApprovedHoursPerWeekTotal;
emp.ApprovedHoursPerWeekWithRateFactor += supp.ApprovedHoursPerWeekWithRateFactor;
emp.ApprovedHoursPerWeekWithRateFactorTotal += supp.ApprovedHoursPerWeekWithRateFactorTotal;
}
}
}
this.bindingSource1.DataSource = pRO;
}

View File

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

View File

@@ -243,15 +243,19 @@ namespace SHKServiceSBD
public override decimal BerechneSollProWoche(Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
if (c != null && c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
{
var sollProWoche = Math.Round(c.MonthlyTotalHours.Value / 4.348m, 2, MidpointRounding.AwayFromZero);
if (ed.SollProTag == 0)
{
ed.SollProTag = sollProWoche / 5;
}
return sollProWoche;
}
//if (c != null && c.MonthlyTotalHours.HasValue && c.MonthlyTotalHours.Value > 0)
//{
// if (ed != null && ed.Employee != null && ed.Employee.IsActive == ActivationTypeId.Active)
// {
// var name = ed.LastName;
// }
// var sollProWoche = Math.Round(c.MonthlyTotalHours.Value / 4.348m, 2, MidpointRounding.AwayFromZero);
// if (ed.SollProTag == 0)
// {
// ed.SollProTag = sollProWoche / 5;
// }
// return sollProWoche;
//}
return base.BerechneSollProWoche(c, ed);
}
@@ -425,7 +429,15 @@ namespace SHKServiceSBD
{
if (feiertagAnrechnen)
{
dd.MinutesTotal = ed.SollProTag * 60;
var soll = ed.SollProTag * 60;
if (dd.MinutesTotal <= soll)
{
dd.MinutesTotal = soll;
}
else
{
int test = 0;
}
}
else
{
@@ -510,6 +522,58 @@ namespace SHKServiceSBD
return false;
}
public override decimal GetArbeitstageImBereich(DateTime von, DateTime bis, Employee emp)
{
DateTime start = von;
DateTime end = bis;
TimeSpan ts = end.Subtract(start);
var maxDays = (decimal)ts.TotalDays;
while (start < end)
{
int arbeitstageProWoche = 5;
var c = GetContractForDate(emp, start, start);
if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays > 0)
{
arbeitstageProWoche = c.WeeklyDays.Value;
}
if (arbeitstageProWoche <= 5 && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
{
maxDays -= 1;
}
else if (arbeitstageProWoche == 6 && start.DayOfWeek == DayOfWeek.Sunday)
{
maxDays -= 1;
}
else
{
foreach (var at in emp.AbsenceTimes)
{
if (at.AbsenceReason.Description.ToLower().Contains("unbezahlter urlaub"))
{
if (at.Start.Value <= start && (!at.End.HasValue || at.End.Value >= start))
{
if (maxDays >= 1)
{
maxDays--;
}
}
}
}
}
start = start.AddDays(1);
}
return maxDays;
}
public override decimal? GetSollStundenForAbsenceTime(MitarbeiterstundenkontoRO.EmployeeDetail ed, AbsenceTime at, DateTime datum)
{
if (at.AbsenceReason.Description.Contains("krank in der Schulzeit") || at.AbsenceReason.Description.Contains("Beschäftigungsverbot") || at.AbsenceReason.Description.Contains("Mutterschutz"))

View File

@@ -0,0 +1,65 @@
using BS.Shared.DataContracts;
using DevExpress.Pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace BeWo.Service.Import.Perseh
{
public class PersehReader
{
public HilfeplanImportDC ReadPdfDocument(byte[] daten)
{
HilfeplanImportDC result = new HilfeplanImportDC();
result.Gruppen = new List<HilfeplanImportItemDC>();
using (var processor = new PdfDocumentProcessor())
{
using (var ms = new MemoryStream(daten))
{
processor.LoadDocument(ms);
var pdfText = processor.Text;
var gruppe1 = new HilfeplanImportItemDC { Label = "Leistungssuchende oder leistungsberechtigte Person", Items = new List<HilfeplanImportItemDC>() };
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch"});
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
result.Gruppen.Add(gruppe1);
gruppe1 = new HilfeplanImportItemDC { Label = "Gruppe 2", Items = new List<HilfeplanImportItemDC>() };
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
result.Gruppen.Add(gruppe1);
result.Ziele = new List<HilfeplanImportZielDC>();
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
}
}
return result;
}
}
}

View File

@@ -79,10 +79,11 @@ namespace BeWo.Service.Invoicing
public virtual IList<ServiceRecord> GetBillableServiceRecords(CostBearer2SupportConcept c2s)
{
return c2s.ServiceRecords.OrderBy(s => s.Start).ToList();
return c2s.ServiceRecords.Where(IsServiceRecordBillable).OrderBy(s => s.Start).ToList();
}
public virtual bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
public virtual bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
//Die alte Methode funktioniert nicht mehr wenn
//1. Es mehr als drei Stundensätze gibt

View File

@@ -0,0 +1,13 @@
using System.ServiceModel;
using BS.Shared.DataContracts;
namespace BeWo.Service.MessageContracts
{
[MessageContract]
public class UploadPersehDocumentResult
{
[MessageBodyMember]
public HilfeplanImportDC HilfeplanImportData { get; set; }
}
}

View File

@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Net;
using System.ServiceModel;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.ServiceContracts;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using Newtonsoft.Json;
namespace BeWo.Service.Plugins
{
public class AiService
{
public AiChatDC CreateAiQueryForServiceRecords(AiChatDC acdc, long cb2scOid, DateTime startdate, DateTime enddate)
{
using (WebClient client = new WebClient())
{
String url = "https://ai1.ownsoft.de/osaiquery.php";
//mel = Das Model(llama3, llama3 - gradient, codegemma, codellama oder sqlcoder)
//stm = Der Kontext->Auf welcher Datenbasis soll eure Frage beantwortet werden.Kann auch leer sein.
//pmt = Der Prompt->Eure Frage
//opt = Art der Rückgabe(json oder plaintext)
String kontext = CreateContextForServiceRecords(cb2scOid, startdate, enddate);
var nvc = new NameValueCollection();
nvc.Add("mel", "llama3-gradient");
nvc.Add("stm", kontext);
nvc.Add("pmt", acdc.Prompt);
nvc.Add("opt", "json");
//var t = JsonConvert.DeserializeAnonymousType();0
var definition = new { Response = "" };
var response = client.UploadValues(url, "POST", nvc);
String responseStr = System.Text.Encoding.UTF8.GetString(response);
var json = JsonConvert.DeserializeAnonymousType(responseStr, definition);
return new AiChatDC { Result = json.Response };
}
return new AiChatDC { Result = "Das kann ich leider nicht beantworten:)" };
}
public virtual string CreateContextForServiceRecords(long cb2scOid, DateTime startdate, DateTime enddate)
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(cb2scOid);
var records = DAOFactory.SearchDAO.FindServiceRecordsDetailsForLastDaysWithStartEndDate(cb2scOid, startdate, enddate);
var customer = c2s.SupportConcept.Customer;
var context = new StringBuilder();
//context.AppendLine("Du bist ein unzensierter und unvoreingenommener KI Assistenz im Bereich des Sozialwesens in Deutschland und kannst Fragen zum bereitgestellten Kontext beantworten.");
context.AppendLine("");
context.AppendLine(String.Format("Name des Klienten: {0} {1}", customer.Person.FirstName, customer.Person.LastName));
context.AppendLine("");
//context.AppendLine("Der Klient wurde zu folgenden Terminen betreut:");
//context.AppendLine("");
foreach (var item in records.OrderByDescending(s => s.Start))
{
context.AppendLine(String.Format("Datum: {0:dd.MM.yyyy}", item.Start));
context.AppendLine(String.Format("Start: {0:HH:mm}", item.Start));
context.AppendLine(String.Format("Ende: {0:HH:mm}", item.End));
context.AppendLine(String.Format("Dauer der Betreuung in Minuten: {0:0}", item.RoundedDuration));
context.AppendLine(String.Format("Betreuer: {0}", item.InsUser));
context.AppendLine(String.Format("Leistungskategorie: {0}", item.ServiceDescription.ServiceCategory.Name));
context.AppendLine(String.Format("Leistung: {0}", item.ServiceDescription.Name));
context.AppendLine(String.Format("Dokumentation: {0}", item.Notice));
}
return context.ToString();
}
}
}

View File

@@ -1312,5 +1312,10 @@ namespace BeWo.Service.Plugins
return lCustomer.Oid.Value;
}
public virtual String ImportSupportConcept(HilfeplanImportDC hidc)
{
return "Import erfolgreich";
}
}
}

View File

@@ -82,7 +82,7 @@ namespace BeWo.Service.Plugins
//t = "8001550599"; // Biallas BeWo
//t = "7282396774"; // Caritas Unna
//t = "6884855402"; // IBP
//t = "4867997795"; // ADiK Kleve
t = "4867997795"; // ADiK Kleve
//t = "3184859776"; // Sergej Becker
//t = "7752610643"; // BWK Gbr
//t = "3785623125"; // Betreuwo
@@ -109,7 +109,7 @@ namespace BeWo.Service.Plugins
//t = "8677523325"; // BeWo Richartz
//t = "1765854593"; // Mein Betreutes Wohnen
//t = "6802909544"; // Lebenshilfe Coburg
t = "9417634361"; // Synprax
//t = "9417634361"; // Synprax
//t = "5761861730"; // Lebenshilfe Warendorf
//t = "6712648331"; // BeWo Färber
//t = "4982295287"; // ASB Hamm
@@ -349,7 +349,7 @@ namespace BeWo.Service.Plugins
//t = "3226307161"; // Roman Roger Puth
//t = "3522103738"; // AWO Münsterland-Recklinghausen
//t = "5592509446"; // Kontakt Verein für psychosoziale Hilfen e.V
t = "5344902949"; // SHK Service GmbH SBD
//t = "5344902949"; // SHK Service GmbH SBD
//t = "1422963536"; // Malteser-Johanniter-Johanneshaus gGmbH
//t = "5433105975"; // aha e.V.
//t = "1701920223"; // SKFM Monheim
@@ -387,6 +387,7 @@ namespace BeWo.Service.Plugins
//t = "1676990640"; // Perspektive - Selbständiges Leben
//t = "2544632712"; // Wabe gGmbH
//t = "7077286353"; // PariSozial
//t = "5000000000";
return t;
#else

View File

@@ -466,8 +466,12 @@ namespace BeWo.Service.Plugins
}
if (!isRelatedToTeam)
{
//Gehört nicht zum Team also überspringen
continue;
if (employeeOid.HasValue || teamOid.HasValue)
{
//Gehört nicht zum Team also überspringen
continue;
}
}
}
@@ -510,7 +514,7 @@ namespace BeWo.Service.Plugins
{
if (expiredMonths.HasValue)
{
cont = c2s.EndDate.HasValue && c2s.EndDate.Value < DateTime.Now.AddMonths(expiredMonths.Value);
cont = c2s.EndDate.HasValue && c2s.EndDate.Value <= DateTime.Now.Date.AddMonths(expiredMonths.Value);
}
}

View File

@@ -391,6 +391,7 @@
<Compile Include="Import\AvisImport\LvrAvisKlientGesamt.cs" />
<Compile Include="Import\AvisImport\LvrAvisPdfReader.cs" />
<Compile Include="Import\AvisImport\Avis.cs" />
<Compile Include="Import\Perseh\PersehReader.cs" />
<Compile Include="Invoicing\ApprovalPeriod.cs" />
<Compile Include="Invoicing\GeneralInvoiceCreation.cs" />
<Compile Include="Invoicing\SbdDefaultInvoiceCreation.cs" />
@@ -410,6 +411,7 @@
<Compile Include="Invoicing\LWLSettlementInvoiceCreation.cs" />
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="MessageContracts\UploadChatPackage.cs" />
<Compile Include="MessageContracts\UploadPersehDocumentResult.cs" />
<Compile Include="MessageContracts\UploadChatResult.cs" />
<Compile Include="MessageContracts\UpdatePackage.cs" />
<Compile Include="MessageContracts\UploadPackage.cs" />
@@ -420,6 +422,7 @@
<Compile Include="Multitenancy\MultitenancyEndpointBehavior.cs" />
<Compile Include="OwnChat\OwnChatHelper.cs" />
<Compile Include="PivotTabelle\FlexibleReportManager.cs" />
<Compile Include="Plugins\AiService.cs" />
<Compile Include="Plugins\AccountingService.cs" />
<Compile Include="Plugins\CustomerService.cs" />
<Compile Include="Plugins\ResourceService.cs" />
@@ -538,6 +541,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Folder Include="AI\" />
<Folder Include="ServiceUtils\API\" />
<Folder Include="ServiceUtils\Generell\" />
<Folder Include="Utils\" />

View File

@@ -756,5 +756,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<SupportConceptDC> GetSupportConceptsByCostbearer2SupportConceptRelOids(List<long> costbearer2SupportConceptRelOids);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
String ImportSupportConcept(HilfeplanImportDC hidc);
}
}

View File

@@ -1367,5 +1367,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<BargeldtransaktionshistoryDC> LoadBargeldtransaktionshistoryEntriesByTransaktionsOids(List<long> transaktionsOids);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
AiChatDC CreateAiQueryForServiceRecords(AiChatDC acdc, long cb2scOid, DateTime startdate, DateTime enddate);
}
}

View File

@@ -42,6 +42,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof (BeWoFault))]
[OperationContract]
UploadImportFileResult UploadImportFile(UploadPackage upload);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
UploadPersehDocumentResult UploadPersehFile(UploadPackage upload);
}
}

View File

@@ -4442,6 +4442,21 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public String ImportSupportConcept(HilfeplanImportDC hidc)
{
try
{
var s = PluginLoader.FindClass<CustomerService>();
return s.ImportSupportConcept(hidc);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
internal struct WohnheimbuchungsIntervallStruct

View File

@@ -8895,6 +8895,21 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public AiChatDC CreateAiQueryForServiceRecords(AiChatDC acdc, long cb2scOid, DateTime startdate, DateTime enddate)
{
try
{
var s = PluginLoader.FindClass<AiService>();
return s.CreateAiQueryForServiceRecords(acdc, cb2scOid, startdate, enddate);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
public class ServiceRecord2SignatureStates

View File

@@ -8,6 +8,7 @@ using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Import.Perseh;
using BeWo.Service.MessageContracts;
using BeWo.Service.Plugins;
using BeWo.Service.ServiceContracts;
@@ -205,6 +206,30 @@ namespace BeWo.Service.ServiceImplementations
}
public UploadPersehDocumentResult UploadPersehFile(UploadPackage upload)
{
try
{
var filename = upload.FileName;
var daten = BS.Shared.Core.Utils.ReadFully(upload.Stream);
upload.Stream.Close();
upload.Stream.Dispose();
var pr = PluginLoader.FindClass<PersehReader>();
var result = new UploadPersehDocumentResult();
result.HilfeplanImportData = pr.ReadPdfDocument(daten);
return result;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public UploadChatResult CreateNewSpeziallStreamChatMessagesDC(UploadChatPackage istream)
{
try

View File

@@ -418,6 +418,7 @@ namespace BS.Shared
TeamView_ViewMyTeams = 10031,
Customer_ViewMyTeams = 10032,
SupportConcept_ViewMyTeams = 10033,
SupportConcept_ImportData = 10034,
Employee_AllowEditExtendedProperties = 20000,
Employee_AllowEditContracts = 20001,
@@ -579,7 +580,9 @@ namespace BS.Shared
Signature_ProvideMonthlySignatureByProxy = 60002,
Customer_ViewAbsenceTimes = 22222,
Customer_ViewBetreuung = 22223
Customer_ViewBetreuung = 22223,
AiChatInZeiterfassung = 180000
}
public enum PersonType

View File

@@ -408,6 +408,9 @@ namespace BS.Shared.Core
{
UserRightType.SupportConcept_AllowGoalOrientedSupportConcepts, Translator.Translate("Hilfepläne zielorientiert planen")
},
{
UserRightType.SupportConcept_ImportData, Translator.Translate("Hilfepläne importieren")
},
{
UserRightType.TeamView_Create, Translator.Translate("Teams anlegen")
},
@@ -732,6 +735,9 @@ namespace BS.Shared.Core
},
{
UserRightType.Customer_ViewBetreuung, Translator.Translate($"{Translator.Translate("Klienten")} Betreuung ansehen")
},
{
UserRightType.AiChatInZeiterfassung, Translator.Translate("Zeiterfassung->Anfragen an die KI stellen")
}
};
#endregion

View File

@@ -87,6 +87,7 @@
public static string ShowKlientenBetreuungszeiten => "ShowKlientenBetreuungszeiten";
public static string ShowInfoButtonInCalender => "ShowInfoButtonInCalender";
public static string ShowHilfeplanStatistikReport => "ShowHilfeplanStatistikReport";
public static string ShowAI => "ShowAI";
public static string MoKSessionTimeout => "MoKSessionTimeout";
@@ -95,6 +96,8 @@
public static string AllowGkvAbrechnung => "AllowGkvAbrechnung";
public static string ShowImportAbschlagszahlungen => "ShowImportAbschlagszahlungen";
public static string ShowPersehImport => "ShowPersehImport";
}
}

View File

@@ -0,0 +1,14 @@
using System.Runtime.Serialization;
namespace BS.Shared.DataContracts
{
[DataContract]
public partial class AiChatDC : IDataContract
{
[DataMember]
public string Prompt { get; set; }
[DataMember]
public string Result { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace BS.Shared.DataContracts
{
[DataContract]
public partial class HilfeplanImportDC : IDataContract
{
[DataMember]
public long? SupportConceptOid { get; set; }
[DataMember]
public string Titel { get; set; }
[DataMember]
public IList<HilfeplanImportItemDC> Gruppen { get; set; }
[DataMember]
public IList<HilfeplanImportZielDC> Ziele { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace BS.Shared.DataContracts
{
[DataContract]
public partial class HilfeplanImportItemDC : IDataContract
{
[DataMember]
public string Label { get; set; }
[DataMember]
public string Content { get; set; }
[DataMember]
public string FieldName { get; set; }
[DataMember]
public IList<HilfeplanImportItemDC> Items { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System.Runtime.Serialization;
namespace BS.Shared.DataContracts
{
[DataContract]
public partial class HilfeplanImportZielDC : IDataContract
{
[DataMember]
public string Bereich { get; set; }
[DataMember]
public string ZielName { get; set; }
[DataMember]
public string ZielBeschreibung { get; set; }
}
}

View File

@@ -161,6 +161,7 @@
<Compile Include="Core\ObservableSortCollection.cs" />
<Compile Include="Core\WohnheimbuchungsIntervall.cs" />
<Compile Include="DataContracts\AbsenceOverviewFilterDC.cs" />
<Compile Include="DataContracts\AiChatDC.cs" />
<Compile Include="DataContracts\AbwesenheitsInformationDC.cs" />
<Compile Include="DataContracts\AbwesenheitsInformationPrintDC.cs" />
<Compile Include="DataContracts\AdditionalServiceBookingDC.cs" />
@@ -169,6 +170,9 @@
<Compile Include="DataContracts\AdditionalServiceGroupOfPeopleRelationDC.cs" />
<Compile Include="DataContracts\AdditionalServiceRegionDC.cs" />
<Compile Include="DataContracts\AddressRouteDC.cs" />
<Compile Include="DataContracts\HilfeplanImportDC.cs" />
<Compile Include="DataContracts\HilfeplanImportZielDC.cs" />
<Compile Include="DataContracts\HilfeplanImportItemDC.cs" />
<Compile Include="DataContracts\BargeldtransaktionshistoryDC.cs" />
<Compile Include="DataContracts\ClientPartials\BargeldtransaktionshistoryDC.cs" />
<Compile Include="DataContracts\ClientPartials\ContactDC.cs" />