Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
d:DesignWidth="500"
|
||||
Focusable="True"
|
||||
mc:Ignorable="d">
|
||||
<Grid Margin="0" Background="{DynamicResource ObjectEditBackgroundBrush}" >
|
||||
<Grid Margin="0" Background="{DynamicResource ObjectEditBackgroundBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
@@ -31,63 +31,72 @@
|
||||
Height="Auto"
|
||||
VerticalAlignment="Center"
|
||||
Orientation="Vertical">
|
||||
<Button x:Name="ButtonStart"
|
||||
Click="ButtonStartStop_Click"
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Center"
|
||||
Width="220"
|
||||
Height="50"
|
||||
Margin="0,10,0,0">
|
||||
<Button
|
||||
x:Name="ButtonStart"
|
||||
Grid.Row="1"
|
||||
Width="220"
|
||||
Height="50"
|
||||
Margin="0,10,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
Click="ButtonStartStop_Click">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="120"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="120" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image Source="/BeWoPlaner;component/Ressources/Icons/KI/Icon_KI_Chat_Weiss+Orange.png"
|
||||
Width="32"
|
||||
Height="32"
|
||||
Margin="0,0,10,0"/>
|
||||
<TextBlock Grid.Column="1" x:Name="ButtonText" VerticalAlignment="Center" Text="{t:Translate Aufnahme initiieren}"/>
|
||||
<Viewbox Grid.Column="2" x:Name="VBPlay" Width="40" Height="40" Visibility="Visible">
|
||||
<Image
|
||||
Width="32"
|
||||
Height="32"
|
||||
Margin="0,0,10,0"
|
||||
Source="/BeWoPlaner;component/Ressources/Icons/KI/Icon_KI_Chat_Weiss+Orange.png" />
|
||||
<TextBlock
|
||||
x:Name="ButtonText"
|
||||
Grid.Column="1"
|
||||
VerticalAlignment="Center"
|
||||
Text="{t:Translate Aufnahme initiieren}" />
|
||||
<Viewbox
|
||||
x:Name="VBPlay"
|
||||
Grid.Column="2"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Visibility="Visible">
|
||||
<Grid Width="100" Height="100">
|
||||
<Ellipse
|
||||
Width="80"
|
||||
Height="80"
|
||||
Stroke="White"
|
||||
StrokeThickness="6"
|
||||
Fill="Transparent"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
Width="80"
|
||||
Height="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Fill="Transparent"
|
||||
Stroke="White"
|
||||
StrokeThickness="6" />
|
||||
|
||||
<Path
|
||||
Fill="White"
|
||||
Data="M 40,30 L 40,70 L 70,50 Z"/>
|
||||
<Path Data="M 40,30 L 40,70 L 70,50 Z" Fill="White" />
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
<Viewbox Grid.Column="2" x:Name="VBStop" Width="40" Height="40" Visibility="Hidden">
|
||||
<Viewbox
|
||||
x:Name="VBStop"
|
||||
Grid.Column="2"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Visibility="Hidden">
|
||||
<Grid Width="100" Height="100">
|
||||
<Ellipse
|
||||
Width="80"
|
||||
Height="80"
|
||||
StrokeThickness="6"
|
||||
Fill="Transparent"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
Width="80"
|
||||
Height="80"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Fill="Transparent"
|
||||
StrokeThickness="6">
|
||||
<Ellipse.Stroke>
|
||||
<LinearGradientBrush
|
||||
x:Name="RingGradient"
|
||||
StartPoint="0,0"
|
||||
EndPoint="1,0">
|
||||
<LinearGradientBrush x:Name="RingGradient" StartPoint="0,0" EndPoint="1,0">
|
||||
|
||||
<LinearGradientBrush.RelativeTransform>
|
||||
<RotateTransform x:Name="GradientRotate"
|
||||
CenterX="0.5"
|
||||
CenterY="0.5"/>
|
||||
<RotateTransform x:Name="GradientRotate" CenterX="0.5" CenterY="0.5" />
|
||||
</LinearGradientBrush.RelativeTransform>
|
||||
|
||||
<GradientStop Color="Red" Offset="0"/>
|
||||
<GradientStop Color="#00FF0000" Offset="1"/>
|
||||
<GradientStop Offset="0" Color="Red" />
|
||||
<GradientStop Offset="1" Color="#00FF0000" />
|
||||
</LinearGradientBrush>
|
||||
</Ellipse.Stroke>
|
||||
|
||||
@@ -96,11 +105,11 @@
|
||||
<BeginStoryboard>
|
||||
<Storyboard RepeatBehavior="Forever">
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetName="GradientRotate"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
From="0"
|
||||
To="360"
|
||||
Duration="0:0:2"/>
|
||||
Storyboard.TargetName="GradientRotate"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
From="0"
|
||||
To="360"
|
||||
Duration="0:0:2" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
@@ -108,73 +117,92 @@
|
||||
</Ellipse>
|
||||
|
||||
<Rectangle
|
||||
Width="33"
|
||||
Height="33"
|
||||
Fill="Red"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
Width="33"
|
||||
Height="33"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Fill="Red" />
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
</Grid>
|
||||
</Button>
|
||||
<Label x:Name="lblStatus" Height="23" HorizontalAlignment="Center"></Label>
|
||||
<StackPanel x:Name="PanelAnimation" Visibility="Hidden" Orientation="Horizontal"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<Label
|
||||
x:Name="lblStatus"
|
||||
Height="23"
|
||||
HorizontalAlignment="Center" />
|
||||
<StackPanel
|
||||
x:Name="PanelAnimation"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Orientation="Horizontal"
|
||||
Visibility="Hidden">
|
||||
|
||||
<StackPanel.Resources>
|
||||
<Storyboard x:Key="DotAnimation"
|
||||
RepeatBehavior="Forever">
|
||||
<Storyboard x:Key="DotAnimation" RepeatBehavior="Forever">
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6"
|
||||
AutoReverse="True"/>
|
||||
AutoReverse="True"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6" />
|
||||
</Storyboard>
|
||||
</StackPanel.Resources>
|
||||
|
||||
<!-- Punkt 1 -->
|
||||
<Ellipse Width="8" Height="8" Fill="#007ACC" Margin="3">
|
||||
<!-- Punkt 1 -->
|
||||
<Ellipse
|
||||
Width="8"
|
||||
Height="8"
|
||||
Margin="3"
|
||||
Fill="#007ACC">
|
||||
<Ellipse.Triggers>
|
||||
<EventTrigger RoutedEvent="Loaded">
|
||||
<BeginStoryboard Storyboard="{StaticResource DotAnimation}"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource DotAnimation}" />
|
||||
</EventTrigger>
|
||||
</Ellipse.Triggers>
|
||||
</Ellipse>
|
||||
|
||||
<!-- Punkt 2 -->
|
||||
<Ellipse Width="8" Height="8" Fill="#007ACC" Margin="3" Opacity="0.3">
|
||||
<!-- Punkt 2 -->
|
||||
<Ellipse
|
||||
Width="8"
|
||||
Height="8"
|
||||
Margin="3"
|
||||
Fill="#007ACC"
|
||||
Opacity="0.3">
|
||||
<Ellipse.Triggers>
|
||||
<EventTrigger RoutedEvent="Loaded">
|
||||
<BeginStoryboard>
|
||||
<Storyboard RepeatBehavior="Forever">
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6"
|
||||
BeginTime="0:0:0.2"
|
||||
AutoReverse="True"/>
|
||||
AutoReverse="True"
|
||||
BeginTime="0:0:0.2"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
</Ellipse.Triggers>
|
||||
</Ellipse>
|
||||
|
||||
<!-- Punkt 3 -->
|
||||
<Ellipse Width="8" Height="8" Fill="#007ACC" Margin="3" Opacity="0.3">
|
||||
<!-- Punkt 3 -->
|
||||
<Ellipse
|
||||
Width="8"
|
||||
Height="8"
|
||||
Margin="3"
|
||||
Fill="#007ACC"
|
||||
Opacity="0.3">
|
||||
<Ellipse.Triggers>
|
||||
<EventTrigger RoutedEvent="Loaded">
|
||||
<BeginStoryboard>
|
||||
<Storyboard RepeatBehavior="Forever">
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6"
|
||||
BeginTime="0:0:0.4"
|
||||
AutoReverse="True"/>
|
||||
AutoReverse="True"
|
||||
BeginTime="0:0:0.4"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
From="0.3"
|
||||
To="1"
|
||||
Duration="0:0:0.6" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
@@ -183,9 +211,9 @@
|
||||
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
x:Name="PanelAiButtons"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal"
|
||||
x:Name="PanelAiButtons"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal"
|
||||
Visibility="Collapsed">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
@@ -196,27 +224,26 @@
|
||||
</StackPanel.Resources>
|
||||
|
||||
<Button
|
||||
x:Name="btn_AiPromptbaustein"
|
||||
Padding="0"
|
||||
Command="{Binding OpenAiPromptSelectionCommand}"
|
||||
Content="{StaticResource AiDesignsIconKIFunktionWeissGruen}"
|
||||
Style="{StaticResource PrimaryButton}" />
|
||||
x:Name="btn_AiPromptbaustein"
|
||||
Padding="0"
|
||||
Command="{Binding OpenAiPromptSelectionCommand}"
|
||||
Content="{StaticResource AiDesignsIconKIFunktionWeissGruen}"
|
||||
Style="{StaticResource PrimaryButton}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<TextBox
|
||||
Style="{x:Null}"
|
||||
x:Name="TextBoxErgebnis"
|
||||
Grid.Row="1"
|
||||
AcceptsReturn="True"
|
||||
AcceptsTab="True"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
x:Name="TextBoxErgebnis"
|
||||
Grid.Row="1"
|
||||
Margin="3"
|
||||
/>
|
||||
|
||||
|
||||
AcceptsReturn="True"
|
||||
AcceptsTab="True"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
Style="{x:Null}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
|
||||
|
||||
|
||||
|
||||
<StackPanel
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace BeWo
|
||||
{
|
||||
var baseVersion = new Version(BeWoApp.ShortVersion);
|
||||
var stage = BeWoClientReleaseStage.Release;
|
||||
var stageVersion = new Version("3.1");
|
||||
var stageVersion = new Version("4.0");
|
||||
var feature = BeWoClientFeature.None;
|
||||
|
||||
BeWoAppVersion = new BeWoAppVersion(baseVersion, stage, stageVersion, feature);
|
||||
|
||||
@@ -11,12 +11,11 @@ namespace BeWo.Core.Commands
|
||||
{
|
||||
public static class CommandFactory
|
||||
{
|
||||
public static DelegateCommand GetAiViewCommand(Action openView, UserRightType userRightType, Func<bool> additionalCheckup = null, bool? useCommandManager = null)
|
||||
public static DelegateCommand GetAiViewCommand(Action openView, UserRightType? userRightType, Func<bool> additionalCheckup = null, bool? useCommandManager = null)
|
||||
{
|
||||
bool canExecute() =>
|
||||
BeWoAppInfo.IsInAiMode &&
|
||||
(BeWoApp.AppSettings?.ModuleAiEnabled ?? BeWoApp.AppSettings?.ShowAI ?? false) &&
|
||||
BeWoApp.HasLoggedOnUserRight(userRightType) &&
|
||||
(userRightType is null || BeWoApp.HasLoggedOnUserRight(userRightType.Value)) &&
|
||||
(additionalCheckup is null || additionalCheckup());
|
||||
|
||||
return new DelegateCommand(openView, () => CheckupSafe(canExecute), useCommandManager);
|
||||
|
||||
@@ -2176,7 +2176,24 @@ namespace BeWo.Scheduler.View
|
||||
{
|
||||
GetCacheObjects((c, e, r) =>
|
||||
{
|
||||
ServiceFacade.DoResourceServiceAsync(s2 => s2.LoadFilteredAppointmentsMitAufgaben(BeWoApp.HasLoggedOnUserRight(new[] {UserRightType.KalenderMitarbeitertermineAnsehen}), BeWoApp.LoggedOnEmployee.EmployeeOid.Value, start, end, pSelectedEmployees, pSelectedCustomer, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, IsTasksVisible),
|
||||
ServiceFacade.DoResourceServiceAsync(s2 => s2.LoadFilteredAppointmentsMitAufgaben(
|
||||
BeWoApp.HasLoggedOnUserRight(new[]
|
||||
{
|
||||
UserRightType.KalenderMitarbeitertermineAnsehen
|
||||
}),
|
||||
BeWoApp.LoggedOnEmployee.EmployeeOid.Value,
|
||||
start,
|
||||
end,
|
||||
pSelectedEmployees,
|
||||
pSelectedCustomer,
|
||||
pSelectedResources,
|
||||
pEmployeesOnly,
|
||||
pCustomersOnly,
|
||||
pResourcesOnly,
|
||||
pPrivateAppointmentsOnly,
|
||||
pOnlyMyAppointments,
|
||||
IsTasksVisible
|
||||
),
|
||||
appointments =>
|
||||
{
|
||||
ServiceFacade.DoResourceServiceAsync(s3 => s3.GetAllActiveEmployeeAbsenceTimesInInterval(start, end, BeWoApp.LoggedOnEmployee.EmployeeOid.Value, SelectedEmployees.Select(employee => employee.EmployeeOid).ToList()),
|
||||
|
||||
@@ -1509,8 +1509,8 @@
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="2"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal"
|
||||
DataContext="">
|
||||
DataContext=""
|
||||
Orientation="Horizontal">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ai="clr-namespace:BeWo.View.Controls.AI"
|
||||
xmlns:ai1="clr-namespace:BeWo.AI.Controls"
|
||||
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:detail="clr-namespace:BeWo.View.Detail"
|
||||
@@ -25,8 +26,7 @@
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
xmlns:val="clr-namespace:BeWo.Validation"
|
||||
xmlns:ve="http://schemas.devexpress.com/winfx/2008/xaml/docking/visualelements"
|
||||
xmlns:zeit="clr-namespace:BeWo.View.Detail.Zeiterfassung"
|
||||
xmlns:ai1="clr-namespace:BeWo.AI.Controls"
|
||||
xmlns:zeit="clr-namespace:BeWo.View.Detail.Zeiterfassung"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
HorizontalAlignment="Stretch"
|
||||
@@ -1723,7 +1723,7 @@
|
||||
Content="{StaticResource AiDesignsIconKIFunktionWeissGruen}"
|
||||
Style="{StaticResource PrimaryButton}" />
|
||||
|
||||
<ai1:VoiceToTextButtonControl TargetTextBox="{Binding ElementName=dokumentationsTextBox}"/>
|
||||
<ai1:VoiceToTextButtonControl TargetTextBox="{Binding ElementName=dokumentationsTextBox}" />
|
||||
</StackPanel>
|
||||
|
||||
<Button
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
|
||||
using BeWo.Core;
|
||||
using BeWo.Core.Commands;
|
||||
using BeWo.Core.Service;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.View.Controls.AI;
|
||||
@@ -188,35 +189,38 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
|
||||
vm_doku.PromptAccepted += PromptAccepted;
|
||||
|
||||
OpenAiPromptSelectionCommand = new DelegateCommand(() =>
|
||||
{
|
||||
BeWoApp.MainControl.WindowService.Show(vm_doku);
|
||||
}, () => !string.IsNullOrWhiteSpace(AktuellerDokutext));
|
||||
OpenAiPromptSelectionCommand = CommandFactory.GetAiViewCommand(
|
||||
() => BeWoApp.MainControl.WindowService.Show(vm_doku),
|
||||
null,
|
||||
() => !string.IsNullOrWhiteSpace(AktuellerDokutext));
|
||||
|
||||
UndoAiActionCommand = new DelegateCommand(UndoAiAction);
|
||||
RedoAiActionCommand = new DelegateCommand(RedoAiAction);
|
||||
UndoAiActionCommand = new DelegateCommand(UndoAiAction, () => IsAiButtonVisible);
|
||||
RedoAiActionCommand = new DelegateCommand(RedoAiAction, () => IsAiButtonVisible);
|
||||
|
||||
var vm_edit_doku = new AiPromptbausteinSelectionComplexViewModel(AiActionType.ServiceRecordDocumentation);
|
||||
|
||||
vm_edit_doku.PromptAccepted += EditPromptAccepted;
|
||||
|
||||
OpenEditAiPromptSelectionCommand = new DelegateCommand(() =>
|
||||
OpenEditAiPromptSelectionCommand = CommandFactory.GetAiViewCommand(() =>
|
||||
{
|
||||
_EditAiActionHistory = new List<string>();
|
||||
_EditAiActionHistory.Add(AktuellerEditDokutext);
|
||||
_EditAiActionHistoryIndex = 0;
|
||||
BeWoApp.MainControl.WindowService.Show(vm_edit_doku);
|
||||
}, () => !string.IsNullOrWhiteSpace(AktuellerEditDokutext));
|
||||
},
|
||||
null,
|
||||
() => !string.IsNullOrWhiteSpace(AktuellerEditDokutext));
|
||||
|
||||
UndoEditAiActionCommand = new DelegateCommand(UndoEditAiAction);
|
||||
RedoEditAiActionCommand = new DelegateCommand(RedoEditAiAction);
|
||||
UndoEditAiActionCommand = new DelegateCommand(UndoEditAiAction, () => IsAiButtonVisible);
|
||||
RedoEditAiActionCommand = new DelegateCommand(RedoEditAiAction, () => IsAiButtonVisible);
|
||||
|
||||
_AiActionHistory = new List<string>();
|
||||
_AiActionHistory.Add(AktuellerDokutext);
|
||||
_AiActionHistoryIndex = 0;
|
||||
}
|
||||
|
||||
public AiConversationButtonState AiConversationButtonState {
|
||||
public AiConversationButtonState AiConversationButtonState
|
||||
{
|
||||
get => _AiConversationButtonState;
|
||||
set => SetProperty(ref _AiConversationButtonState, value, nameof(AiConversationButtonState));
|
||||
}
|
||||
@@ -243,7 +247,8 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsAiButtonVisible => SelectedCustomerNode is object && (BeWoApp.AppSettings.ShowAI || BeWoApp.AppSettings.ShowAIVoice);
|
||||
public bool IsAiModuleEnabled => (BeWoApp.AppSettings.ShowAI || BeWoApp.AppSettings.ShowAIVoice);
|
||||
public bool IsAiButtonVisible => SelectedCustomerNode is object && IsAiModuleEnabled;
|
||||
public bool IsUndoButtonVisible => _AiActionHistoryIndex > 0;
|
||||
public bool IsRedoButtonVisible => _AiActionHistoryIndex < _AiActionHistory.Count - 1;
|
||||
|
||||
@@ -466,30 +471,27 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
|
||||
public void UpdateViewYearFilter(IEnumerable<ServiceRecordVM> enumerable)
|
||||
{
|
||||
|
||||
if (BeWoApp.AppSettings.ShowAI)
|
||||
if (!IsAiModuleEnabled)
|
||||
{
|
||||
AiConversationButtonState = AiConversationButtonState.Loading;
|
||||
var context = GetVisibleInformationReferences(enumerable);
|
||||
if (context != null)
|
||||
{
|
||||
var context2 = context.ToDictionary(kv => kv.Key, kv => kv.Value.ToList());
|
||||
|
||||
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.CheckContextSize(AiContextType.ServiceRecord, context2, null),
|
||||
isValid =>
|
||||
{
|
||||
if (isValid)
|
||||
AiConversationButtonState = AiConversationButtonState.Normal;
|
||||
else
|
||||
AiConversationButtonState = AiConversationButtonState.Warning;
|
||||
},
|
||||
(exp) => AiConversationButtonState = AiConversationButtonState.Disabled);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
AiConversationButtonState = AiConversationButtonState.Hidden;
|
||||
return;
|
||||
}
|
||||
|
||||
AiConversationButtonState = AiConversationButtonState.Loading;
|
||||
var context = GetVisibleInformationReferences(enumerable);
|
||||
if (context != null)
|
||||
{
|
||||
var context2 = context.ToDictionary(kv => kv.Key, kv => kv.Value.ToList());
|
||||
|
||||
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.CheckContextSize(AiContextType.ServiceRecord, context2, null),
|
||||
isValid =>
|
||||
{
|
||||
if (isValid)
|
||||
AiConversationButtonState = AiConversationButtonState.Normal;
|
||||
else
|
||||
AiConversationButtonState = AiConversationButtonState.Warning;
|
||||
},
|
||||
(exp) => AiConversationButtonState = AiConversationButtonState.Disabled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -947,7 +949,7 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
_AiActionHistoryIndex++;
|
||||
AktuellerDokutext = _AiActionHistory[_AiActionHistoryIndex];
|
||||
}
|
||||
|
||||
|
||||
public void UndoEditAiAction()
|
||||
{
|
||||
if (_EditAiActionHistoryIndex <= 0)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -208,7 +208,9 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationCore">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="RestSharp, Version=106.13.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.13.0\lib\net452\RestSharp.dll</HintPath>
|
||||
@@ -318,6 +320,8 @@
|
||||
<Compile Include="Controllers\ReportViewerController.cs" />
|
||||
<Compile Include="Controllers\SchedulerController.cs" />
|
||||
<Compile Include="Models\AbstractModel.cs" />
|
||||
<Compile Include="Models\AppointmentModel.cs" />
|
||||
<Compile Include="Models\AppointmentSessionModel.cs" />
|
||||
<Compile Include="Models\DevExpressSchedulerSessionModel.cs" />
|
||||
<Compile Include="Models\EmployeeModel.cs" />
|
||||
<Compile Include="Models\EmployeeSessionModel.cs" />
|
||||
@@ -343,6 +347,7 @@
|
||||
<Compile Include="Models\ReportModel.cs" />
|
||||
<Compile Include="Models\ReportViewerModel.cs" />
|
||||
<Compile Include="Models\SchedulerModel.cs" />
|
||||
<Compile Include="Util\Constants\ViewDataConstants.cs" />
|
||||
<Compile Include="Util\DcToMokMapper.cs" />
|
||||
<Compile Include="Util\ISignable.cs" />
|
||||
<Compile Include="Util\MokSettings.cs" />
|
||||
@@ -389,6 +394,8 @@
|
||||
<Compile Include="Util\ReportUtils\QuittierungsbelegsReportSettings.cs" />
|
||||
<Compile Include="Util\ReportUtils\ReportTimeFrame.cs" />
|
||||
<Compile Include="Util\JsonPerson.cs" />
|
||||
<Compile Include="Util\SchedulerUtils\CustomAppointmentTemplateContainer.cs" />
|
||||
<Compile Include="Util\SchedulerUtils\EmployeeAvailabilityObject.cs" />
|
||||
<Compile Include="Util\ServiceRecord2Validation.cs" />
|
||||
<Compile Include="Util\SignatureUtils.cs" />
|
||||
<Compile Include="Util\SupportConceptStatisticsData.cs" />
|
||||
@@ -700,6 +707,12 @@
|
||||
<Content Include="Views\Employee\Employee.cshtml" />
|
||||
<Content Include="Views\Shared\AbsenceTimeFormPartial.cshtml" />
|
||||
<Content Include="Views\Shared\AbsenceTimePartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\CustomAppointmentFormPartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\CustomerMultiSelectPartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\ResourceMultiSelectPartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\EmployeeMultiSelectPartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\VerticalAppointmentTemplatePartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\HorizontalAppointmentTemplatePartial.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="packages.config" />
|
||||
|
||||
@@ -680,7 +680,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
#endregion
|
||||
|
||||
#region Bargeldkassen
|
||||
|
||||
[Authorize]
|
||||
private void ReloadBargeldkassen()
|
||||
{
|
||||
@@ -1240,7 +1239,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
#endregion
|
||||
|
||||
#region Abwesenheiten
|
||||
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection)
|
||||
|
||||
@@ -1,16 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.Mvc;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Views.DevExpressScheduler;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.Web.Mvc;
|
||||
using DevExpress.XtraScheduler;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWoPlanerMobil.Util.Constants;
|
||||
using BeWoPlanerMobil.Util.SchedulerUtils;
|
||||
|
||||
namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
/*
|
||||
* ToDo:
|
||||
* 1. Filterung einbauen (Mitarbeiter, Klienten, Ressourcen, Privat, Aufgaben, Abwesenheiten)
|
||||
* 2. "In die Zeiterfassung übertragen" und "Verfügbare Mitarbeiter prüfen" einbauen
|
||||
* 3. Rechte implementieren!
|
||||
* 4. Ressourcen-Farben einbauen -> Templates wie im DemoCenter benutzen
|
||||
* 5. Übersetzungen
|
||||
*/
|
||||
|
||||
public class DevExpressSchedulerController : AbstractBaseController
|
||||
{
|
||||
[Authorize]
|
||||
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
|
||||
{
|
||||
return SaveCollapsibleStatusToModel(Model, isOpen, identifier);
|
||||
}
|
||||
|
||||
private DevExpressSchedulerModel _Model;
|
||||
public DevExpressSchedulerModel Model
|
||||
{
|
||||
@@ -29,11 +53,96 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
_Model = new DevExpressSchedulerModel();
|
||||
InitModel(_Model);
|
||||
InitViewModel();
|
||||
|
||||
return _Model;
|
||||
}
|
||||
}
|
||||
|
||||
private AppointmentModel _AppointmentModel;
|
||||
|
||||
public AppointmentModel AppointmentModel
|
||||
{
|
||||
get
|
||||
{
|
||||
if(false == MobileSessionFacade.IsUserLoggedIn())
|
||||
{
|
||||
Logout();
|
||||
return null;
|
||||
}
|
||||
|
||||
if(_AppointmentModel != null)
|
||||
{
|
||||
return _AppointmentModel;
|
||||
}
|
||||
|
||||
_AppointmentModel = new AppointmentModel();
|
||||
InitModel(_AppointmentModel);
|
||||
InitAppointmentModel();
|
||||
|
||||
return _AppointmentModel;
|
||||
}
|
||||
}
|
||||
|
||||
private void InitAppointmentModel()
|
||||
{
|
||||
AppointmentModel.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees();
|
||||
AppointmentModel.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
|
||||
AppointmentModel.PossibleResources = KalenderService.GetAllResources();
|
||||
}
|
||||
|
||||
private void InitViewModel()
|
||||
{
|
||||
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInEmployee?.EmployeeOid is null)
|
||||
{
|
||||
Logout();
|
||||
return;
|
||||
}
|
||||
|
||||
Model.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees();
|
||||
Model.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
|
||||
Model.PossibleResources = KalenderService.GetAllResources();
|
||||
|
||||
ReloadAppointments();
|
||||
}
|
||||
|
||||
private void ReloadAppointments()
|
||||
{
|
||||
if(Model.LoggedInEmployee.EmployeeOid is null)
|
||||
{
|
||||
throw new Exception("Bei DevExpressSchedulerController.ReloadAppointments() ist die Oid des angemeldeten Benutzers ist wider Erwarten NULL!");
|
||||
}
|
||||
|
||||
// ToDo: ausgewählte Ansicht laden und speichern!
|
||||
//Model.ShowBetrag = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowBetrag);
|
||||
var user = LoggedInUser;
|
||||
var userSettings = user?.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
|
||||
|
||||
Model.CurrentViewType = (SchedulerViewType) UserSettingsUtils.GetSettingValueAsInteger(userSettings, SettingsKeys.SchedulerViewType);
|
||||
|
||||
var intervalStart = DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday);
|
||||
var intervalEnd = intervalStart.AddDays(7);
|
||||
|
||||
var appointments = KalenderService.LoadFilteredAppointmentsMitAufgaben
|
||||
(
|
||||
Model.HasRightKalenderMitarbeitertermineAnsehen,
|
||||
Model.LoggedInEmployee.EmployeeOid.Value,
|
||||
intervalStart,
|
||||
intervalEnd,
|
||||
new List<long>(),
|
||||
new List<long>(),
|
||||
new List<long>(),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
Model.Appointments = appointments;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult DevExpressScheduler()
|
||||
{
|
||||
@@ -41,29 +150,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
return RedirectToActionPermanent("Index", "Login");
|
||||
}
|
||||
|
||||
var appointments = KalenderService.LoadFilteredAppointments(
|
||||
true,
|
||||
Model.LoggedInEmployee?.EmployeeOid ?? 1,
|
||||
DateTime.Today.AddDays(-60),
|
||||
DateTime.Today.AddDays(60),
|
||||
new List<long>(),
|
||||
new List<long>(),
|
||||
new List<long>(),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false);
|
||||
|
||||
Model.Appointments = appointments;
|
||||
|
||||
Model.Resources = new List<object>();
|
||||
|
||||
return View(Model);
|
||||
}
|
||||
|
||||
|
||||
[Authorize]
|
||||
public ActionResult SchedulerPagePartial()
|
||||
{
|
||||
@@ -80,15 +172,191 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[Authorize]
|
||||
private void UpdateAppointment()
|
||||
{
|
||||
var appointmentsToInsert = SchedulerExtension.GetAppointmentsToInsert<SchedulerAppointmentDC>(SchedulerHelper.GetSchedulerSettings(), Model.Appointments);
|
||||
var appointmentsToUpdate = SchedulerExtension.GetAppointmentsToUpdate<SchedulerAppointmentDC>(SchedulerHelper.GetSchedulerSettings(), Model.Appointments);
|
||||
var appointmentsToRemove = SchedulerExtension.GetAppointmentsToRemove<SchedulerAppointmentDC>(SchedulerHelper.GetSchedulerSettings(), Model.Appointments);
|
||||
var appointmentsToInsert = SchedulerExtension.GetAppointmentsToInsert<SchedulerAppointmentDC>(
|
||||
"scheduler",
|
||||
Model.Appointments,
|
||||
SchedulerHelper.DefaultAppointmentStorage,
|
||||
SchedulerHelper.DefaultResourceStorage);
|
||||
|
||||
var appointmentsToUpdate = SchedulerExtension.GetAppointmentsToUpdate<SchedulerAppointmentDC>(
|
||||
"scheduler",
|
||||
Model.Appointments,
|
||||
SchedulerHelper.DefaultAppointmentStorage,
|
||||
SchedulerHelper.DefaultResourceStorage
|
||||
);
|
||||
|
||||
var appointmentsToRemove = SchedulerExtension.GetAppointmentsToRemove<SchedulerAppointmentDC>(
|
||||
"scheduler",
|
||||
Model.Appointments,
|
||||
SchedulerHelper.DefaultAppointmentStorage,
|
||||
SchedulerHelper.DefaultResourceStorage
|
||||
);
|
||||
|
||||
foreach(var appointment in appointmentsToInsert)
|
||||
{
|
||||
appointment.CustomerList = AppointmentModel.SelectedCustomers;
|
||||
appointment.ResourceList = AppointmentModel.SelectedResources;
|
||||
|
||||
appointment.EmployeeList = new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
foreach(var selectedEmployee in AppointmentModel.SelectedEmployees ?? new List<CompactEmployeeDC>())
|
||||
{
|
||||
appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee });
|
||||
}
|
||||
|
||||
appointment.Originator = Model.LoggedInUser.Employee;
|
||||
|
||||
KalenderService.InsertSchedulerAppointment(appointment);
|
||||
ViewData["EditableAppointmentModel"] = appointment;
|
||||
}
|
||||
|
||||
foreach(var appointment in appointmentsToUpdate)
|
||||
{
|
||||
if(AppointmentModel.SelectedCustomers != null)
|
||||
{
|
||||
appointment.CustomerList = AppointmentModel.SelectedCustomers;
|
||||
}
|
||||
|
||||
if(AppointmentModel.SelectedResources != null)
|
||||
{
|
||||
appointment.ResourceList = AppointmentModel.SelectedResources;
|
||||
}
|
||||
|
||||
if(AppointmentModel.SelectedEmployees != null)
|
||||
{
|
||||
appointment.EmployeeList = new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
foreach(var selectedEmployee in AppointmentModel.SelectedEmployees)
|
||||
{
|
||||
appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee });
|
||||
}
|
||||
}
|
||||
|
||||
appointment.ActivationType = ActivationTypeId.Active;
|
||||
|
||||
KalenderService.UpdateSchedulerAppointments(new List<SchedulerAppointmentDC> { appointment });
|
||||
}
|
||||
|
||||
KalenderService.DeleteSchedulerAppointments(
|
||||
appointmentsToRemove
|
||||
.Where(appointment => appointment.SchedulerAppointmentOid.HasValue && appointment.NewSchedulerAppointmentVersion.HasValue)
|
||||
.ToDictionary(k => k.SchedulerAppointmentOid.Value, v => v.NewSchedulerAppointmentVersion.Value));
|
||||
|
||||
ReloadAppointments();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult CustomerMultiSelectPartial(string value)
|
||||
{
|
||||
var selectedCustomerOids = GridLookupExtension.GetSelectedValues<long?>("CustomerGridLookup") ?? Array.Empty<long?>();
|
||||
|
||||
AppointmentModel.SelectedCustomerOids = selectedCustomerOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
|
||||
|
||||
return PartialView("CustomerMultiSelectPartial", AppointmentModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult ResourceGridLookupPartial(string value)
|
||||
{
|
||||
var selectedResourceOids = GridLookupExtension.GetSelectedValues<long?>("ResourceGridLookup") ?? Array.Empty<long?>();
|
||||
|
||||
AppointmentModel.SelectedResourceOids = selectedResourceOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
|
||||
|
||||
return PartialView("ResourceMultiSelectPartial", AppointmentModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult EmployeeGridLookupPartial(string value)
|
||||
{
|
||||
/*
|
||||
* Im AppointmentModel müssen die PossibleEmployees bleiben, denn daraus wählt man die Mitarbeiter, die noch nicht mit dem Termin
|
||||
* verknüpft sind und es müssen - zumindest beim Bearbeiten - die bereits mit dem Termin verbundenen Mitarbeiter-zu-Termin-Relationen
|
||||
* zwischengespeichert werden.
|
||||
*
|
||||
*/
|
||||
var selectedEmployeeOids = GridLookupExtension.GetSelectedValues<long?>("EmployeeGridLookup") ?? Array.Empty<long?>();
|
||||
|
||||
AppointmentModel.SelectedEmployeeOids = selectedEmployeeOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
|
||||
|
||||
return PartialView("EmployeeMultiSelectPartial", AppointmentModel);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
|
||||
public string SelectActiveViewType(string viewTypeName)
|
||||
{
|
||||
return SaveCollapsibleStatusToModel(Model, isOpen, identifier);
|
||||
if(Enum.TryParse<SchedulerViewType>(viewTypeName, out var viewType))
|
||||
{
|
||||
Model.CurrentViewType = viewType;
|
||||
|
||||
UpdateUserSettingsWithoutReload(SettingsKeys.SchedulerViewType, ((int) viewType).ToString());
|
||||
}
|
||||
|
||||
return LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult CustomCallbackAction(string apptID, string actionId, string[] args)
|
||||
{
|
||||
if(actionId == "ToServiceRecord")
|
||||
{
|
||||
// Serientermin
|
||||
if(apptID.Contains("_"))
|
||||
{
|
||||
var splitApptId = apptID.Split('_');
|
||||
|
||||
var selectedAppointmentOid = long.Parse(splitApptId[0]);
|
||||
var recurrenceIndex = int.Parse(splitApptId[1]);
|
||||
|
||||
// Hier dann Ausnahme bilden mit ServiceRecord?
|
||||
var appointment = GetAppointmentFromModelByOid(selectedAppointmentOid);
|
||||
|
||||
var test = appointment is null;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(long.TryParse(apptID, out var selectedAppointmentOid))
|
||||
{
|
||||
var appointment = GetAppointmentFromModelByOid(selectedAppointmentOid);
|
||||
|
||||
var test = appointment is null;
|
||||
}
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Main", "Main");
|
||||
}
|
||||
|
||||
if(actionId == "ShowAvailableEmployees")
|
||||
{
|
||||
var startString = args[0];
|
||||
var endString = args[1];
|
||||
|
||||
var start = DateTime.Parse(startString);
|
||||
var end = DateTime.Parse(endString);
|
||||
|
||||
var availabilities = ReportService.GetMitarbeiterverfuegbarkeiten(AppointmentModel.PossibleEmployees, start, end);
|
||||
var employee2Overtime = new EmployeeAvailabilityObject(start, end, availabilities);
|
||||
|
||||
Model.EmployeeAvailabilityObject = employee2Overtime;
|
||||
|
||||
//ViewData[ViewDataConstants.SchedulerEmployeeAvailabilityConstant] = employee2Overtime;
|
||||
|
||||
return PartialView("SchedulerPagePartial", Model);
|
||||
}
|
||||
|
||||
return PartialView("SchedulerPagePartial", Model);
|
||||
}
|
||||
|
||||
private SchedulerAppointmentDC GetAppointmentFromModelByOid(long oid)
|
||||
{
|
||||
foreach(SchedulerAppointmentDC appointment in Model.Appointments)
|
||||
{
|
||||
if(appointment.SchedulerAppointmentOid == oid)
|
||||
{
|
||||
return appointment;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1513,11 +1513,13 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
TempData[TempDataConstants.AfterInsertKey] = true;
|
||||
|
||||
if(Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
|
||||
if (Model.IsAllowedToCreateSignature(Model.NewServiceRecord))
|
||||
{
|
||||
TempData[TempDataConstants.ShowSignatureSuggestionPopup] = true;
|
||||
if (Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
|
||||
{
|
||||
TempData[TempDataConstants.ShowSignatureSuggestionPopup] = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(appointmentPrototype is object)
|
||||
{
|
||||
var isRecurring = !(appointmentPrototype.RecurrenceInfo is null);
|
||||
@@ -3369,7 +3371,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[Authorize]
|
||||
public ActionResult RedirectToPersons()
|
||||
{
|
||||
return RedirectToActionPermanent("Person", "Person", new { id = Model.LoggedInEmployee?.EmployeeOid });
|
||||
return RedirectToActionPermanent("Person", "Person");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
@@ -4230,7 +4232,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
return LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -144,7 +144,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
#region Dokumente
|
||||
|
||||
[Authorize]
|
||||
public ActionResult SaveDescriptionChange(string descriptionText, long? fileOid)
|
||||
{
|
||||
|
||||
@@ -57,6 +57,16 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
private void InitViewModel()
|
||||
{
|
||||
Model.MokSettings = new MokSettings
|
||||
{
|
||||
SupportConceptExpirationLimitInMonths = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.HilfeplanAuslaufAuswahl, 3),
|
||||
AnzTageZeiterfassErfolgt = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.AnzTageZeiterfassErfolgt),
|
||||
AnzTageUnterschriftErfolgt = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.AnzTageUnterschriftErfolgt),
|
||||
MaxDaysEditServiceRecordsAllowed = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.MaxDaysEditServiceRecordsAllowed),
|
||||
TimeUntilUILock = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.TimeUntilUILock),
|
||||
ServiceRecordAllowChangeHours = UserSettingsUtils.GetSettingValueAsInteger(Model.Mandator.Settings, SettingsKeys.ServiceRecordAllowChangeHours)
|
||||
};
|
||||
|
||||
var month = DateTime.Today.Month;
|
||||
var year = DateTime.Today.Year;
|
||||
var first = new DateTime(year, month, 1).AddMonths(-1);
|
||||
@@ -1286,10 +1296,20 @@ namespace BeWoPlanerMobil.Controllers
|
||||
reportObjects.DoForEach(reportObject =>
|
||||
{
|
||||
var quittierungsbelegItems = new List<QuittierungsbelegItem>();
|
||||
|
||||
bool fristAbgelaufen = false;
|
||||
|
||||
reportObject.Services.DoForEach(serviceDetail =>
|
||||
{
|
||||
quittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail));
|
||||
if (this.Model.MokSettings != null && this.Model.MokSettings.AnzTageUnterschriftErfolgt > 0)
|
||||
{
|
||||
if (DateTime.Now.Date.Subtract(serviceDetail.StartDate).TotalDays > this.Model.MokSettings.AnzTageUnterschriftErfolgt)
|
||||
{
|
||||
fristAbgelaufen = true;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if(quittierungsbelegItems.Count == 0)
|
||||
@@ -1340,7 +1360,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
employeeSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Employee];
|
||||
}
|
||||
|
||||
foreach(var quittierungsbelegItem in quittierungsbelegItems)
|
||||
foreach (var quittierungsbelegItem in quittierungsbelegItems)
|
||||
{
|
||||
var serviceRecordOid = quittierungsbelegItem.ServiceRecordOid;
|
||||
|
||||
@@ -1377,7 +1397,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
customerSignatureOids,
|
||||
employeeSignatureState2,
|
||||
employeeSignatureOids,
|
||||
employeeOids.Count
|
||||
employeeOids.Count,
|
||||
fristAbgelaufen
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
using DevExpress.Web.Mvc;
|
||||
using log4net.Config;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
using DevExpress.Web.Mvc;
|
||||
using log4net.Config;
|
||||
|
||||
|
||||
namespace BeWoPlanerMobil
|
||||
@@ -16,9 +18,14 @@ namespace BeWoPlanerMobil
|
||||
|
||||
public class MvcApplication : HttpApplication
|
||||
{
|
||||
protected void Application_Start()
|
||||
private readonly CultureInfo _CultureInfo = new CultureInfo("de-DE");
|
||||
|
||||
protected void Application_Start()
|
||||
{
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
Thread.CurrentThread.CurrentCulture = _CultureInfo;
|
||||
Thread.CurrentThread.CurrentUICulture = _CultureInfo;
|
||||
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
|
||||
WebApiConfig.Register(GlobalConfiguration.Configuration);
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
@@ -38,7 +45,11 @@ namespace BeWoPlanerMobil
|
||||
|
||||
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
|
||||
{
|
||||
DevExpressHelper.Theme = "Metropolis";
|
||||
DevExpressHelper.Theme = "MaterialCompact";
|
||||
DevExpress.Web.ASPxWebControl.GlobalThemeBaseColor = "#FF5A00";
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = _CultureInfo;
|
||||
Thread.CurrentThread.CurrentUICulture = _CultureInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -289,5 +289,7 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public bool HasRightToViewPersonDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumentePersonen });
|
||||
public bool HasRightToViewPersonUmfeld => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Person_FamilyView });
|
||||
|
||||
public bool HasRightKalenderMitarbeitertermineAnsehen => CheckRight(UserRightType.KalenderMitarbeitertermineAnsehen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
201
BeWoPlanerMobil/Models/AppointmentModel.cs
Normal file
201
BeWoPlanerMobil/Models/AppointmentModel.cs
Normal file
@@ -0,0 +1,201 @@
|
||||
using BS.Shared.DataContracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
[Serializable]
|
||||
public class AppointmentModel : AbstractModel
|
||||
{
|
||||
public AppointmentSessionModel AppointmentSessionModel => SessionModel as AppointmentSessionModel;
|
||||
|
||||
public long? Oid { get; set; }
|
||||
public int? EventType { get; set; }
|
||||
public int? Label { get; set; }
|
||||
public bool AllDay { get; set; }
|
||||
public string Location { get; set; }
|
||||
public int? Status { get; set; }
|
||||
public string RecurrenceInfo { get; set; }
|
||||
public string Subject { get; set; }
|
||||
public DateTime? StartTime { get; set; }
|
||||
public DateTime? EndTime { get; set; }
|
||||
public string Description { get; set; }
|
||||
public bool IsPrivate { get; set; }
|
||||
public bool CanBeEdited { get; set; }
|
||||
public bool IsTask { get; set; }
|
||||
public DateTime? DueDate { get; set; }
|
||||
public DateTime? CompletedDate { get; set; }
|
||||
public string CompletedNotice { get; set; }
|
||||
public string CompletedUser { get; set; }
|
||||
public string TaskDescription { get; set; }
|
||||
|
||||
public List<CompactCustomerDC> SelectedCustomers
|
||||
{
|
||||
get
|
||||
{
|
||||
return SelectedCustomerOids is null ?
|
||||
null :
|
||||
PossibleCustomers.Where(customer => SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
SelectedCustomerOids = value?.Select(customer => customer.CustomerOid).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public List<ResourceDC> SelectedResources
|
||||
{
|
||||
get
|
||||
{
|
||||
return SelectedResourceOids is null ?
|
||||
null :
|
||||
PossibleResources.Where(resource => resource.ResourceOid.HasValue && SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
SelectedResourceOids = value?.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasServiceRecordEntry { get; set; }
|
||||
public List<ServiceRecordDC> ServiceRecordList { get; set; }
|
||||
|
||||
public List<CompactCustomerDC> PossibleCustomers { get; set; }
|
||||
public List<ResourceDC> PossibleResources { get; set; }
|
||||
|
||||
|
||||
public List<long> SelectedCustomerOids
|
||||
{
|
||||
get => AppointmentSessionModel.SelectedCustomerOids;
|
||||
set => AppointmentSessionModel.SelectedCustomerOids = value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<long> SelectedResourceOids
|
||||
{
|
||||
get => AppointmentSessionModel.SelectedResourceOids;
|
||||
set => AppointmentSessionModel.SelectedResourceOids = value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Mitarbeiter */
|
||||
public List<CompactEmployeeDC> PossibleEmployees { get; set; }
|
||||
|
||||
public List<Employee2SchedulerAppointmentDC> SelectedEmployee2SchedulerAppointments { get; set; }
|
||||
|
||||
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
|
||||
|
||||
public List<long> SelectedEmployeeOids
|
||||
{
|
||||
get => AppointmentSessionModel.SelectedEmployeeOids;
|
||||
set => AppointmentSessionModel.SelectedEmployeeOids = value;
|
||||
}
|
||||
|
||||
public List<long> SelectedEmployees2Appointments
|
||||
{
|
||||
get => AppointmentSessionModel.SelectedEmployees2Appointments;
|
||||
set => AppointmentSessionModel.SelectedEmployees2Appointments = value;
|
||||
}
|
||||
/* /Mitarbeiter */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public AppointmentModel()
|
||||
{
|
||||
SessionModel = new AppointmentSessionModel();
|
||||
}
|
||||
|
||||
public AppointmentModel(List<CompactCustomerDC> possibleCustomers, List<ResourceDC> possibleResources, List<CompactEmployeeDC> possibleEmployees)
|
||||
{
|
||||
PossibleCustomers = possibleCustomers;
|
||||
PossibleResources = possibleResources;
|
||||
PossibleEmployees = possibleEmployees;
|
||||
|
||||
SessionModel = new AppointmentSessionModel();
|
||||
}
|
||||
|
||||
public AppointmentModel(SchedulerAppointmentDC appointment)
|
||||
{
|
||||
if(appointment is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SessionModel = new AppointmentSessionModel();
|
||||
|
||||
Oid = appointment.SchedulerAppointmentOid;
|
||||
EventType = appointment.Type;
|
||||
AllDay = appointment.AllDay;
|
||||
Location = appointment.Location;
|
||||
Status = appointment.Status;
|
||||
RecurrenceInfo = appointment.RecurrenceInfo;
|
||||
Subject = appointment.Subject;
|
||||
StartTime = appointment.StartDate;
|
||||
EndTime = appointment.EndDate;
|
||||
Description = appointment.Description;
|
||||
|
||||
SelectedCustomers = appointment.CustomerList;
|
||||
SelectedEmployees = appointment.EmployeeList?.Select(employee2Appointment => employee2Appointment.Employee)?.ToList();
|
||||
SelectedEmployee2SchedulerAppointments = appointment.EmployeeList;
|
||||
SelectedResources = appointment.ResourceList;
|
||||
HasServiceRecordEntry = appointment.HasServiceRecordEntry;
|
||||
ServiceRecordList = appointment.ServiceRecordList;
|
||||
CanBeEdited = appointment.CanBeEdited;
|
||||
IsPrivate = appointment.IsPrivate;
|
||||
|
||||
IsTask = appointment.IsTask;
|
||||
DueDate = appointment.DueDate;
|
||||
CompletedDate = appointment.CompletedDate;
|
||||
CompletedNotice = appointment.CompletedNotice;
|
||||
CompletedUser = appointment.CompletedUser;
|
||||
TaskDescription = appointment.TaskDescription;
|
||||
}
|
||||
|
||||
public virtual void Assign(AppointmentModel source)
|
||||
{
|
||||
if(source is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Oid = source.Oid;
|
||||
EventType = source.EventType;
|
||||
Label = source.Label;
|
||||
AllDay = source.AllDay;
|
||||
Location = source.Location;
|
||||
Status = source.Status;
|
||||
RecurrenceInfo = source.RecurrenceInfo;
|
||||
Subject = source.Subject;
|
||||
StartTime = source.StartTime;
|
||||
EndTime = source.EndTime;
|
||||
Description = source.Description;
|
||||
|
||||
SelectedCustomers = source.SelectedCustomers;
|
||||
SelectedEmployees = source.SelectedEmployees;
|
||||
SelectedEmployee2SchedulerAppointments = source.SelectedEmployee2SchedulerAppointments;
|
||||
SelectedResources = source.SelectedResources;
|
||||
HasServiceRecordEntry = source.HasServiceRecordEntry;
|
||||
ServiceRecordList = source.ServiceRecordList;
|
||||
CanBeEdited = source.CanBeEdited;
|
||||
IsPrivate = source.IsPrivate;
|
||||
|
||||
IsTask = source.IsTask;
|
||||
DueDate = source.DueDate;
|
||||
CompletedDate = source.CompletedDate;
|
||||
CompletedNotice = source.CompletedNotice;
|
||||
CompletedUser = source.CompletedUser;
|
||||
TaskDescription = source.TaskDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
23
BeWoPlanerMobil/Models/AppointmentSessionModel.cs
Normal file
23
BeWoPlanerMobil/Models/AppointmentSessionModel.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class AppointmentSessionModel : BaseSessionModel
|
||||
{
|
||||
public List<long> SelectedCustomerOids { get; set; }
|
||||
public List<long> SelectedEmployeeOids { get; set; }
|
||||
public List<long> SelectedResourceOids { get; set; }
|
||||
|
||||
public List<long> SelectedEmployees2Appointments { get; set; }
|
||||
|
||||
public override void ResetValues()
|
||||
{
|
||||
base.ResetValues();
|
||||
|
||||
SelectedCustomerOids = null;
|
||||
SelectedEmployeeOids = null;
|
||||
SelectedResourceOids = null;
|
||||
SelectedEmployees2Appointments = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,57 @@
|
||||
using System.Collections;
|
||||
using DevExpress.Web.ASPxScheduler;
|
||||
using System.Collections.Generic;
|
||||
using BeWoPlanerMobil.Util.SchedulerUtils;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.XtraScheduler;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class DevExpressSchedulerModel : AbstractModel
|
||||
{
|
||||
public DevExpressSchedulerModel()
|
||||
{
|
||||
SessionModel = new DevExpressSchedulerSessionModel();
|
||||
SessionModel.ResetValues();
|
||||
}
|
||||
|
||||
public SchedulerViewType CurrentViewType
|
||||
{
|
||||
get => DevExpressSchedulerSessionModel.CurrentSchedulerViewType;
|
||||
set => DevExpressSchedulerSessionModel.CurrentSchedulerViewType = value;
|
||||
}
|
||||
|
||||
public DevExpressSchedulerSessionModel DevExpressSchedulerSessionModel => SessionModel as DevExpressSchedulerSessionModel;
|
||||
|
||||
public List<CompactCustomerDC> PossibleCustomers { get; set; }
|
||||
public List<ResourceDC> PossibleResources { get; set; }
|
||||
public List<CompactEmployeeDC> PossibleEmployees { get; set; }
|
||||
|
||||
public List<CompactCustomerDC> SelectedCustomers { get; set; }
|
||||
public List<ResourceDC> SelectedResources { get; set; }
|
||||
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
|
||||
|
||||
public List<long> SelectedCustomerOids
|
||||
{
|
||||
get => DevExpressSchedulerSessionModel.SelectedCustomerOids;
|
||||
set => DevExpressSchedulerSessionModel.SelectedCustomerOids = value;
|
||||
}
|
||||
|
||||
public List<long> SelectedEmployeeOids
|
||||
{
|
||||
get => DevExpressSchedulerSessionModel.SelectedEmployeeOids;
|
||||
set => DevExpressSchedulerSessionModel.SelectedEmployeeOids = value;
|
||||
}
|
||||
|
||||
public List<long> SelectedResourceOids
|
||||
{
|
||||
get => DevExpressSchedulerSessionModel.SelectedResourceOids;
|
||||
set => DevExpressSchedulerSessionModel.SelectedResourceOids = value;
|
||||
}
|
||||
|
||||
public EmployeeAvailabilityObject EmployeeAvailabilityObject { get; set; }
|
||||
|
||||
public IEnumerable Appointments { get; set; }
|
||||
public IEnumerable Resources { get; set; }
|
||||
public string Type { get; set; }
|
||||
}
|
||||
|
||||
public class CustomAppointmentTemplateContainer : AppointmentFormTemplateContainer
|
||||
{
|
||||
public CustomAppointmentTemplateContainer(ASPxScheduler scheduler) : base(scheduler) { }
|
||||
|
||||
public string CustomInfo => Appointment.CustomFields["AppointmentCustomField"] != null ? Appointment.CustomFields["AppointmentCustomField"].ToString() : "";
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Collections.Generic;
|
||||
using DevExpress.XtraScheduler;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class DevExpressSchedulerSessionModel
|
||||
public class DevExpressSchedulerSessionModel : BaseSessionModel
|
||||
{
|
||||
public List<long> SelectedCustomerOids { get; set; }
|
||||
public List<long> SelectedEmployeeOids { get; set; }
|
||||
public List<long> SelectedResourceOids { get; set; }
|
||||
public SchedulerViewType CurrentSchedulerViewType { get; set; }
|
||||
|
||||
public override void ResetValues()
|
||||
{
|
||||
base.ResetValues();
|
||||
|
||||
SelectedCustomerOids = null;
|
||||
SelectedEmployeeOids = null;
|
||||
SelectedResourceOids = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,6 +238,21 @@ namespace BeWoPlanerMobil.Models
|
||||
return allowed;
|
||||
}
|
||||
|
||||
public bool IsAllowedToCreateSignature(ServiceRecordDC serviceRecord)
|
||||
{
|
||||
|
||||
if (MokSettings != null && MokSettings.AnzTageUnterschriftErfolgt > 0)
|
||||
{
|
||||
if (DateTime.Now.Date.Subtract(serviceRecord.Start.Value.Date).TotalDays > MokSettings.AnzTageUnterschriftErfolgt)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public long? SelectedServiceRecordOid
|
||||
{
|
||||
get => MainSessionModel.SelectedServiceRecordOid;
|
||||
|
||||
@@ -528,4 +528,28 @@ function array2Csv(array) {
|
||||
}
|
||||
|
||||
return result.replace(/,\s*$/, "");
|
||||
}
|
||||
|
||||
function getTimeStamp(dateObject, showSeconds, showMilliseconds) {
|
||||
if(showSeconds === false) {
|
||||
showMilliseconds = false;
|
||||
}
|
||||
|
||||
const dd = String(dateObject.getDate()).padStart(2, "0");
|
||||
const MM = String(dateObject.getMonth() + 1).padStart(2, "0");
|
||||
const yyyy = dateObject.getFullYear();
|
||||
const HH = String(dateObject.getHours()).padStart(2, "0");
|
||||
const mm = String(dateObject.getMinutes()).padStart(2, "0");
|
||||
const ss = String(dateObject.getSeconds()).padStart(2, "0");
|
||||
const ms = String(dateObject.getMilliseconds()).padStart(2, "0");
|
||||
|
||||
if(showSeconds === true) {
|
||||
if(showMilliseconds === true) {
|
||||
return `${dd}.${MM}.${yyyy} ${HH}:${mm}:${ss}.${ms}`;
|
||||
} else {
|
||||
return `${dd}.${MM}.${yyyy} ${HH}:${mm}:${ss}`;
|
||||
}
|
||||
} else {
|
||||
return `${dd}.${MM}.${yyyy} ${HH}:${mm}`;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using System.Web;
|
||||
using BeWo.Service.ServiceContracts;
|
||||
using BeWo.Service.ServiceImplementations;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using ReportingService.ServiceContracts;
|
||||
using ReportingService.ServiceImplementations;
|
||||
|
||||
|
||||
7
BeWoPlanerMobil/Util/Constants/ViewDataConstants.cs
Normal file
7
BeWoPlanerMobil/Util/Constants/ViewDataConstants.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace BeWoPlanerMobil.Util.Constants
|
||||
{
|
||||
public class ViewDataConstants
|
||||
{
|
||||
public static string SchedulerEmployeeAvailabilityConstant => "SchedulerEmployeeAvailability";
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -531,5 +532,98 @@ namespace BeWoPlanerMobil.Util
|
||||
|
||||
return $"{(serviceRecord.Start.Value.AddMinutes(duration))}";
|
||||
}
|
||||
|
||||
public static string GetColorAsHex(System.Windows.Media.Color color)
|
||||
{
|
||||
return $"{color.R:X2}{color.G:X2}{color.B:X2}";
|
||||
}
|
||||
|
||||
public static string ColorArgbToRgbHex(string color)
|
||||
{
|
||||
if(color.StartsWith("#") && color.Length == 9)
|
||||
{
|
||||
return $"#{color.Substring(3)}";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string GetAppointmentRightGradient(bool hasCustomers, List<string> colors, int colorCountLimit = 4)
|
||||
{
|
||||
if(colors is null)
|
||||
{
|
||||
colors = new List<string>();
|
||||
}
|
||||
|
||||
if(colors.Count == 0 && false == hasCustomers)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
if(hasCustomers && colors.Count == 0)
|
||||
{
|
||||
return "linear-gradient(#3B7799 100.0%)";
|
||||
}
|
||||
|
||||
if(colors.Count > colorCountLimit)
|
||||
{
|
||||
colors = colors.GetRange(0, colorCountLimit);
|
||||
}
|
||||
|
||||
var colorCount = colors.Count;
|
||||
var startingPoint = hasCustomers ? 50 : 0;
|
||||
var divisor = hasCustomers ? 50 : 100;
|
||||
|
||||
if(colorCount == 1)
|
||||
{
|
||||
var color = colors.First();
|
||||
|
||||
return hasCustomers ? $"linear-gradient(#3B7799 50.0%, {color} 50.0%)" : $"linear-gradient({color})";
|
||||
}
|
||||
|
||||
var result = hasCustomers ? "#3B7799 50.0%, " : string.Empty;
|
||||
|
||||
for(var i = 0; i < colorCount; i++)
|
||||
{
|
||||
var currentColor = colors[i];
|
||||
|
||||
var colorWidth = (double)divisor / colorCount;
|
||||
var colorStartingPoint = startingPoint + i * colorWidth;
|
||||
|
||||
var colorStart = FormattableString.Invariant($"{colorStartingPoint:F1}");
|
||||
var colorEnd = FormattableString.Invariant($"{colorStartingPoint + colorWidth:F1}");
|
||||
|
||||
result += $"{currentColor} {colorStart}%, {currentColor} {colorEnd}%, ";
|
||||
}
|
||||
|
||||
return $"linear-gradient({result.TrimEnd().TrimEnd(',')})";
|
||||
}
|
||||
|
||||
public static string GetAppointmentRightBackground(DevExpress.XtraScheduler.Appointment appointment)
|
||||
{
|
||||
var hasCustomers = appointment.CustomFields["Customers"] is List<CompactCustomerDC> customerList && customerList.Any();
|
||||
|
||||
var customFieldValue = appointment.CustomFields["Resources"];
|
||||
|
||||
var resourceList = customFieldValue as List<ResourceDC> ?? new List<ResourceDC>();
|
||||
|
||||
var resourcesWithColors = resourceList.Where(resource => false == IsNullOrWhiteSpace(resource.Color)).ToList();
|
||||
|
||||
var resourceColors = (resourcesWithColors.Count > 4 ? resourcesWithColors.GetRange(0, 4) : resourcesWithColors).Select(resource => ColorArgbToRgbHex(resource.Color)).ToList();
|
||||
|
||||
return GetAppointmentRightGradient(hasCustomers, resourceColors);
|
||||
}
|
||||
|
||||
public static string GetLeftAppointmentBorder(DevExpress.XtraScheduler.Appointment appointment)
|
||||
{
|
||||
if(appointment.CustomFields[nameof(SchedulerAppointmentDC.Originator)] is CompactEmployeeDC originator && originator.FilterableBrush?.Color != null)
|
||||
{
|
||||
var color = originator.FilterableBrush.Color;
|
||||
|
||||
return $"5px solid #{GetColorAsHex(color)}";
|
||||
}
|
||||
|
||||
return "5px solid #C0FFD0";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,9 @@ namespace BeWoPlanerMobil.Util
|
||||
|
||||
public int EmployeeCount { get; }
|
||||
|
||||
public QuittierungsbelegResult(string customerName, List<QuittierungsbelegItem> items, long customerOid, bool hasCustomerSignature, long? customerSignatureOid, SignatureState customerSignatureStatus, List<long> customerSignatureOids, SignatureState employeeSignatureState, List<long> employeeSignatureOids, int employeeCount)
|
||||
public bool FristAbgelaufen { get; }
|
||||
|
||||
public QuittierungsbelegResult(string customerName, List<QuittierungsbelegItem> items, long customerOid, bool hasCustomerSignature, long? customerSignatureOid, SignatureState customerSignatureStatus, List<long> customerSignatureOids, SignatureState employeeSignatureState, List<long> employeeSignatureOids, int employeeCount, bool fristAbgelaufen)
|
||||
{
|
||||
CustomerName = customerName;
|
||||
Items = items;
|
||||
@@ -43,6 +45,8 @@ namespace BeWoPlanerMobil.Util
|
||||
EmployeeSignatureState = employeeSignatureState;
|
||||
EmployeeSignatureOids = employeeSignatureOids;
|
||||
EmployeeCount = employeeCount;
|
||||
FristAbgelaufen = fristAbgelaufen;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using DevExpress.Web.ASPxScheduler;
|
||||
|
||||
namespace BeWoPlanerMobil.Util.SchedulerUtils
|
||||
{
|
||||
public class CustomAppointmentTemplateContainer : AppointmentFormTemplateContainer
|
||||
{
|
||||
public CustomAppointmentTemplateContainer(ASPxScheduler scheduler) : base(scheduler) { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWoPlanerMobil.Util.SchedulerUtils
|
||||
{
|
||||
public class EmployeeAvailabilityObject
|
||||
{
|
||||
public DateTime IntervalStart { get; set; }
|
||||
public DateTime IntervalEnd { get; set; }
|
||||
public Dictionary<CompactEmployeeDC, decimal> Employee2Overtime { get; set; }
|
||||
|
||||
public string Interval
|
||||
{
|
||||
get
|
||||
{
|
||||
var von = IntervalStart.IsTimeZero() ? $"{IntervalStart:dd.MM.yy}" : $"{IntervalStart:dd.MM.yy HH:mm}";
|
||||
var bis = IntervalEnd.IsTimeZero() ? $"{IntervalStart:dd.MM.yy}" : $"{IntervalStart:dd.MM.yy HH:mm}";
|
||||
|
||||
return $"Verfügbarkeit vom {von} bis {bis}";
|
||||
}
|
||||
}
|
||||
|
||||
public EmployeeAvailabilityObject(DateTime intervalStart, DateTime intervalEnd, Dictionary<CompactEmployeeDC, decimal> employee2Overtime)
|
||||
{
|
||||
IntervalStart = intervalStart;
|
||||
IntervalEnd = intervalEnd;
|
||||
Employee2Overtime = employee2Overtime.OrderBy(kvp => kvp.Key.DetailDescription).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,255 @@
|
||||
@model BeWoPlanerMobil.Models.AppointmentModel
|
||||
|
||||
@using BS.Shared.DataContracts
|
||||
@using DevExpress.Web.Mvc.UI
|
||||
|
||||
@{
|
||||
Html.EnableClientValidation();
|
||||
Html.EnableUnobtrusiveJavaScript();
|
||||
}
|
||||
|
||||
<style type="text/css">
|
||||
.centeredLabel {
|
||||
margin: 0 auto;
|
||||
padding-left: .25em;
|
||||
}
|
||||
</style>
|
||||
|
||||
@using(Html.BeginForm())
|
||||
{
|
||||
<table id="abc-table">
|
||||
@* Start *@
|
||||
<tr>
|
||||
<td style="white-space: nowrap;">
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.StartDate);
|
||||
settings.Text = "Start:";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td colspan="3" style="padding: .25em;">
|
||||
@Html.DevExpress().DateEdit(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.StartDate);
|
||||
settings.Properties.EditFormat = EditFormat.DateTime;
|
||||
settings.ShowModelErrors = true;
|
||||
settings.Properties.ValidationSettings.Display = Display.Dynamic;
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.StartTime).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Ende *@
|
||||
<tr>
|
||||
<td style="white-space: nowrap;">
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.EndDate);
|
||||
settings.Text = "Ende:";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td colspan="3" style="padding: .25em;">
|
||||
@Html.DevExpress().DateEdit(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.EndDate);
|
||||
settings.Properties.EditFormat = EditFormat.DateTime;
|
||||
settings.ShowModelErrors = true;
|
||||
settings.Properties.ValidationSettings.Display = Display.Dynamic;
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.EndTime).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Private & Ganztägig *@
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td style="width: 1%; wihte-space: nowrap;">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.IsPrivate);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.IsPrivate).GetHtml()
|
||||
</td>
|
||||
<td style="margin-right: 1em;">
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.IsPrivate);
|
||||
settings.Text = "Privat";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.ControlStyle.CssClass = "centeredLabel";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td style="width: 1%; wihte-space: nowrap;">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.AllDay);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.AllDay).GetHtml()
|
||||
</td>
|
||||
<td style="margin-right: 1em;">
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.AllDay);
|
||||
settings.Text = "Ganztägig";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.ControlStyle.CssClass = "centeredLabel";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Mitarbeiter, Klienten, Ressourcen *@
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table>
|
||||
<tr>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@Html.Partial("EmployeeMultiSelectPartial")
|
||||
</td>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@Html.Partial("CustomerMultiSelectPartial")
|
||||
</td>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@Html.Partial("ResourceMultiSelectPartial")
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Betreff *@
|
||||
<tr>
|
||||
<td>
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Subject);
|
||||
settings.Text = "Betreff:";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td colspan="3" style="width: 100%; padding: .25em;">
|
||||
@Html.DevExpress().TextBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.Subject);
|
||||
settings.ShowModelErrors = true;
|
||||
settings.Properties.ValidationSettings.Display = Display.Dynamic;
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.Subject).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Ort *@
|
||||
<tr>
|
||||
<td>
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Location);
|
||||
settings.Text = "Ort:";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td colspan="3" style="width: 100%; padding: .25em;">
|
||||
@Html.DevExpress().TextBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.Location);
|
||||
settings.ShowModelErrors = true;
|
||||
settings.Properties.ValidationSettings.Display = Display.Dynamic;
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.Location).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Notiz *@
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
@Html.DevExpress().Label(
|
||||
settings =>
|
||||
{
|
||||
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Description);
|
||||
settings.Text = "Notiz:";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
@Html.DevExpress().Memo(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.Description);
|
||||
settings.Properties.Rows = 4;
|
||||
settings.ShowModelErrors = true;
|
||||
settings.Properties.ValidationSettings.Display = Display.Dynamic;
|
||||
settings.Width = Unit.Percentage(100);
|
||||
}).Bind(Model.Description).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@Html.DevExpress().AppointmentRecurrenceForm(ViewBag.AppointmentRecurrenceFormSettings).GetHtml()
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="padding: .25em;">
|
||||
@Html.DevExpress().Button(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "Apply";
|
||||
settings.Text = "OK";
|
||||
settings.ClientSideEvents.Click = "OnAppointmentFormSave";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td style="padding: .25em;">
|
||||
@Html.DevExpress().Button(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "Cancel";
|
||||
settings.Text = "Abbrechen";
|
||||
settings.ClientSideEvents.Click = "function(s, e){ scheduler.AppointmentFormCancel(); }";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
<td style="padding: .25em;">
|
||||
@Html.DevExpress().Button(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "Delete";
|
||||
settings.Text = "Löschen";
|
||||
settings.Enabled = ViewBag.DeleteButtonEnabled;
|
||||
settings.ClientSideEvents.Click = "function(s, e){ scheduler.AppointmentFormDelete(); }";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table class="w-100">
|
||||
<tr>
|
||||
<td style="width: 100%;">
|
||||
@Html.DevExpress().SchedulerStatusInfo(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "schedulerStatusInfo";
|
||||
settings.Priority = 1;
|
||||
settings.SchedulerName = "scheduler";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
@model BeWoPlanerMobil.Models.AppointmentModel
|
||||
|
||||
@using BS.Shared.DataContracts.Compact
|
||||
@using DevExpress.Web.Mvc.UI
|
||||
|
||||
@Html.DevExpress().GridLookup(settings =>
|
||||
{
|
||||
settings.Name = "CustomerGridLookup";
|
||||
settings.GridViewProperties.CallbackRouteValues = new { controller = "DevExpressScheduler", Action = "CustomerMultiSelectPartial" };
|
||||
settings.KeyFieldName = nameof(CompactCustomerDC.CustomerOid);
|
||||
|
||||
settings.CommandColumn.ShowSelectCheckbox = true;
|
||||
settings.CommandColumn.Visible = true;
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(CompactCustomerDC.CustomerOid);
|
||||
c.Visible = false;
|
||||
});
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(CompactCustomerDC.DetailDescription);
|
||||
c.Caption = nameof(CompactCustomerDC.DetailDescription);
|
||||
});
|
||||
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple;
|
||||
settings.Properties.TextFormatString = "{1}";
|
||||
settings.Properties.MultiTextSeparator = "; ";
|
||||
settings.Properties.Width = 250;
|
||||
settings.Properties.NullText = "Klienten";
|
||||
|
||||
settings.GridViewProperties.Settings.ShowFilterRow = true;
|
||||
settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible;
|
||||
settings.GridViewProperties.SettingsPager.EnableAdaptivity = true;
|
||||
settings.GridViewProperties.SettingsPager.PageSize = 7;
|
||||
settings.GridViewProperties.SetStatusBarTemplateContent(c =>
|
||||
{
|
||||
ViewContext.Writer.Write("<div style=\"padding: 2px 8px 2px 0; float: right\">");
|
||||
Html.DevExpress().Button(btnSettings =>
|
||||
{
|
||||
btnSettings.Name = "btnClose";
|
||||
btnSettings.UseSubmitBehavior = false;
|
||||
btnSettings.Text = "Schließen";
|
||||
btnSettings.ClientSideEvents.Click = "CloseCustomerGridLookup";
|
||||
}).Render();
|
||||
ViewContext.Writer.Write("</div>");
|
||||
});
|
||||
}).BindList(Model.PossibleCustomers).Bind(Model.SelectedCustomerOids).GetHtml()
|
||||
@@ -1,7 +1,127 @@
|
||||
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
|
||||
@using BeWoPlanerMobil.Util.Constants
|
||||
@using BeWoPlanerMobil.Util.SchedulerUtils
|
||||
@using BS.Shared.DataContracts.Compact
|
||||
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
|
||||
|
||||
@{
|
||||
ViewBag.Title = "DevExpressScheduler";
|
||||
}
|
||||
|
||||
@Html.Partial("SchedulerPagePartial", Model)
|
||||
<script type="text/javascript">
|
||||
function UpdateSchedulerHeight() {
|
||||
scheduler.SetHeight(1);
|
||||
|
||||
var containerHeight = ASPxClientUtils.GetDocumentClientHeight();
|
||||
|
||||
if(document.body.scrollHeight > containerHeight) {
|
||||
containerHeight = document.body.scrollHeight;
|
||||
}
|
||||
|
||||
scheduler.SetHeight(containerHeight);
|
||||
}
|
||||
|
||||
function resizeSchedulerEditForm() {
|
||||
const editFormPopup = $("#abc-table").parent().parent().parent();
|
||||
|
||||
const vw = $(window).width();
|
||||
|
||||
if(editFormPopup.outerWidth() !== undefined && vw < 678) {
|
||||
const newWidth = vw * .95;
|
||||
|
||||
const allChildren = editFormPopup.parent().find("*");
|
||||
|
||||
allChildren.each((index, element) => {
|
||||
const item = $(element);
|
||||
|
||||
if(item[0].tagName === "SCRIPT") {
|
||||
return;
|
||||
}
|
||||
|
||||
if(item.width() > newWidth) {
|
||||
item.outerWidth(newWidth);
|
||||
item.css("max-width", newWidth);
|
||||
}
|
||||
});
|
||||
|
||||
$("#abc-table").siblings().css("max-width", newWidth);
|
||||
|
||||
editFormPopup.outerWidth(newWidth);
|
||||
editFormPopup.css("max-width", newWidth);
|
||||
editFormPopup.css("left", "0");
|
||||
editFormPopup.css("top", "0");
|
||||
editFormPopup.css("position", "relative");
|
||||
editFormPopup.css("margin", "0 auto");
|
||||
}
|
||||
}
|
||||
|
||||
function OnAppointmentFormSave(s, e) {
|
||||
if(IsValidAppointment()) {
|
||||
scheduler.AppointmentFormSave();
|
||||
}
|
||||
}
|
||||
|
||||
function IsValidAppointment() {
|
||||
$.validator.unobtrusive.parse("form");
|
||||
|
||||
return $("form").valid();
|
||||
}
|
||||
|
||||
function CloseCustomerGridLookup() {
|
||||
CustomerGridLookup.ConfirmCurrentSelection();
|
||||
CustomerGridLookup.HideDropDown();
|
||||
}
|
||||
|
||||
function CloseEmployeeGridLookup() {
|
||||
EmployeeGridLookup.ConfirmCurrentSelection();
|
||||
EmployeeGridLookup.HideDropDown();
|
||||
}
|
||||
|
||||
function CloseResourceGridLookup() {
|
||||
ResourceGridLookup.ConfirmCurrentSelection();
|
||||
ResourceGridLookup.HideDropDown();
|
||||
}
|
||||
|
||||
ASPxClientControl.GetControlCollection().ControlsInitialized.AddHandler(function(s, e) {
|
||||
UpdateSchedulerHeight();
|
||||
});
|
||||
|
||||
ASPxClientControl.GetControlCollection().BrowserWindowResized.AddHandler(function(s, e) {
|
||||
UpdateSchedulerHeight();
|
||||
});
|
||||
|
||||
function onActiveViewChanged(s, e) {
|
||||
$.get("@Url.Action("SelectActiveViewType")", { viewTypeName: e.newView });
|
||||
}
|
||||
|
||||
function onMenuItemClicked(s, e) {
|
||||
try {
|
||||
if(e.itemName === "ToServiceRecord") {
|
||||
e.handled = true;
|
||||
scheduler.PerformCallback({ apptID: scheduler.GetSelectedAppointmentIds()[0], actionId: e.itemName });
|
||||
}
|
||||
|
||||
if(e.itemName === "ShowAvailableEmployees") {
|
||||
const start = scheduler.selection.interval.start;
|
||||
const duration = scheduler.selection.interval.duration;
|
||||
const tmpDate = new Date();
|
||||
|
||||
const end = new Date(tmpDate.setTime(start.getTime() + duration));
|
||||
|
||||
e.handled = true;
|
||||
scheduler.PerformCallback(
|
||||
{
|
||||
apptID: scheduler.GetSelectedAppointmentIds()[0],
|
||||
actionId: e.itemName,
|
||||
args: [getTimeStamp(start, false, false), getTimeStamp(end, false, false)]
|
||||
});
|
||||
}
|
||||
} catch(error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@using(Html.BeginForm())
|
||||
{
|
||||
@Html.Partial("SchedulerPagePartial", Model)
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
@model BeWoPlanerMobil.Models.AppointmentModel
|
||||
@using BS.Shared.DataContracts.Compact
|
||||
@using DevExpress.Web.Mvc.UI
|
||||
|
||||
@Html.DevExpress().GridLookup(settings =>
|
||||
{
|
||||
// ToDo: Es müssen CompcatEmployee-Objekte sein!
|
||||
settings.Name = "EmployeeGridLookup";
|
||||
settings.GridViewProperties.CallbackRouteValues = new { controller = "DevExpressScheduler", Action = "EmployeeGridLookupPartial" };
|
||||
settings.KeyFieldName = nameof(CompactEmployeeDC.EmployeeOid);
|
||||
|
||||
settings.CommandColumn.ShowSelectCheckbox = true;
|
||||
settings.CommandColumn.Visible = true;
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(CompactEmployeeDC.EmployeeOid);
|
||||
c.Visible = false;
|
||||
});
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(CompactEmployeeDC.DetailDescription);
|
||||
c.Caption = nameof(CompactEmployeeDC.DetailDescription);
|
||||
});
|
||||
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple;
|
||||
settings.Properties.TextFormatString = "{1}";
|
||||
settings.Properties.MultiTextSeparator = "; ";
|
||||
settings.Properties.Width = 250;
|
||||
settings.Properties.NullText = "Mitarbeiter";
|
||||
|
||||
settings.GridViewProperties.Settings.ShowFilterRow = true;
|
||||
settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible;
|
||||
settings.GridViewProperties.SettingsPager.EnableAdaptivity = true;
|
||||
settings.GridViewProperties.SettingsPager.PageSize = 7;
|
||||
settings.GridViewProperties.SetStatusBarTemplateContent(c =>
|
||||
{
|
||||
ViewContext.Writer.Write("<div style=\"padding: 2px 8px 2px 0; float: right\">");
|
||||
Html.DevExpress().Button(btnSettings =>
|
||||
{
|
||||
btnSettings.Name = "btnClose3";
|
||||
btnSettings.UseSubmitBehavior = false;
|
||||
btnSettings.Text = "Schließen";
|
||||
btnSettings.ClientSideEvents.Click = "CloseEmployeeGridLookup";
|
||||
}).Render();
|
||||
ViewContext.Writer.Write("</div>");
|
||||
});
|
||||
}).BindList(Model.PossibleEmployees).Bind(Model.SelectedEmployeeOids).GetHtml()
|
||||
@@ -0,0 +1,52 @@
|
||||
@using BeWoPlanerMobil.Util
|
||||
@model DevExpress.XtraScheduler.Appointment
|
||||
|
||||
@functions
|
||||
{
|
||||
string GetSubjectAndLocation()
|
||||
{
|
||||
var locationPart = false == string.IsNullOrWhiteSpace(Model.Location) ? $" ({Model.Location})" : string.Empty;
|
||||
|
||||
return $" {Model.Subject}{locationPart}";
|
||||
}
|
||||
|
||||
string GetHeaderTime()
|
||||
{
|
||||
return Model.AllDay ? string.Empty : $"{Model.Start.ToShortTimeString()} - {Model.End.ToShortTimeString()}";
|
||||
}
|
||||
}
|
||||
|
||||
<style type="text/css">
|
||||
.horizontal-appointment-template-div {
|
||||
cursor: default;
|
||||
background-color: #C0FFD0;
|
||||
font-family: "Signika Negative";
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.horizontal-appointment-info {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font: 10pt 'Signika Negative';
|
||||
color: #37414D;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.horizontal-appointment-label .recurring-label-span {
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.horizonta.horizontal-appointment-label {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="horizontal-appointment-template-div" style="border-left: @MobileUtils.GetLeftAppointmentBorder(Model);background: @MobileUtils.GetAppointmentRightBackground(Model) right / 5px 100% no-repeat, #C0FFD0;">
|
||||
<div class="horizontal-appointment-info">
|
||||
<label class="horizontal-appointment-label">
|
||||
@GetHeaderTime() <span style="font-weight: bold;">@GetSubjectAndLocation()</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,48 @@
|
||||
@model BeWoPlanerMobil.Models.AppointmentModel
|
||||
@using BS.Shared.DataContracts
|
||||
@using DevExpress.Web.Mvc.UI
|
||||
|
||||
@Html.DevExpress().GridLookup(settings =>
|
||||
{
|
||||
settings.Name = "ResourceGridLookup";
|
||||
settings.GridViewProperties.CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "ResourceGridLookupPartial" };
|
||||
settings.KeyFieldName = nameof(ResourceDC.ResourceOid);
|
||||
|
||||
settings.CommandColumn.ShowSelectCheckbox = true;
|
||||
settings.CommandColumn.Visible = true;
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(ResourceDC.ResourceOid);
|
||||
c.Visible = false;
|
||||
});
|
||||
|
||||
settings.Columns.Add(c =>
|
||||
{
|
||||
c.FieldName = nameof(ResourceDC.Name);
|
||||
c.Caption = nameof(ResourceDC.Name);
|
||||
});
|
||||
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple;
|
||||
settings.Properties.TextFormatString = "{1}";
|
||||
settings.Properties.MultiTextSeparator = "; ";
|
||||
settings.Properties.NullText = "Ressourcen";
|
||||
|
||||
settings.GridViewProperties.Settings.ShowFilterRow = true;
|
||||
settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible;
|
||||
settings.GridViewProperties.SettingsPager.EnableAdaptivity = true;
|
||||
settings.GridViewProperties.SettingsPager.PageSize = 7;
|
||||
settings.GridViewProperties.SetStatusBarTemplateContent(c =>
|
||||
{
|
||||
ViewContext.Writer.Write("<div style=\"padding: 2px 8px 2px 0; float: right\">");
|
||||
Html.DevExpress().Button(btnSettings =>
|
||||
{
|
||||
btnSettings.Name = "btnClose2";
|
||||
btnSettings.UseSubmitBehavior = false;
|
||||
btnSettings.Text = "Schließen";
|
||||
btnSettings.ClientSideEvents.Click = "CloseResourceGridLookup";
|
||||
}).Render();
|
||||
ViewContext.Writer.Write("</div>");
|
||||
});
|
||||
}).BindList(Model.PossibleResources).Bind(Model.SelectedResourceOids).GetHtml()
|
||||
@@ -1,83 +1,62 @@
|
||||
using System;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.UI.WebControls;
|
||||
using DevExpress.Web.ASPxScheduler;
|
||||
using DevExpress.Web.Mvc;
|
||||
using DevExpress.XtraScheduler;
|
||||
using DayView = DevExpress.Web.ASPxScheduler.DayView;
|
||||
|
||||
// TODO:
|
||||
|
||||
/*
|
||||
*
|
||||
* ToDo am 08.12.2025: Folgende Klassen erstellen:
|
||||
*
|
||||
* 1: SchedulerDataHelper mit Datenbankzugriffen
|
||||
* GetAppointments()
|
||||
* GetResources()
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* 1. SchedulerDataObject
|
||||
*
|
||||
*/
|
||||
using BS.Shared.DataContracts;
|
||||
|
||||
namespace BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
{
|
||||
public static class SchedulerHelper
|
||||
{
|
||||
private static MVCxAppointmentStorage _DefaultAppointmentStorage;
|
||||
|
||||
public static MVCxAppointmentStorage DefaultAppointmentStorage => _DefaultAppointmentStorage ?? (_DefaultAppointmentStorage = CreateDefaultAppointmentStorage());
|
||||
|
||||
private static MVCxResourceStorage _DefaultResourceStorage;
|
||||
public static MVCxResourceStorage DefaultResourceStorage => _DefaultResourceStorage ?? (_DefaultResourceStorage = CreateDefaultResourceStorage());
|
||||
|
||||
private static MVCxAppointmentStorage CreateDefaultAppointmentStorage()
|
||||
{
|
||||
var appointmentStorage = new MVCxAppointmentStorage();
|
||||
|
||||
SetupMappings(appointmentStorage);
|
||||
appointmentStorage.Mappings.AppointmentId = nameof(SchedulerAppointmentDC.SchedulerAppointmentOid);
|
||||
appointmentStorage.Mappings.Type = nameof(SchedulerAppointmentDC.Type);
|
||||
appointmentStorage.Mappings.Label = nameof(SchedulerAppointmentDC.LabelKey);
|
||||
appointmentStorage.Mappings.AllDay = nameof(SchedulerAppointmentDC.AllDay);
|
||||
appointmentStorage.Mappings.Location = nameof(SchedulerAppointmentDC.Location);
|
||||
appointmentStorage.Mappings.Status = nameof(SchedulerAppointmentDC.Status);
|
||||
appointmentStorage.Mappings.RecurrenceInfo = nameof(SchedulerAppointmentDC.RecurrenceInfo);
|
||||
appointmentStorage.Mappings.Subject = nameof(SchedulerAppointmentDC.Subject);
|
||||
appointmentStorage.Mappings.Start = nameof(SchedulerAppointmentDC.StartDate);
|
||||
appointmentStorage.Mappings.End = nameof(SchedulerAppointmentDC.EndDate);
|
||||
appointmentStorage.Mappings.Description = nameof(SchedulerAppointmentDC.Description);
|
||||
appointmentStorage.Mappings.ReminderInfo = nameof(SchedulerAppointmentDC.ReminderInfo);
|
||||
appointmentStorage.Mappings.ResourceId = "ResourceID";
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add("CustomFieldStorage", "CustomFieldStorage");
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Originator", nameof(SchedulerAppointmentDC.Originator)));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Customers", nameof(SchedulerAppointmentDC.CustomerList)));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Employees", nameof(SchedulerAppointmentDC.EmployeeList)));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Resources", nameof(SchedulerAppointmentDC.ResourceList)));
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsPrivate", "IsPrivate"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CanBeEdited", "CanBeEdited"));
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("HasServiceRecordEntry", "HasServiceRecordEntry"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("ServiceRecordList", "ServiceRecordList"));
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsAbsenceTime", "IsAbsenceTime"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsCustomerAbsenceTime", "IsCustomerAbsenceTime"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeStart", "AbsenceTimeStart"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeEnd", "AbsenceTimeEnd"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeOid", "AbsenceTimeOid"));
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsTask", "IsTask"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("DueDate", "DueDate"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedDate", "CompletedDate"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedNotice", "CompletedNotice"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedUser", "CompletedUser"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("TaskDescription", "TaskDescription"));
|
||||
|
||||
return appointmentStorage;
|
||||
}
|
||||
|
||||
public static void SetupMappings(MVCxAppointmentStorage storage)
|
||||
{
|
||||
storage.Mappings.AppointmentId = "Oid";
|
||||
storage.Mappings.Start = "StartDate";
|
||||
storage.Mappings.End = "EndDate";
|
||||
storage.Mappings.Subject = "Subject";
|
||||
storage.Mappings.Description = "Description";
|
||||
storage.Mappings.Label = "LabelId";
|
||||
storage.Mappings.AllDay = "AllDay";
|
||||
storage.Mappings.ResourceId = "ResourceId";
|
||||
storage.Mappings.RecurrenceInfo = "RecurrenceInfo";
|
||||
storage.Mappings.ReminderInfo = "ReminderInfo";
|
||||
storage.Mappings.Location = "Location";
|
||||
storage.Mappings.Type = "EventType";
|
||||
storage.Mappings.Status = "Status";
|
||||
}
|
||||
|
||||
public static void ApplyCommonViewSettings(DayView view)
|
||||
{
|
||||
view.ResourcesPerPage = 1;
|
||||
ApplyWorkTime(view);
|
||||
}
|
||||
|
||||
private static void ApplyWorkTime(DayView view)
|
||||
{
|
||||
view.WorkTime.Start = TimeSpan.FromHours(7);
|
||||
view.WorkTime.End = TimeSpan.FromHours(20);
|
||||
view.ShowWorkTimeOnly = true;
|
||||
}
|
||||
|
||||
private static MVCxResourceStorage _DefaultResourceStorage;
|
||||
|
||||
public static MVCxResourceStorage DefaultResourceStorage => _DefaultResourceStorage ?? (_DefaultResourceStorage = CreateDefaultResourceStorage());
|
||||
|
||||
private static MVCxResourceStorage CreateDefaultResourceStorage()
|
||||
{
|
||||
var resourceStorage = new MVCxResourceStorage();
|
||||
@@ -87,54 +66,5 @@ namespace BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
|
||||
return resourceStorage;
|
||||
}
|
||||
|
||||
public static SchedulerSettings GetSchedulerSettings()
|
||||
{
|
||||
return GetSchedulerSettings(null);
|
||||
}
|
||||
|
||||
public static SchedulerSettings GetSchedulerSettings(this HtmlHelper customHtml)
|
||||
{
|
||||
var settings = new SchedulerSettings
|
||||
{
|
||||
Name = "scheduler",
|
||||
CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "SchedulerPagePartial" },
|
||||
EditAppointmentRouteValues = new { Controller = "DevExpressScheduler", Action = "EditAppointment" },
|
||||
};
|
||||
|
||||
ApplyCommonViewSettings(settings.Views.DayView);
|
||||
ApplyCommonViewSettings(settings.Views.WorkWeekView);
|
||||
ApplyCommonViewSettings(settings.Views.FullWeekView);
|
||||
|
||||
settings.Views.FullWeekView.Enabled = true;
|
||||
settings.Views.WeekView.Enabled = false;
|
||||
settings.Views.MonthView.ResourcesPerPage = 1;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.StartTimeVisibility = AppointmentTimeVisibility.Never;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.EndTimeVisibility = AppointmentTimeVisibility.Never;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.StatusDisplayType = AppointmentStatusDisplayType.Bounds;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.ShowRecurrence = true;
|
||||
settings.Views.MonthView.MonthViewStyles.DateCellBody.Height = Unit.Pixel(170);
|
||||
|
||||
TimeScale[] timeScales =
|
||||
{
|
||||
new TimeScaleYear { Enabled = false },
|
||||
new TimeScaleQuarter { Enabled = false },
|
||||
new TimeScaleMonth(),
|
||||
new TimeScaleFixedInterval { Enabled = false },
|
||||
new TimeScaleDay(),
|
||||
new TimeScaleHour { Enabled = false }
|
||||
};
|
||||
|
||||
settings.Views.TimelineView.Scales.AddRange(timeScales);
|
||||
settings.Views.TimelineView.ResourcesPerPage = 2;
|
||||
|
||||
settings.Storage.EnableReminders = false;
|
||||
settings.Storage.Resources.Assign(DefaultResourceStorage);
|
||||
settings.Storage.Appointments.Assign(DefaultAppointmentStorage);
|
||||
|
||||
settings.Views.DayView.Styles.ScrollAreaHeight = new Unit(500);
|
||||
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,62 +1,246 @@
|
||||
@using BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Util.Constants
|
||||
@using BeWoPlanerMobil.Util.SchedulerUtils
|
||||
@using BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
@using BS.Shared.DataContracts
|
||||
@using DevExpress.Data.Helpers
|
||||
@using BS.Shared.DataContracts.Compact
|
||||
@using DevExpress.XtraScheduler
|
||||
@using MenuItem = DevExpress.Web.MenuItem
|
||||
@using PopupMenuShowingEventArgs = DevExpress.Web.ASPxScheduler.PopupMenuShowingEventArgs
|
||||
@model BeWoPlanerMobil.Models.DevExpressSchedulerModel
|
||||
|
||||
@functions
|
||||
{
|
||||
//ToDo: So das EditForm verändern!
|
||||
//https://docs.devexpress.com/AspNetMvc/119776/components/scheduler/get-started/how-to-customize-the-appointment-dialog-using-view-model-api-working-with-custom-fields?utm_source=SupportCenter&utm_medium=website&utm_campaign=docs-feedback&utm_content=T743814
|
||||
|
||||
static AppointmentRecurrenceFormSettings CreateAppointmentRecurrenceFormSettings(CustomAppointmentTemplateContainer container)
|
||||
{
|
||||
return new AppointmentRecurrenceFormSettings
|
||||
{
|
||||
Name = "appointmentRecurrenceForm",
|
||||
Width = Unit.Percentage(100),
|
||||
IsRecurring = container.Appointment.IsRecurring,
|
||||
DayNumber = container.RecurrenceDayNumber,
|
||||
End = container.RecurrenceEnd,
|
||||
Month = container.RecurrenceMonth,
|
||||
OccurrenceCount = container.RecurrenceOccurrenceCount,
|
||||
Periodicity = container.RecurrencePeriodicity,
|
||||
RecurrenceRange = container.RecurrenceRange,
|
||||
Start = container.Start,
|
||||
WeekDays = container.RecurrenceWeekDays,
|
||||
WeekOfMonth = container.RecurrenceWeekOfMonth,
|
||||
RecurrenceType = container.RecurrenceType,
|
||||
IsFormRecreated = container.IsFormRecreated
|
||||
};
|
||||
}
|
||||
|
||||
static void PopupMenuShowing(object s, PopupMenuShowingEventArgs e)
|
||||
{
|
||||
var menuId = e.Menu.MenuId;
|
||||
|
||||
var invisibleMenuItemNames = new List<string>
|
||||
{
|
||||
"StatusSubMenu",
|
||||
"LabelSubMenu",
|
||||
"StatusSubMenu",
|
||||
"LabelSubMenu",
|
||||
"NewAllDayEvent",
|
||||
"NewRecurringEvent"
|
||||
};
|
||||
|
||||
if(menuId == SchedulerMenuItemId.AppointmentMenu)
|
||||
{
|
||||
e.Menu.Items.Add(new MenuItem("In die Zeiterfassung übertragen", "ToServiceRecord"));
|
||||
}
|
||||
|
||||
if(menuId == SchedulerMenuItemId.DefaultMenu)
|
||||
{
|
||||
e.Menu.Items.Add(new MenuItem("Verfügbare Mitarbeiter anzeigen", "ShowAvailableEmployees"));
|
||||
}
|
||||
|
||||
foreach(MenuItem item in e.Menu.Items)
|
||||
{
|
||||
if(invisibleMenuItemNames.Contains(item.Name))
|
||||
{
|
||||
item.Visible = false;
|
||||
}
|
||||
|
||||
if(item.Name == "SwitchViewMenu")
|
||||
{
|
||||
foreach(MenuItem subItem in item.Items)
|
||||
{
|
||||
switch(subItem.Text)
|
||||
{
|
||||
case "Day View":
|
||||
subItem.Text = "Tag";
|
||||
break;
|
||||
case "Work Week View":
|
||||
subItem.Text = "Arbeitswoche";
|
||||
break;
|
||||
case "Week View":
|
||||
subItem.Text = "Woche";
|
||||
break;
|
||||
case "Month View":
|
||||
subItem.Text = "Monat";
|
||||
break;
|
||||
case "Timeline View":
|
||||
subItem.Text = "Zeitstrahl";
|
||||
break;
|
||||
case "Agenda View":
|
||||
subItem.Text = "Agenda";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch(item.Text)
|
||||
{
|
||||
case "Open":
|
||||
item.Text = "Öffnen";
|
||||
break;
|
||||
case "Edit Series":
|
||||
item.Text = "Serie bearbeiten";
|
||||
break;
|
||||
case "Restore Default State":
|
||||
item.Text = "Serienelement wiederherstellen";
|
||||
break;
|
||||
case "Delete":
|
||||
item.Text = "Löschen";
|
||||
break;
|
||||
case "New Appointment":
|
||||
item.Text = "Neuer Termin";
|
||||
break;
|
||||
case "New Recurring Appointment":
|
||||
item.Text = "Neuer Serientermin";
|
||||
break;
|
||||
case "Go to Today":
|
||||
item.Text = "Heute";
|
||||
break;
|
||||
case "Go to Date...":
|
||||
item.Text = "Gehe zu Datum...";
|
||||
break;
|
||||
case "Change View To":
|
||||
item.Text = "Ansicht wechseln";
|
||||
break;
|
||||
case "60 Minutes":
|
||||
item.Text = "60 Minuten";
|
||||
break;
|
||||
case "30 Minutes":
|
||||
item.Text = "30 Minuten";
|
||||
break;
|
||||
case "15 Minutes":
|
||||
item.Text = "15 Minuten";
|
||||
break;
|
||||
case "10 Minutes":
|
||||
item.Text = "10 Minuten";
|
||||
break;
|
||||
case "6 Minutes":
|
||||
item.Text = "6 Minuten";
|
||||
break;
|
||||
case "5 Minutes":
|
||||
item.Text = "5 Minuten";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@{
|
||||
var scheduler = Html.DevExpress().Scheduler(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "scheduler";
|
||||
settings.OptionsAdaptivity.Enabled = true;
|
||||
settings.CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "SchedulerPagePartial" };
|
||||
settings.EditAppointmentRouteValues = new { Controller = "DevExpressScheduler", Action = "EditAppointment" };
|
||||
settings.CustomActionRouteValues = new { Controller = "DevExpressScheduler", Action = "CustomCallBackAction" };
|
||||
|
||||
settings.ActiveViewType = Model.CurrentViewType;
|
||||
settings.OptionsView.VerticalScrollBarMode = ScrollBarMode.Auto;
|
||||
settings.OptionsToolTips.ShowSelectionToolTip = false;
|
||||
settings.ClientSideEvents.ActiveViewChanging = "onActiveViewChanged";
|
||||
settings.ClientSideEvents.MenuItemClicked = "onMenuItemClicked";
|
||||
settings.PopupMenuShowing = PopupMenuShowing;
|
||||
|
||||
settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage);
|
||||
settings.Storage.EnableReminders = false;
|
||||
settings.OptionsBehavior.ClientTimeZoneId = "W. Europe Standard Time";
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Height = Unit.Percentage(100);
|
||||
|
||||
SchedulerHelper.ApplyCommonViewSettings(settings.Views.DayView);
|
||||
SchedulerHelper.ApplyCommonViewSettings(settings.Views.WorkWeekView);
|
||||
SchedulerHelper.ApplyCommonViewSettings(settings.Views.FullWeekView);
|
||||
settings.Views.DayView.DayCount = 1;
|
||||
|
||||
settings.Views.FullWeekView.Enabled = true;
|
||||
settings.Views.WeekView.Enabled = false;
|
||||
settings.Views.MonthView.ResourcesPerPage = 1;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.StartTimeVisibility = AppointmentTimeVisibility.Never;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.EndTimeVisibility = AppointmentTimeVisibility.Never;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.StatusDisplayType = AppointmentStatusDisplayType.Bounds;
|
||||
settings.Views.MonthView.AppointmentDisplayOptions.ShowRecurrence = true;
|
||||
settings.Views.MonthView.MonthViewStyles.DateCellBody.Height = Unit.Pixel(170);
|
||||
settings.Start = BS.Shared.Extensions.DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday);
|
||||
|
||||
settings.OptionsForms.RecurrenceFormName = "appointmentRecurrenceForm";
|
||||
|
||||
TimeScale[] timeScales =
|
||||
settings.ClientSideEvents.EndCallback = "resizeSchedulerEditForm";
|
||||
settings.ClientSideEvents.Init = "resizeSchedulerEditForm";
|
||||
|
||||
settings.AppointmentFormShowing = (sender, e) =>
|
||||
{
|
||||
new TimeScaleYear { Enabled = false },
|
||||
new TimeScaleQuarter { Enabled = false },
|
||||
new TimeScaleMonth(),
|
||||
new TimeScaleFixedInterval { Enabled = false },
|
||||
new TimeScaleDay(),
|
||||
new TimeScaleHour { Enabled = false }
|
||||
if(sender is MVCxScheduler scheduler)
|
||||
{
|
||||
e.Container = new CustomAppointmentTemplateContainer(scheduler);
|
||||
}
|
||||
};
|
||||
|
||||
settings.Views.TimelineView.Scales.AddRange(timeScales);
|
||||
settings.Views.TimelineView.ResourcesPerPage = 2;
|
||||
settings.Views.WeekView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); });
|
||||
|
||||
settings.Storage.EnableReminders = false;
|
||||
settings.Storage.Resources.Assign(SchedulerHelper.DefaultResourceStorage);
|
||||
settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage);
|
||||
settings.Views.MonthView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); });
|
||||
|
||||
settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage);
|
||||
settings.Storage.Resources.Assign(SchedulerHelper.DefaultResourceStorage);
|
||||
settings.Storage.Appointments.Mappings.Start = nameof(SchedulerAppointmentDC.StartDate);
|
||||
settings.Storage.Appointments.Mappings.End = nameof(SchedulerAppointmentDC.EndDate);
|
||||
settings.Storage.Appointments.Mappings.Subject = nameof(SchedulerAppointmentDC.Subject);
|
||||
settings.Storage.Appointments.Mappings.AllDay = nameof(SchedulerAppointmentDC.AllDay);
|
||||
settings.Storage.Appointments.Mappings.Description = nameof(SchedulerAppointmentDC.Description);
|
||||
settings.Storage.Appointments.Mappings.Status = nameof(SchedulerAppointmentDC.Status);
|
||||
settings.Storage.Appointments.Mappings.Label = nameof(SchedulerAppointmentDC.LabelKey);
|
||||
settings.Storage.Appointments.Mappings.Type = nameof(SchedulerAppointmentDC.Type);
|
||||
settings.Views.DayView.SetVerticalAppointmentTemplateContent(c => { Html.RenderPartial("VerticalAppointmentTemplatePartial", c.AppointmentViewInfo); });
|
||||
settings.Views.DayView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); });
|
||||
|
||||
settings.Views.DayView.Styles.ScrollAreaHeight = new Unit(500);
|
||||
|
||||
settings.Views.WorkWeekView.SetVerticalAppointmentTemplateContent(c => { Html.RenderPartial("VerticalAppointmentTemplatePartial", c.AppointmentViewInfo); });
|
||||
settings.Views.WorkWeekView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo.Appointment); });
|
||||
|
||||
settings.OptionsForms.SetAppointmentFormTemplateContent(c =>
|
||||
{
|
||||
var container = (CustomAppointmentTemplateContainer) c;
|
||||
|
||||
var oid = (long?) container.Appointment.Id;
|
||||
|
||||
// Die bereits ausgewählten Mitarbeiter-Termin-Relationen beim Bearbeiten:
|
||||
var employees2Appointment = container.Appointment.CustomFields["Employees"] as List<Employee2SchedulerAppointmentDC> ?? new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
var customerList = container.Appointment.CustomFields["Customers"] as List<CompactCustomerDC>;
|
||||
var resourceList = container.Appointment.CustomFields["Resources"] as List<ResourceDC>;
|
||||
|
||||
var newModel = new AppointmentModel(Model.PossibleCustomers, Model.PossibleResources, Model.PossibleEmployees)
|
||||
{
|
||||
Oid = oid,
|
||||
Subject = container.Appointment.Subject,
|
||||
Location = container.Appointment.Location,
|
||||
StartTime = container.Appointment.Start,
|
||||
EndTime = container.Appointment.End,
|
||||
AllDay = container.Appointment.AllDay,
|
||||
Description = container.Appointment.Description,
|
||||
EventType = (int?)container.Appointment.Type,
|
||||
SelectedEmployee2SchedulerAppointments = employees2Appointment,
|
||||
SelectedCustomers = customerList,
|
||||
SelectedResources = resourceList,
|
||||
SelectedEmployeeOids = employees2Appointment.Select(employee2Appointment => employee2Appointment.Employee.EmployeeOid).ToList(),
|
||||
CompletedNotice = container.Appointment.CustomFields["CompletedNotice"]?.ToString(),
|
||||
CompletedUser = container.Appointment.CustomFields["CompletedUser"]?.ToString(),
|
||||
TaskDescription = container.Appointment.CustomFields["TaskDescription"]?.ToString(),
|
||||
HasServiceRecordEntry = container.Appointment.CustomFields["HasServiceRecordEntry"] is true,
|
||||
CanBeEdited = container.Appointment.CustomFields["CanBeEdited"] is true,
|
||||
IsPrivate = container.Appointment.CustomFields["IsPrivate"] is true,
|
||||
IsTask = container.Appointment.CustomFields["IsTask"] is true,
|
||||
DueDate = container.Appointment.CustomFields["DueDate"] is DateTime dueDate ? dueDate : null,
|
||||
CompletedDate = container.Appointment.CustomFields["CompletedDate"] is DateTime completedDate ? completedDate : null
|
||||
};
|
||||
|
||||
var appointmentModel = ViewData["EditableAppointmentModel"] != null ? (AppointmentModel)ViewData["EditableAppointmentModel"] : newModel;
|
||||
|
||||
ViewBag.DeleteButtonEnabled = container.CanDeleteAppointment;
|
||||
ViewBag.IsRecurring = container.Appointment.IsRecurring;
|
||||
ViewBag.AppointmentRecurrenceFormSettings = CreateAppointmentRecurrenceFormSettings(container);
|
||||
|
||||
Html.RenderPartial("CustomAppointmentFormPartial", appointmentModel);
|
||||
});
|
||||
});
|
||||
|
||||
if(ViewData["SchedulerErrorText"] != null)
|
||||
@@ -65,4 +249,49 @@
|
||||
}
|
||||
}
|
||||
|
||||
@scheduler.Bind(Model.Appointments,Model.Resources).GetHtml()
|
||||
@scheduler.Bind(Model.Appointments,Model.Resources).GetHtml()
|
||||
|
||||
|
||||
@* Mitarbeiterverfügbarkeitenpopup *@
|
||||
@if(Model.EmployeeAvailabilityObject != null)
|
||||
{
|
||||
@*<script type="text/javascript">
|
||||
$(document).ready(() => {
|
||||
$("#employee-availability-popup").modal("show");
|
||||
});
|
||||
</script>*@
|
||||
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="employee-availability-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
@Model.EmployeeAvailabilityObject.Interval
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Mitarbeiter</th>
|
||||
<th scope="col">Überstunden</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@foreach(var emp2Overtime in Model.EmployeeAvailabilityObject.Employee2Overtime)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@emp2Overtime.Key.DetailDescription
|
||||
</td>
|
||||
<td>
|
||||
@emp2Overtime.Value.ToString("0.00")
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Schließen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
@using BeWoPlanerMobil.Util
|
||||
@using BS.Shared.DataContracts
|
||||
@using DevExpress.Web.ASPxScheduler.Drawing
|
||||
@model AppointmentViewInfo
|
||||
|
||||
@functions{
|
||||
string GetHeaderText(){
|
||||
return $"{Model.AppointmentInterval.Start.ToShortTimeString()} - {Model.Appointment.End.ToShortTimeString()}";
|
||||
}
|
||||
|
||||
string GetRight()
|
||||
{
|
||||
var serviceRecords = Model.Appointment.CustomFields[nameof(SchedulerAppointmentDC.ServiceRecordList)] as List<ServiceRecordDC> ?? new List<ServiceRecordDC>();
|
||||
|
||||
return serviceRecords.Any() ? "40px" : "23px";
|
||||
}
|
||||
}
|
||||
|
||||
<style type="text/css">
|
||||
.verticalTemplate {
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
left: 3px;
|
||||
height: 90%;
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
cursor: default;
|
||||
background-color: #C0FFD0;
|
||||
font-family: "Signika Negative";
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.verticalTemplateInfoDiv {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font: 10pt 'Signika Negative';
|
||||
color: #37414D;
|
||||
margin: .25em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.vertical-appointment-label .recurring-label-span {
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.vertical-appointment-label {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="verticalTemplate" style="border-left: @MobileUtils.GetLeftAppointmentBorder(Model.Appointment);background: @MobileUtils.GetAppointmentRightBackground(Model.Appointment) right / 5px 100% no-repeat, #C0FFD0;">
|
||||
<div class="verticalTemplateInfoDiv">
|
||||
<label class="vertical-appointment-label text-truncate" style="width: 90%;">
|
||||
@GetHeaderText() <span style="font-weight: bold;">@Model.Appointment.Subject (@Model.Appointment.Location)</span>
|
||||
</label>
|
||||
<div class="clearfix d-inline">
|
||||
@if(Model.Appointment.CustomFields[nameof(SchedulerAppointmentDC.ServiceRecordList)] is List<ServiceRecordDC> serviceRecords && serviceRecords.Any())
|
||||
{
|
||||
<i class="fas fa-clock text-bewo-service-records float-right recurring-label-span mr-1"></i>
|
||||
}
|
||||
|
||||
@if(Model.Appointment.IsRecurring)
|
||||
{
|
||||
if(Model.Appointment.Id is long)
|
||||
{
|
||||
<span class="fa-stack fa-1x text-info float-right" style="height:fit-content;width:fit-content;position:absolute;top:10px;right:@GetRight();">
|
||||
<i class="fas fa-solid fa-stack-1x fa-slash"></i>
|
||||
<i class="fas fa-solid fa-stack-1x fa-sync-alt"></i>
|
||||
</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<i class="fas fa-sync-alt text-info float-right mr-1 recurring-label-span"></i>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -310,7 +310,7 @@
|
||||
}
|
||||
|
||||
@* Unterschrift-Anlegen-Button *@
|
||||
@if(Model.ShowSignature && !serviceRecord.SignatureOid.HasValue && serviceRecord.Customer != null)
|
||||
@if(Model.ShowSignature && !serviceRecord.SignatureOid.HasValue && serviceRecord.Customer != null && Model.IsAllowedToCreateSignature(serviceRecord))
|
||||
{
|
||||
<button type="button" class="btn btn-outline-primary" onclick="showNewSignaturePopup(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-signature"></span>
|
||||
|
||||
@@ -267,6 +267,7 @@
|
||||
|
||||
var hasNoOwnEntries = !Model.HasRightToProvideEmployeeSignatureForOthers && result.Items.All(item => !item.EmployeeOid.Equals(Model.LoggedInEmployee.EmployeeOid));
|
||||
var disabledString = hasNoOwnEntries ? "disabled" : string.Empty;
|
||||
var customerDisabledString = result.FristAbgelaufen ? "disabled" : string.Empty;
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
@@ -298,7 +299,7 @@
|
||||
<span class="fas fa-trash"></span>
|
||||
</button>
|
||||
}
|
||||
<button class="btn btn-bewo-customers" type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', false, @result.HasCustomerSignature.ToString().ToLower(), @canCustomerSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<button class="btn btn-bewo-customers" @customerDisabledString type="button" onclick="loadConfirmationReceiptSignatures('@cardBodyId_ssp', '@result.Identifier', false, @result.HasCustomerSignature.ToString().ToLower(), @canCustomerSign.ToString().ToLower(), @result.CustomerOid)">
|
||||
<span class="fas fa-signature mr-0 pr-0"></span>
|
||||
@if(customerSignatureState != SignatureState.All)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@using BeWoPlanerMobil.Controllers
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Service
|
||||
@using BeWoPlanerMobil.Util
|
||||
|
||||
@@ -29,6 +28,7 @@
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/jquery/jquery-3.7.1.min.js")"></script>
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/jquery/jquery.validate.min.js")"></script>
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/jquery/jquery.unobtrusive-ajax.min.js")"></script>
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/knockout-3.5.1.js")"></script>
|
||||
|
||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/bootstrap/bootstrap.bundle.min.js")"></script>
|
||||
|
||||
@@ -1,173 +1,177 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- GLOBAL -->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||
<sectionGroup name="devExpress">
|
||||
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<source name="System.ServiceModel" switchValue="All">
|
||||
<listeners>
|
||||
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
|
||||
<filter type="" />
|
||||
</add>
|
||||
<add initializeData="logs\Traces.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="traceListener" traceOutputOptions="DateTime">
|
||||
<filter type="" />
|
||||
</add>
|
||||
</listeners>
|
||||
</source>
|
||||
</sources>
|
||||
</system.diagnostics>
|
||||
<log4net debug="true">
|
||||
<appender name="logFile" type="log4net.Appender.RollingFileAppender,log4net">
|
||||
<param name="File" value="logs\mobilelog.txt" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="DatePattern" value="dd.MM.yyyy" />
|
||||
<param name="StaticLogFileName" value="true" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<priority value="DEBUG" />
|
||||
<appender-ref ref="logFile" />
|
||||
</root>
|
||||
<logger name="NHibernate">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<logger name="NHibernate.Caches">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||
<sectionGroup name="devExpress">
|
||||
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<source name="System.ServiceModel" switchValue="All">
|
||||
<listeners>
|
||||
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
|
||||
<filter type="" />
|
||||
</add>
|
||||
<add initializeData="logs\Traces.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="traceListener" traceOutputOptions="DateTime">
|
||||
<filter type="" />
|
||||
</add>
|
||||
</listeners>
|
||||
</source>
|
||||
</sources>
|
||||
</system.diagnostics>
|
||||
<log4net debug="true">
|
||||
<appender name="logFile" type="log4net.Appender.RollingFileAppender,log4net">
|
||||
<param name="File" value="logs\mobilelog.txt" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="DatePattern" value="dd.MM.yyyy" />
|
||||
<param name="StaticLogFileName" value="true" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<priority value="DEBUG" />
|
||||
<appender-ref ref="logFile" />
|
||||
</root>
|
||||
<logger name="NHibernate">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<logger name="NHibernate.Caches">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
|
||||
<logger name="NHibernate.Engine.Cascade">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<logger name="NHibernate.Engine.Cascade">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
|
||||
<logger name="NHibernate.Loader.Loader">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<logger name="NHibernate.Loader.Loader">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
|
||||
<logger name="NHibernate.SQL">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
<logger name="NHibernate.SQL">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
|
||||
<logger name="NHibernate.Search">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
</log4net>
|
||||
<system.webServer>
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
<modules runAllManagedModulesForAllRequests="true">
|
||||
<add name="ASPHibernateSession" type="BeWoPlanerMobil.Service.ASPHibernateSessionManager, BeWoPlanerMobil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||
</modules>
|
||||
<directoryBrowse enabled="true" />
|
||||
<handlers>
|
||||
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" name="ASPxReportDesignerHandlerModule" preCondition="integratedMode" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" name="ASPxWebDocumentViewerHandlerModule" preCondition="integratedMode" />
|
||||
<add name="ASPxQueryBuilderDesignerHandlerModule" preCondition="integratedMode" verb="GET,POST" path="DXQB.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" /><remove name="TRACEVerbHandler" /><add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /></handlers>
|
||||
<security>
|
||||
<requestFiltering allowDoubleEscaping="true" >
|
||||
<requestLimits maxQueryString="32768" maxUrl="65535" maxAllowedContentLength="20971520" />
|
||||
</requestFiltering>
|
||||
</security>
|
||||
<staticContent>
|
||||
<clientCache cacheControlMode="UseMaxAge" />
|
||||
</staticContent>
|
||||
</system.webServer>
|
||||
<system.serviceModel>
|
||||
<behaviors>
|
||||
<endpointBehaviors>
|
||||
<behavior name="SecurityBehavior">
|
||||
<MultitenancyExtension />
|
||||
<SecurityExtension />
|
||||
</behavior>
|
||||
<behavior name="SecurityAndSessionBehavior">
|
||||
<!--wichtig: erst Mulittenancy, dann session, dann security!-->
|
||||
<MultitenancyExtension />
|
||||
<HibernateSessionExtension />
|
||||
<SecurityExtension />
|
||||
</behavior>
|
||||
</endpointBehaviors>
|
||||
<serviceBehaviors>
|
||||
<behavior name="returnFaults">
|
||||
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
|
||||
<serviceDebug includeExceptionDetailInFaults="true" />
|
||||
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" />
|
||||
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
|
||||
</behavior>
|
||||
</serviceBehaviors>
|
||||
</behaviors>
|
||||
<extensions>
|
||||
<behaviorExtensions>
|
||||
<add name="MultitenancyExtension" type="BeWo.Service.Multitenancy.MultitenancyBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add name="SecurityExtension" type="BeWo.Service.Security.SecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add name="HibernateSessionExtension" type="BeWo.Service.UnitOfWork.HibernateSessionBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
</behaviorExtensions>
|
||||
</extensions>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
<binding name="BeWoBasicEndpoint" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
</binding>
|
||||
<binding name="BeWoStreamingEndpoint" receiveTimeout="10:10:00" sendTimeout="10:01:00" maxBufferSize="65536" maxReceivedMessageSize="67108864" messageEncoding="Text" transferMode="StreamedRequest" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
</binding>
|
||||
<binding name="QueryServiceEndpoint" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None">
|
||||
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
|
||||
<message clientCredentialType="UserName" algorithmSuite="Default" />
|
||||
</security>
|
||||
</binding>
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<client>
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="QueryServiceEndpoint" contract="QueryService.IQueryService" name="QueryServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoStreamingEndpoint" contract="BeWo.ServiceProxy.IStreamingService" name="StreamingServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IEmployeeService" name="EmployeeServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.ICustomerService" name="CustomerServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IUserService" name="UserServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IValueListService" name="ValueListServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IDownloadService" name="DownloadServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IResourceService" name="BeWoBasicEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IOperationsService" name="OperationsServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IAccountingService" name="AccountingServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IAnalysisService" name="AnalysisServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IMailService" name="MailServiceEndpoint" />
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<appSettings>
|
||||
<add key="webpages:Version" value="3.0.0.0" />
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
<add key="PreserveLoginUrl" value="true" />
|
||||
<add key="ClientValidationEnabled" value="true" />
|
||||
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
|
||||
<add key="MultitenancyPath" value="..\Host\Multitenancy\" />
|
||||
<add key="LicenseInfoUrl" value="https://support.bewoplaner.de/api/getlicensecount.php?k=[TENANT]" />
|
||||
<add key="LicenseOrderUrl" value="https://support.bewoplaner.de/lizenzbestellung/?k=[TENANT]" />
|
||||
<add key="LicenseCancellationUrl" value="https://support.bewoplaner.de/api/licencecancellation.php?k=[TENANT]" />
|
||||
<add key="ContractStateUrl" value="https://support.bewoplaner.de/api/getcontractstate.php?CustomerID=[TENANT]" />
|
||||
<!--<add key="PluginPathtest" value="D:\Projects\beyondSoft\BeWoPlaner\BeWo\Host\bin" />-->
|
||||
<add key="PluginBasePath" value="..\CustomerDlls" />
|
||||
<add key="PluginPath" value="..\CustomerDlls" />
|
||||
<add key="FileRootDirectory" value="\BWP-Files" />
|
||||
</appSettings>
|
||||
<!--
|
||||
<logger name="NHibernate.Search">
|
||||
<level value="WARN" />
|
||||
</logger>
|
||||
</log4net>
|
||||
<system.webServer>
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
<modules runAllManagedModulesForAllRequests="true">
|
||||
<add name="ASPHibernateSession" type="BeWoPlanerMobil.Service.ASPHibernateSessionManager, BeWoPlanerMobil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||
</modules>
|
||||
<directoryBrowse enabled="true" />
|
||||
<handlers>
|
||||
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" name="ASPxReportDesignerHandlerModule" preCondition="integratedMode" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" name="ASPxWebDocumentViewerHandlerModule" preCondition="integratedMode" />
|
||||
<add name="ASPxQueryBuilderDesignerHandlerModule" preCondition="integratedMode" verb="GET,POST" path="DXQB.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" />
|
||||
<remove name="TRACEVerbHandler" />
|
||||
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
|
||||
</handlers>
|
||||
<security>
|
||||
<requestFiltering allowDoubleEscaping="true">
|
||||
<requestLimits maxQueryString="32768" maxUrl="65535" maxAllowedContentLength="20971520" />
|
||||
</requestFiltering>
|
||||
</security>
|
||||
<staticContent>
|
||||
<clientCache cacheControlMode="UseMaxAge" />
|
||||
</staticContent>
|
||||
</system.webServer>
|
||||
<system.serviceModel>
|
||||
<behaviors>
|
||||
<endpointBehaviors>
|
||||
<behavior name="SecurityBehavior">
|
||||
<MultitenancyExtension />
|
||||
<SecurityExtension />
|
||||
</behavior>
|
||||
<behavior name="SecurityAndSessionBehavior">
|
||||
<!--wichtig: erst Mulittenancy, dann session, dann security!-->
|
||||
<MultitenancyExtension />
|
||||
<HibernateSessionExtension />
|
||||
<SecurityExtension />
|
||||
</behavior>
|
||||
</endpointBehaviors>
|
||||
<serviceBehaviors>
|
||||
<behavior name="returnFaults">
|
||||
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
|
||||
<serviceDebug includeExceptionDetailInFaults="true" />
|
||||
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" />
|
||||
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
|
||||
</behavior>
|
||||
</serviceBehaviors>
|
||||
</behaviors>
|
||||
<extensions>
|
||||
<behaviorExtensions>
|
||||
<add name="MultitenancyExtension" type="BeWo.Service.Multitenancy.MultitenancyBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add name="SecurityExtension" type="BeWo.Service.Security.SecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add name="HibernateSessionExtension" type="BeWo.Service.UnitOfWork.HibernateSessionBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
</behaviorExtensions>
|
||||
</extensions>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
<binding name="BeWoBasicEndpoint" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
</binding>
|
||||
<binding name="BeWoStreamingEndpoint" receiveTimeout="10:10:00" sendTimeout="10:01:00" maxBufferSize="65536" maxReceivedMessageSize="67108864" messageEncoding="Text" transferMode="StreamedRequest" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None" />
|
||||
</binding>
|
||||
<binding name="QueryServiceEndpoint" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None">
|
||||
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
|
||||
<message clientCredentialType="UserName" algorithmSuite="Default" />
|
||||
</security>
|
||||
</binding>
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<client>
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="QueryServiceEndpoint" contract="QueryService.IQueryService" name="QueryServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoStreamingEndpoint" contract="BeWo.ServiceProxy.IStreamingService" name="StreamingServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IEmployeeService" name="EmployeeServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.ICustomerService" name="CustomerServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IUserService" name="UserServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IValueListService" name="ValueListServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IDownloadService" name="DownloadServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IResourceService" name="BeWoBasicEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IOperationsService" name="OperationsServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IAccountingService" name="AccountingServiceEndpoint" />
|
||||
<endpoint behaviorConfiguration="BeWoServiceBehavior" binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IAnalysisService" name="AnalysisServiceEndpoint" />
|
||||
<endpoint binding="basicHttpBinding" bindingConfiguration="BeWoBasicEndpoint" contract="BeWo.ServiceProxy.IMailService" name="MailServiceEndpoint" />
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<appSettings>
|
||||
<add key="webpages:Version" value="3.0.0.0" />
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
<add key="PreserveLoginUrl" value="true" />
|
||||
<add key="ClientValidationEnabled" value="true" />
|
||||
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
|
||||
<add key="MultitenancyPath" value="..\Host\Multitenancy\" />
|
||||
<add key="LicenseInfoUrl" value="https://support.bewoplaner.de/api/getlicensecount.php?k=[TENANT]" />
|
||||
<add key="LicenseOrderUrl" value="https://support.bewoplaner.de/lizenzbestellung/?k=[TENANT]" />
|
||||
<add key="LicenseCancellationUrl" value="https://support.bewoplaner.de/api/licencecancellation.php?k=[TENANT]" />
|
||||
<add key="ContractStateUrl" value="https://support.bewoplaner.de/api/getcontractstate.php?CustomerID=[TENANT]" />
|
||||
<!--<add key="PluginPathtest" value="D:\Projects\beyondSoft\BeWoPlaner\BeWo\Host\bin" />-->
|
||||
<add key="PluginBasePath" value="..\CustomerDlls" />
|
||||
<add key="PluginPath" value="..\CustomerDlls" />
|
||||
<add key="FileRootDirectory" value="\BWP-Files" />
|
||||
</appSettings>
|
||||
<!--
|
||||
Eine Beschreibung der Änderungen von 'web.config' finden Sie unter 'http://go.microsoft.com/fwlink/?LinkId=235367'.
|
||||
|
||||
Die folgenden Attribute können für die <httpRuntime>-Kennung festgelegt werden.
|
||||
@@ -175,193 +179,194 @@
|
||||
<httpRuntime targetFramework="4.5" />
|
||||
</system.Web>
|
||||
-->
|
||||
<system.web>
|
||||
<compilation debug="true" defaultLanguage="c#" targetFramework="4.7.2">
|
||||
<assemblies>
|
||||
<add assembly="BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Mvc, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||
<add assembly="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.CodeParser.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.Resources.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.ASPxThemes.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.Mvc5.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.PivotGrid.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Sparkline.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.ASPxScheduler.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraEditors.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2.Web, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2.Web.WebForms, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Core.Desktop, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Reporting, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
</assemblies>
|
||||
</compilation>
|
||||
<pages controlRenderingCompatibilityVersion="4.0">
|
||||
<namespaces>
|
||||
<add namespace="System.Web.Helpers" />
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Optimization" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
<add namespace="System.Web.WebPages" />
|
||||
<add namespace="System.Drawing" />
|
||||
<add namespace="DevExpress.Utils" />
|
||||
<add namespace="DevExpress.Web" />
|
||||
<add namespace="DevExpress.Web.Mvc" />
|
||||
<add namespace="DevExpress.Web.Mvc.UI" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
<httpHandlers>
|
||||
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" validate="false" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" validate="false" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" validate="false" />
|
||||
<add validate="false" verb="GET,POST" path="DXQB.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
</httpHandlers>
|
||||
<httpModules>
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||
</httpModules>
|
||||
<authentication mode="Forms">
|
||||
<forms loginUrl="~/Login" />
|
||||
</authentication>
|
||||
<sessionState timeout="20" />
|
||||
<identity impersonate="false" />
|
||||
<httpRuntime maxQueryStringLength="32768" maxRequestLength="20480" maxUrlLength="65536" />
|
||||
</system.web>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.6.0" newVersion="4.1.6.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-5.3.0.0" newVersion="5.3.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Web.Infrastructure" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<devExpress>
|
||||
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
|
||||
<themes enableThemesAssembly="true" />
|
||||
<errors callbackErrorRedirectUrl="" />
|
||||
<settings rightToLeft="false" doctypeMode="Html5" ieCompatibilityVersion="edge" />
|
||||
<resources>
|
||||
</resources>
|
||||
</devExpress>
|
||||
<entityFramework>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.codedom>
|
||||
<compilers>
|
||||
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008,40000,40008 /define:_MYTYPE=\"Web\" /optionInfer+" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||
</compilers>
|
||||
</system.codedom>
|
||||
<system.web>
|
||||
<globalization culture="de-DE" uiCulture="de-DE" />
|
||||
<compilation debug="true" defaultLanguage="c#" targetFramework="4.7.2">
|
||||
<assemblies>
|
||||
<add assembly="BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Mvc, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||
<add assembly="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.CodeParser.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.Resources.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.ASPxThemes.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.Mvc5.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.PivotGrid.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Sparkline.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Web.ASPxScheduler.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraEditors.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2.Web, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraReports.v23.2.Web.WebForms, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Core.Desktop, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2.Reporting, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<add assembly="DevExpress.XtraScheduler.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
</assemblies>
|
||||
</compilation>
|
||||
<pages controlRenderingCompatibilityVersion="4.0">
|
||||
<namespaces>
|
||||
<add namespace="System.Web.Helpers" />
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Optimization" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
<add namespace="System.Web.WebPages" />
|
||||
<add namespace="System.Drawing" />
|
||||
<add namespace="DevExpress.Utils" />
|
||||
<add namespace="DevExpress.Web" />
|
||||
<add namespace="DevExpress.Web.Mvc" />
|
||||
<add namespace="DevExpress.Web.Mvc.UI" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
<httpHandlers>
|
||||
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" validate="false" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" validate="false" />
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" validate="false" />
|
||||
<add validate="false" verb="GET,POST" path="DXQB.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
</httpHandlers>
|
||||
<httpModules>
|
||||
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||
</httpModules>
|
||||
<authentication mode="Forms">
|
||||
<forms loginUrl="~/Login" />
|
||||
</authentication>
|
||||
<sessionState timeout="20" />
|
||||
<identity impersonate="false" />
|
||||
<httpRuntime maxQueryStringLength="32768" maxRequestLength="20480" maxUrlLength="65536" />
|
||||
</system.web>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.6.0" newVersion="4.1.6.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-5.3.0.0" newVersion="5.3.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Web.Infrastructure" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<devExpress>
|
||||
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
|
||||
<themes enableThemesAssembly="true" />
|
||||
<errors callbackErrorRedirectUrl="" />
|
||||
<settings rightToLeft="false" doctypeMode="Html5" ieCompatibilityVersion="edge" />
|
||||
<resources>
|
||||
</resources>
|
||||
</devExpress>
|
||||
<entityFramework>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.codedom>
|
||||
<compilers>
|
||||
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008,40000,40008 /define:_MYTYPE=\"Web\" /optionInfer+" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||
</compilers>
|
||||
</system.codedom>
|
||||
</configuration>
|
||||
@@ -239,6 +239,7 @@ namespace BeWo.Data.Security
|
||||
|| r == UserRightType.AiModulePromptbausteineRemove
|
||||
|| r == UserRightType.AiModulePromptbausteineSeeAll
|
||||
|| r == UserRightType.AiModulePromptbausteineView
|
||||
//|| r == UserRightType.AiModulePromptbausteineExecute
|
||||
|| r == UserRightType.AiVoiceView;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
|
||||
<appSettings>
|
||||
<add key="OpenWebUIKey" value=""/>
|
||||
<add key="OllamaKey" value=""/>
|
||||
<add key="Ollama2Key" value=""/>
|
||||
<add key="GetGkvSumApiKey" value=""/>
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
INSERT INTO `.executedscripts`
|
||||
VALUES ('Changes_2026-02-10_AiVoiceData', CURDATE());
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `AiVoiceData` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`Tid` int NOT NULL,
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
INSERT INTO `.executedscripts`
|
||||
VALUES ('Changes_2026-02-25_VermittlungGemeinnuetzigerArbeit Frist_Delikt_BWH', CURDATE());
|
||||
|
||||
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN Frist datetime NULL DEFAULT NULL;
|
||||
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN Delikt VARCHAR(256) NULL DEFAULT NULL;
|
||||
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN Bewaehrungshelfer VARCHAR(256) NULL DEFAULT NULL;
|
||||
@@ -176,7 +176,7 @@ namespace BeWoAmall
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(649.9999F, 27.41668F);
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
this.xrLabel9.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel9.Text = "BeWo Amall";
|
||||
this.xrLabel9.Text = "BeWo Amall Saadia Bachettou";
|
||||
this.xrLabel9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
//
|
||||
// xrLabel8
|
||||
@@ -688,7 +688,7 @@ namespace BeWoAmall
|
||||
this.xrLabel7.StylePriority.UseFont = false;
|
||||
this.xrLabel7.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel7.Text = resources.GetString("xrLabel7.Text");
|
||||
this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// GroupHeader1
|
||||
//
|
||||
|
||||
@@ -122,9 +122,8 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="xrLabel7.Text" xml:space="preserve">
|
||||
<value>BeWo Amall * Kleiner Griechenmarkt 81 * 50676 Köln * Telefon: 0221 / 4232 2244 * Telefax: 0221 / 4232 2266
|
||||
E-Mail: bewo-amall@hotmail.de
|
||||
Bankverbindung: Volksbank Rhein-Erft-Köln eG
|
||||
IBAN: DE33 3706 2365 5220 3740 27 – BIC: GENODED1FHH</value>
|
||||
<value>BeWo Amall Saadia Bachettou * Kleiner Griechenmarkt 81 * 50676 Köln
|
||||
Telefon: 0221 / 4232 2244 * Telefax: 0221 / 4232 2266 * E-Mail: info@bewo-amall.de
|
||||
Bankverbindung: Sparkasse KölnBonn * IBAN: DE92 3705 0198 1958 7362 49 – BIC: COLS33XXX</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -30,6 +30,7 @@ namespace BeWoAuxilioRitter
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Spitzabrechnung));
|
||||
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrPanel1 = new DevExpress.XtraReports.UI.XRPanel();
|
||||
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -71,7 +72,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel12,
|
||||
this.xrCheckBox2,
|
||||
this.xrCheckBox1});
|
||||
this.Detail.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.Detail.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
|
||||
this.Detail.HeightF = 600.2709F;
|
||||
this.Detail.Name = "Detail";
|
||||
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
@@ -100,7 +101,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel15.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel15.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrLabel15.CanShrink = true;
|
||||
this.xrLabel15.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(10.0001F, 29.99999F);
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.SizeF = new System.Drawing.SizeF(650F, 20F);
|
||||
@@ -116,7 +117,7 @@ namespace BeWoAuxilioRitter
|
||||
this.lblAktenzeichen.BackColor = System.Drawing.Color.Transparent;
|
||||
this.lblAktenzeichen.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.lblAktenzeichen.CanShrink = true;
|
||||
this.lblAktenzeichen.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.lblAktenzeichen.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
|
||||
this.lblAktenzeichen.LocationFloat = new DevExpress.Utils.PointFloat(10F, 65F);
|
||||
this.lblAktenzeichen.Multiline = true;
|
||||
this.lblAktenzeichen.Name = "lblAktenzeichen";
|
||||
@@ -169,7 +170,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel3.CanShrink = true;
|
||||
this.xrLabel3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "RecordedFLSTotal", "{0:0.00}")});
|
||||
this.xrLabel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(561.38F, 132F);
|
||||
this.xrLabel3.Multiline = true;
|
||||
this.xrLabel3.Name = "xrLabel3";
|
||||
@@ -188,7 +189,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel9.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel9.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrLabel9.CanShrink = true;
|
||||
this.xrLabel9.Font = new System.Drawing.Font("Arial", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))));
|
||||
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("Arial", 11F, ((DevExpress.Drawing.DXFontStyle)((DevExpress.Drawing.DXFontStyle.Bold | DevExpress.Drawing.DXFontStyle.Underline))));
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(10.0001F, 9.999974F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(650F, 20F);
|
||||
@@ -201,7 +202,7 @@ namespace BeWoAuxilioRitter
|
||||
//
|
||||
// xrLabel4
|
||||
//
|
||||
this.xrLabel4.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 403.875F);
|
||||
this.xrLabel4.Multiline = true;
|
||||
this.xrLabel4.Name = "xrLabel4";
|
||||
@@ -223,7 +224,7 @@ namespace BeWoAuxilioRitter
|
||||
//
|
||||
this.xrLabel35.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel35.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrLabel35.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel35.Font = new DevExpress.Drawing.DXFont("Arial", 11F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel35.LocationFloat = new DevExpress.Utils.PointFloat(2.999973F, 575.9794F);
|
||||
this.xrLabel35.Multiline = true;
|
||||
this.xrLabel35.Name = "xrLabel35";
|
||||
@@ -346,7 +347,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel1,
|
||||
this.xrLabel19,
|
||||
this.lblAdresse});
|
||||
this.GroupHeader1.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
|
||||
this.GroupHeader1.HeightF = 392.3333F;
|
||||
this.GroupHeader1.Name = "GroupHeader1";
|
||||
this.GroupHeader1.StylePriority.UseFont = false;
|
||||
@@ -355,7 +356,7 @@ namespace BeWoAuxilioRitter
|
||||
//
|
||||
this.xrLabel20.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel20.CanShrink = true;
|
||||
this.xrLabel20.Font = new System.Drawing.Font("Arial", 9F);
|
||||
this.xrLabel20.Font = new DevExpress.Drawing.DXFont("Arial", 9F);
|
||||
this.xrLabel20.ForeColor = System.Drawing.Color.Gray;
|
||||
this.xrLabel20.LocationFloat = new DevExpress.Utils.PointFloat(0F, 184.2917F);
|
||||
this.xrLabel20.Multiline = true;
|
||||
@@ -367,8 +368,8 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel20.StylePriority.UseFont = false;
|
||||
this.xrLabel20.StylePriority.UseForeColor = false;
|
||||
this.xrLabel20.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel20.Text = "BeWo-Auxilio GbR - Standort Düsseldorf - \r\nMerowingerstr. 20b - 40223 Düsseldorf" +
|
||||
"\r\n";
|
||||
this.xrLabel20.Text = "BeWo-Auxilio GbR - Standort Düsseldorf - \r\nAuf\'m Hennekamp 76-78 - 40225 Düsseld" +
|
||||
"orf \r\n";
|
||||
this.xrLabel20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
|
||||
this.xrLabel20.WordWrap = false;
|
||||
//
|
||||
@@ -387,7 +388,7 @@ namespace BeWoAuxilioRitter
|
||||
//
|
||||
// xrLabel8
|
||||
//
|
||||
this.xrLabel8.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 352.3333F);
|
||||
this.xrLabel8.Multiline = true;
|
||||
this.xrLabel8.Name = "xrLabel8";
|
||||
@@ -439,13 +440,15 @@ namespace BeWoAuxilioRitter
|
||||
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
|
||||
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
|
||||
this.ruleRateFactorNull});
|
||||
this.Margins = new System.Drawing.Printing.Margins(80, 30, 38, 132);
|
||||
this.Margins = new DevExpress.Drawing.DXMargins(80F, 30F, 38F, 132F);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
|
||||
this.Version = "17.1";
|
||||
this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("Spitzabrechnung.Watermark.Image")));
|
||||
this.Watermark.PageRange = "1";
|
||||
this.Version = "23.2";
|
||||
xrWatermark1.Id = "Watermark1";
|
||||
xrWatermark1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrWatermark1.ImageSource"));
|
||||
xrWatermark1.PageRange = "1";
|
||||
this.Watermarks.Add(xrWatermark1);
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -247,7 +247,7 @@ namespace BeWoAuxilioRitter
|
||||
this.xrLabel20.StylePriority.UseFont = false;
|
||||
this.xrLabel20.StylePriority.UseForeColor = false;
|
||||
this.xrLabel20.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel20.Text = "BeWo-Auxilio Alexander Ritter\r\nMerowingerstr. 20b - 40223 Düsseldorf\r\n";
|
||||
this.xrLabel20.Text = "BeWo-Auxilio Alexander Ritter\r\nAuf\'m Hennekamp 76-78 - 40225 Düsseldorf \r\n";
|
||||
this.xrLabel20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
|
||||
this.xrLabel20.WordWrap = false;
|
||||
//
|
||||
|
||||
@@ -161,7 +161,7 @@ namespace BeWo.BeWoAuxilioRitter
|
||||
this.xrLabel10.StylePriority.UseFont = false;
|
||||
this.xrLabel10.StylePriority.UseForeColor = false;
|
||||
this.xrLabel10.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel10.Text = "BeWo-Auxilio Alexander Ritter\r\nMerowingerstr. 20b - 40223 Düsseldorf\r\n";
|
||||
this.xrLabel10.Text = "BeWo-Auxilio Alexander Ritter\r\nAuf\'m Hennekamp 76-78 - 40225 Düsseldorf \r\n";
|
||||
this.xrLabel10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
|
||||
this.xrLabel10.WordWrap = false;
|
||||
//
|
||||
|
||||
@@ -69,6 +69,9 @@ namespace BeWo.BeWoAuxilioRitter.Alt
|
||||
this.xrTableRow15 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow16 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.lblDifferenzrechnungText = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.lblDifferenzrechnung = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow18 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow17 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
@@ -112,9 +115,6 @@ namespace BeWo.BeWoAuxilioRitter.Alt
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrTableRow16 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.lblDifferenzrechnungText = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.lblDifferenzrechnung = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
@@ -153,8 +153,8 @@ namespace BeWo.BeWoAuxilioRitter.Alt
|
||||
this.xrLabel20.StylePriority.UseFont = false;
|
||||
this.xrLabel20.StylePriority.UseForeColor = false;
|
||||
this.xrLabel20.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel20.Text = "BeWo-Auxilio GbR - Standort Düsseldorf - \r\nMerowingerstr. 20b - 40223 Düsseldorf" +
|
||||
"\r\n";
|
||||
this.xrLabel20.Text = "BeWo-Auxilio GbR - Standort Düsseldorf - \r\nAuf\'m Hennekamp 76-78 - 40225 Düsseld" +
|
||||
"orf \r\n";
|
||||
this.xrLabel20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
|
||||
this.xrLabel20.WordWrap = false;
|
||||
//
|
||||
@@ -570,6 +570,37 @@ namespace BeWo.BeWoAuxilioRitter.Alt
|
||||
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
|
||||
this.xrTableCell15.Weight = 0.21685899000901443D;
|
||||
//
|
||||
// xrTableRow16
|
||||
//
|
||||
this.xrTableRow16.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.lblDifferenzrechnungText,
|
||||
this.lblDifferenzrechnung});
|
||||
this.xrTableRow16.Name = "xrTableRow16";
|
||||
this.xrTableRow16.Weight = 0.085D;
|
||||
//
|
||||
// lblDifferenzrechnungText
|
||||
//
|
||||
this.lblDifferenzrechnungText.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblDifferenzrechnungText.Multiline = true;
|
||||
this.lblDifferenzrechnungText.Name = "lblDifferenzrechnungText";
|
||||
this.lblDifferenzrechnungText.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblDifferenzrechnungText.StylePriority.UseBorders = false;
|
||||
this.lblDifferenzrechnungText.StylePriority.UsePadding = false;
|
||||
this.lblDifferenzrechnungText.Weight = 0.78314100999098568D;
|
||||
//
|
||||
// lblDifferenzrechnung
|
||||
//
|
||||
this.lblDifferenzrechnung.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblDifferenzrechnung.Multiline = true;
|
||||
this.lblDifferenzrechnung.Name = "lblDifferenzrechnung";
|
||||
this.lblDifferenzrechnung.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblDifferenzrechnung.StylePriority.UseBorders = false;
|
||||
this.lblDifferenzrechnung.StylePriority.UsePadding = false;
|
||||
this.lblDifferenzrechnung.StylePriority.UseTextAlignment = false;
|
||||
this.lblDifferenzrechnung.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
|
||||
this.lblDifferenzrechnung.Weight = 0.21685899000901443D;
|
||||
//
|
||||
// xrTableRow18
|
||||
//
|
||||
this.xrTableRow18.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
@@ -989,37 +1020,6 @@ namespace BeWo.BeWoAuxilioRitter.Alt
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
|
||||
//
|
||||
// xrTableRow16
|
||||
//
|
||||
this.xrTableRow16.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.lblDifferenzrechnungText,
|
||||
this.lblDifferenzrechnung});
|
||||
this.xrTableRow16.Name = "xrTableRow16";
|
||||
this.xrTableRow16.Weight = 0.085D;
|
||||
//
|
||||
// lblDifferenzrechnungText
|
||||
//
|
||||
this.lblDifferenzrechnungText.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblDifferenzrechnungText.Multiline = true;
|
||||
this.lblDifferenzrechnungText.Name = "lblDifferenzrechnungText";
|
||||
this.lblDifferenzrechnungText.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblDifferenzrechnungText.StylePriority.UseBorders = false;
|
||||
this.lblDifferenzrechnungText.StylePriority.UsePadding = false;
|
||||
this.lblDifferenzrechnungText.Weight = 0.78314100999098568D;
|
||||
//
|
||||
// lblDifferenzrechnung
|
||||
//
|
||||
this.lblDifferenzrechnung.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblDifferenzrechnung.Multiline = true;
|
||||
this.lblDifferenzrechnung.Name = "lblDifferenzrechnung";
|
||||
this.lblDifferenzrechnung.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblDifferenzrechnung.StylePriority.UseBorders = false;
|
||||
this.lblDifferenzrechnung.StylePriority.UsePadding = false;
|
||||
this.lblDifferenzrechnung.StylePriority.UseTextAlignment = false;
|
||||
this.lblDifferenzrechnung.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
|
||||
this.lblDifferenzrechnung.Weight = 0.21685899000901443D;
|
||||
//
|
||||
// SpitzabrechnungDue
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
|
||||
73
ReportImp/ForumEV/SoziotherapieRechnung.Designer.cs
generated
73
ReportImp/ForumEV/SoziotherapieRechnung.Designer.cs
generated
@@ -37,6 +37,9 @@ namespace ForumEV
|
||||
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
|
||||
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.xrRichText9 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText8 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText7 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.xrRichText2 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
@@ -90,9 +93,9 @@ namespace ForumEV
|
||||
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrRichText9 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText8 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText7 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText9)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText8)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText7)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
@@ -101,9 +104,6 @@ namespace ForumEV
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText9)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText8)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText7)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
@@ -152,6 +152,33 @@ namespace ForumEV
|
||||
this.bottomMarginBand1.Name = "bottomMarginBand1";
|
||||
this.bottomMarginBand1.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText9
|
||||
//
|
||||
this.xrRichText9.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText9.LocationFloat = new DevExpress.Utils.PointFloat(0.2499898F, 0F);
|
||||
this.xrRichText9.Name = "xrRichText9";
|
||||
this.xrRichText9.SerializableRtfString = resources.GetString("xrRichText9.SerializableRtfString");
|
||||
this.xrRichText9.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText9.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText8
|
||||
//
|
||||
this.xrRichText8.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText8.LocationFloat = new DevExpress.Utils.PointFloat(226.7499F, 0F);
|
||||
this.xrRichText8.Name = "xrRichText8";
|
||||
this.xrRichText8.SerializableRtfString = resources.GetString("xrRichText8.SerializableRtfString");
|
||||
this.xrRichText8.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText8.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText7
|
||||
//
|
||||
this.xrRichText7.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText7.LocationFloat = new DevExpress.Utils.PointFloat(451.7499F, 0F);
|
||||
this.xrRichText7.Name = "xrRichText7";
|
||||
this.xrRichText7.SerializableRtfString = resources.GetString("xrRichText7.SerializableRtfString");
|
||||
this.xrRichText7.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText7.StylePriority.UseFont = false;
|
||||
//
|
||||
// Page1
|
||||
//
|
||||
this.Page1.BorderWidth = 2F;
|
||||
@@ -333,6 +360,7 @@ namespace ForumEV
|
||||
this.xrTableCell7.StylePriority.UseFont = false;
|
||||
this.xrTableCell7.StylePriority.UsePadding = false;
|
||||
this.xrTableCell7.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell7.Text = "490517594";
|
||||
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell7.Weight = 0.53122488360866615D;
|
||||
//
|
||||
@@ -859,33 +887,6 @@ namespace ForumEV
|
||||
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell5.Weight = 0.41733623261820113D;
|
||||
//
|
||||
// xrRichText9
|
||||
//
|
||||
this.xrRichText9.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText9.LocationFloat = new DevExpress.Utils.PointFloat(0.2499898F, 0F);
|
||||
this.xrRichText9.Name = "xrRichText9";
|
||||
this.xrRichText9.SerializableRtfString = resources.GetString("xrRichText9.SerializableRtfString");
|
||||
this.xrRichText9.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText9.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText8
|
||||
//
|
||||
this.xrRichText8.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText8.LocationFloat = new DevExpress.Utils.PointFloat(226.7499F, 0F);
|
||||
this.xrRichText8.Name = "xrRichText8";
|
||||
this.xrRichText8.SerializableRtfString = resources.GetString("xrRichText8.SerializableRtfString");
|
||||
this.xrRichText8.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText8.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText7
|
||||
//
|
||||
this.xrRichText7.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText7.LocationFloat = new DevExpress.Utils.PointFloat(451.7499F, 0F);
|
||||
this.xrRichText7.Name = "xrRichText7";
|
||||
this.xrRichText7.SerializableRtfString = resources.GetString("xrRichText7.SerializableRtfString");
|
||||
this.xrRichText7.SizeF = new System.Drawing.SizeF(225F, 97.29169F);
|
||||
this.xrRichText7.StylePriority.UseFont = false;
|
||||
//
|
||||
// SoziotherapieRechnung
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -908,6 +909,9 @@ namespace ForumEV
|
||||
this.Version = "23.2";
|
||||
xrWatermark1.Id = "Watermark1";
|
||||
this.Watermarks.Add(xrWatermark1);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText9)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText8)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText7)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
|
||||
@@ -916,9 +920,6 @@ namespace ForumEV
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText9)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText8)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText7)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
|
||||
@@ -23,6 +23,14 @@ namespace LebenshilfeStade.Invoicing
|
||||
{
|
||||
var invoiceItem = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
|
||||
// Sammelbegriffe für komp. Assistenz, qual. Assistenz und komp. Elternassistenz
|
||||
if (iServiceRecord.ServiceDescription.CategoryName.ToLower().Contains("assistenz kompensatorisch"))
|
||||
invoiceItem.ItemDescription = "komp. Fachleistungsstunden";
|
||||
if (iServiceRecord.ServiceDescription.CategoryName.ToLower().Contains("assistenz qualifiziert"))
|
||||
invoiceItem.ItemDescription = "qual. Fachleistungsstunden";
|
||||
if (iServiceRecord.ServiceDescription.CategoryName.ToLower().Contains("elternassistenz kompensatorisch"))
|
||||
invoiceItem.ItemDescription = "komp. Elternassistenz";
|
||||
|
||||
var crp = scap.CostBearer2SupportConcept.CostBearer.CostRatePeriods;
|
||||
if (crp != null && crp.Count > 0)
|
||||
{
|
||||
|
||||
@@ -30,9 +30,9 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
|
||||
DevExpress.XtraReports.UI.XRSummary xrSummary2 = new DevExpress.XtraReports.UI.XRSummary();
|
||||
DevExpress.XtraReports.UI.XRSummary xrSummary3 = new DevExpress.XtraReports.UI.XRSummary();
|
||||
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
|
||||
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
@@ -44,6 +44,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
@@ -57,6 +58,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.columnWegepauschaleQuali = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
@@ -91,6 +93,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrLabel16 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrPictureBox3 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -103,10 +106,9 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.wennGruppeAnzPersonen = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.Erlaeuterung = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.Gruppenangebot = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
@@ -200,7 +202,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell14.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell14.Text = "xrTableCell14";
|
||||
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell14.Weight = 0.0818910743966614D;
|
||||
this.xrTableCell14.Weight = 0.081322979871435414D;
|
||||
//
|
||||
// xrTableCell2
|
||||
//
|
||||
@@ -211,12 +213,12 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell2.StylePriority.UseFont = false;
|
||||
this.xrTableCell2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell2.Weight = 0.11870551698505645D;
|
||||
this.xrTableCell2.Weight = 0.11927361151028244D;
|
||||
//
|
||||
// xrTableCell10
|
||||
//
|
||||
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice3")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Gruppenangebot")});
|
||||
this.xrTableCell10.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell10.Name = "xrTableCell10";
|
||||
this.xrTableCell10.StylePriority.UseFont = false;
|
||||
@@ -236,6 +238,20 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell12.Weight = 0.10843058021456664D;
|
||||
//
|
||||
// xrTableCell16
|
||||
//
|
||||
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.GroupRoundedDuration")});
|
||||
this.xrTableCell16.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell16.Multiline = true;
|
||||
this.xrTableCell16.Name = "xrTableCell16";
|
||||
this.xrTableCell16.StylePriority.UseFont = false;
|
||||
this.xrTableCell16.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell16.Text = "xrTableCell16";
|
||||
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell16.TextFormatString = "{0:#.##}";
|
||||
this.xrTableCell16.Weight = 0.1626457680127131D;
|
||||
//
|
||||
// xrTableCell15
|
||||
//
|
||||
this.xrTableCell15.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
@@ -287,7 +303,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
// xrTableCell50
|
||||
//
|
||||
this.xrTableCell50.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Erlaeuterung")});
|
||||
this.xrTableCell50.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell50.Name = "xrTableCell50";
|
||||
this.xrTableCell50.StylePriority.UseBorders = false;
|
||||
@@ -433,6 +449,25 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell6.Weight = 0.23987974563492123D;
|
||||
//
|
||||
// xrTableCell9
|
||||
//
|
||||
this.xrTableCell9.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrTableCell9.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell9.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrTableCell9.Multiline = true;
|
||||
this.xrTableCell9.Name = "xrTableCell9";
|
||||
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 0, 0, 0, 100F);
|
||||
this.xrTableCell9.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell9.StylePriority.UseBorders = false;
|
||||
this.xrTableCell9.StylePriority.UseFont = false;
|
||||
this.xrTableCell9.StylePriority.UsePadding = false;
|
||||
this.xrTableCell9.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell9.Text = "Summe: Dauer in Minuten direkt mit mehreren IP bei Gruppenangebot ";
|
||||
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell9.Weight = 0.35981960443848743D;
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
this.xrTableCell7.BackColor = System.Drawing.Color.Transparent;
|
||||
@@ -955,6 +990,31 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.GroupFooter1.KeepTogether = true;
|
||||
this.GroupFooter1.Name = "GroupFooter1";
|
||||
//
|
||||
// xrLabel12
|
||||
//
|
||||
this.xrLabel12.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel12.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel12.BorderWidth = 2F;
|
||||
this.xrLabel12.CanGrow = false;
|
||||
this.xrLabel12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.GroupRoundedDuration")});
|
||||
this.xrLabel12.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(364.9999F, 0F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(121.0002F, 21F);
|
||||
this.xrLabel12.StylePriority.UseBackColor = false;
|
||||
this.xrLabel12.StylePriority.UseBorders = false;
|
||||
this.xrLabel12.StylePriority.UseBorderWidth = false;
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.StylePriority.UsePadding = false;
|
||||
this.xrLabel12.StylePriority.UseTextAlignment = false;
|
||||
xrSummary1.FormatString = "{0:0.##}";
|
||||
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
|
||||
this.xrLabel12.Summary = xrSummary1;
|
||||
this.xrLabel12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrLabel11
|
||||
//
|
||||
this.xrLabel11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
@@ -1150,68 +1210,23 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.wennGruppeAnzPersonen.Expression = "Iif([CustomerCount] > 1,[CustomerCount],\'\')";
|
||||
this.wennGruppeAnzPersonen.Name = "wennGruppeAnzPersonen";
|
||||
//
|
||||
// xrTableCell9
|
||||
// Erlaeuterung
|
||||
//
|
||||
this.xrTableCell9.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrTableCell9.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell9.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrTableCell9.Multiline = true;
|
||||
this.xrTableCell9.Name = "xrTableCell9";
|
||||
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 0, 0, 0, 100F);
|
||||
this.xrTableCell9.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell9.StylePriority.UseBorders = false;
|
||||
this.xrTableCell9.StylePriority.UseFont = false;
|
||||
this.xrTableCell9.StylePriority.UsePadding = false;
|
||||
this.xrTableCell9.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell9.Text = "Summe: Dauer in Minuten direkt mit mehreren IP bei Gruppenangebot ";
|
||||
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell9.Weight = 0.35981960443848743D;
|
||||
this.Erlaeuterung.DataMember = "Services";
|
||||
this.Erlaeuterung.Expression = "Iif([StartDate].[Year] >= 2026 && [StartDate].[Month] >= 2, [Notice3] , [Notice])" +
|
||||
"\n";
|
||||
this.Erlaeuterung.Name = "Erlaeuterung";
|
||||
//
|
||||
// xrTableCell16
|
||||
// Gruppenangebot
|
||||
//
|
||||
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.GroupRoundedDuration")});
|
||||
this.xrTableCell16.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell16.Multiline = true;
|
||||
this.xrTableCell16.Name = "xrTableCell16";
|
||||
this.xrTableCell16.StylePriority.UseFont = false;
|
||||
this.xrTableCell16.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell16.Text = "xrTableCell16";
|
||||
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell16.TextFormatString = "{0:#.##}";
|
||||
this.xrTableCell16.Weight = 0.1626457680127131D;
|
||||
this.Gruppenangebot.DataMember = "Services";
|
||||
this.Gruppenangebot.Expression = "Iif([IsGroup] == true,\'1\',\'\')";
|
||||
this.Gruppenangebot.Name = "Gruppenangebot";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// xrLabel12
|
||||
//
|
||||
this.xrLabel12.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel12.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel12.BorderWidth = 2F;
|
||||
this.xrLabel12.CanGrow = false;
|
||||
this.xrLabel12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.GroupRoundedDuration")});
|
||||
this.xrLabel12.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(364.9999F, 0F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(121.0002F, 21F);
|
||||
this.xrLabel12.StylePriority.UseBackColor = false;
|
||||
this.xrLabel12.StylePriority.UseBorders = false;
|
||||
this.xrLabel12.StylePriority.UseBorderWidth = false;
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.StylePriority.UsePadding = false;
|
||||
this.xrLabel12.StylePriority.UseTextAlignment = false;
|
||||
xrSummary1.FormatString = "{0:0.##}";
|
||||
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
|
||||
this.xrLabel12.Summary = xrSummary1;
|
||||
this.xrLabel12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// Leistungsnachweis2024
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -1223,7 +1238,9 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.GroupFooter1});
|
||||
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
|
||||
this.fieldKontaktArt,
|
||||
this.wennGruppeAnzPersonen});
|
||||
this.wennGruppeAnzPersonen,
|
||||
this.Erlaeuterung,
|
||||
this.Gruppenangebot});
|
||||
this.DataSource = this.bindingSource1;
|
||||
this.DisplayName = "Leistungsnachweis";
|
||||
this.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
|
||||
@@ -1322,5 +1339,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.CalculatedField Erlaeuterung;
|
||||
private DevExpress.XtraReports.UI.CalculatedField Gruppenangebot;
|
||||
}
|
||||
}
|
||||
@@ -46,11 +46,11 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
minuten += sd.Minutes;
|
||||
ServicesOverviewRO.CreateSignatureString(sd);
|
||||
|
||||
sd.Notice3 = "";
|
||||
if (sd.IsGroup)
|
||||
{
|
||||
sd.Notice3 = "1";
|
||||
}
|
||||
//sd.Notice3 = "";
|
||||
//if (sd.IsGroup)
|
||||
//{
|
||||
// sd.Notice3 = "1";
|
||||
//}
|
||||
|
||||
// Felder für Wegepauschale setzen (Wenn FLS FaceToFace und keine Gruppe)
|
||||
sd.Notice4 = "";
|
||||
|
||||
@@ -64,7 +64,6 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.columnWegepauschaleQuali = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -107,6 +106,9 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.wennGruppeAnzPersonen = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.Erlaeuterung = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.Gruppenangebot = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
@@ -216,7 +218,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
// xrTableCell10
|
||||
//
|
||||
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice3")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Gruppenangebot")});
|
||||
this.xrTableCell10.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell10.Name = "xrTableCell10";
|
||||
this.xrTableCell10.StylePriority.UseFont = false;
|
||||
@@ -301,7 +303,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
// xrTableCell50
|
||||
//
|
||||
this.xrTableCell50.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Erlaeuterung")});
|
||||
this.xrTableCell50.Font = new DevExpress.Drawing.DXFont("Calibri", 10F);
|
||||
this.xrTableCell50.Name = "xrTableCell50";
|
||||
this.xrTableCell50.StylePriority.UseBorders = false;
|
||||
@@ -558,10 +560,6 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell32.Weight = 1.0176190645501537D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// formattingRuleStartDate
|
||||
//
|
||||
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
|
||||
@@ -1212,6 +1210,23 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.wennGruppeAnzPersonen.Expression = "Iif([CustomerCount] > 1,[CustomerCount],\'\')";
|
||||
this.wennGruppeAnzPersonen.Name = "wennGruppeAnzPersonen";
|
||||
//
|
||||
// Erlaeuterung
|
||||
//
|
||||
this.Erlaeuterung.DataMember = "Services";
|
||||
this.Erlaeuterung.Expression = "Iif([StartDate].[Year] >= 2026 & [StartDate].[Month] >= 2, [Notice3] , [Notice])\n" +
|
||||
"";
|
||||
this.Erlaeuterung.Name = "Erlaeuterung";
|
||||
//
|
||||
// Gruppenangebot
|
||||
//
|
||||
this.Gruppenangebot.DataMember = "Services";
|
||||
this.Gruppenangebot.Expression = "Iif([IsGroup] == true,\'1\',\'\')";
|
||||
this.Gruppenangebot.Name = "Gruppenangebot";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// Leistungsnachweis2024Ass
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -1223,7 +1238,9 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.GroupFooter1});
|
||||
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
|
||||
this.fieldKontaktArt,
|
||||
this.wennGruppeAnzPersonen});
|
||||
this.wennGruppeAnzPersonen,
|
||||
this.Erlaeuterung,
|
||||
this.Gruppenangebot});
|
||||
this.DataSource = this.bindingSource1;
|
||||
this.DisplayName = "Leistungsnachweis";
|
||||
this.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
|
||||
@@ -1322,5 +1339,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.CalculatedField Erlaeuterung;
|
||||
private DevExpress.XtraReports.UI.CalculatedField Gruppenangebot;
|
||||
}
|
||||
}
|
||||
@@ -46,11 +46,11 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
minuten += sd.Minutes;
|
||||
ServicesOverviewRO.CreateSignatureString(sd);
|
||||
|
||||
sd.Notice3 = "";
|
||||
//sd.Notice3 = "";
|
||||
sd.Notice4 = "";
|
||||
if (sd.IsGroup)
|
||||
{
|
||||
sd.Notice3 = "1";
|
||||
//sd.Notice3 = "1";
|
||||
sd.Notice4 = sd.EmployeeCount.ToString();
|
||||
}
|
||||
// Felder für Ausfallstundnen setzen
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Stundenzettel));
|
||||
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrTableServiceRecords1 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
@@ -49,7 +50,6 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
|
||||
@@ -91,11 +91,12 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.fieldArtDerLeistung = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.Erlaeuterung = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
@@ -312,10 +313,6 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.GroupHeader1.RepeatEveryPage = true;
|
||||
this.GroupHeader1.StylePriority.UseFont = false;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// formattingRuleStartDate
|
||||
//
|
||||
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
|
||||
@@ -804,10 +801,14 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
// Erlaeuterung
|
||||
//
|
||||
this.Erlaeuterung.DataMember = "Services";
|
||||
this.Erlaeuterung.Expression = "Iif([StartDate].[Year] >= 2026, [Notice3] , [Notice])";
|
||||
this.Erlaeuterung.Expression = "Iif([StartDate].[Year] >= 2026 & [StartDate].[Month] >= 2, [Notice3] , [Notice])";
|
||||
this.Erlaeuterung.FieldType = DevExpress.XtraReports.UI.FieldType.String;
|
||||
this.Erlaeuterung.Name = "Erlaeuterung";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// Stundenzettel
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -834,11 +835,13 @@ namespace LebenshilfeWolfsburg.Reporting
|
||||
this.PageWidth = 1169;
|
||||
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
|
||||
this.Version = "23.2";
|
||||
xrWatermark1.Id = "Watermark1";
|
||||
this.Watermarks.Add(xrWatermark1);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
|
||||
145
ReportImp/MuellestumpeReports/CustomReportCreator.cs
Normal file
145
ReportImp/MuellestumpeReports/CustomReportCreator.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared.Core;
|
||||
using DevExpress.XtraReports.UI;
|
||||
|
||||
namespace BeWo.MuellestumpeReports
|
||||
{
|
||||
public class CustomReportCreator : DefaultReportCreator
|
||||
{
|
||||
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
|
||||
{
|
||||
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
|
||||
|
||||
if (lROs.Count > 0)
|
||||
{
|
||||
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
|
||||
if (rootReport.Pages.Count == 0)
|
||||
{
|
||||
rootReport.CreateDocument();
|
||||
}
|
||||
|
||||
for (int i = 1; i < lROs.Count; i++)
|
||||
{
|
||||
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
|
||||
if (lNext.Pages.Count == 0)
|
||||
{
|
||||
lNext.CreateDocument();
|
||||
}
|
||||
rootReport.Pages.AddRange(lNext.Pages);
|
||||
}
|
||||
return rootReport;
|
||||
}
|
||||
return new XtraReport();
|
||||
}
|
||||
|
||||
|
||||
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
|
||||
{
|
||||
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
|
||||
|
||||
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
|
||||
}
|
||||
|
||||
public override XtraReport CreateServiceOverviewReportForCustomers(IList<long> customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
|
||||
{
|
||||
var roList = new List<ServicesOverviewRO>();
|
||||
|
||||
foreach (var coid in customerOids)
|
||||
{
|
||||
var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
|
||||
if (ro != null)
|
||||
{
|
||||
roList.Add(ro);
|
||||
}
|
||||
}
|
||||
|
||||
if (roList.Count > 0)
|
||||
{
|
||||
var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid);
|
||||
rootReport.CreateDocument();
|
||||
for (int i = 1; i < roList.Count; i++)
|
||||
{
|
||||
var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid);
|
||||
lNext.CreateDocument();
|
||||
rootReport.Pages.AddRange(lNext.Pages);
|
||||
}
|
||||
|
||||
return rootReport;
|
||||
}
|
||||
|
||||
return new XtraReport();
|
||||
}
|
||||
|
||||
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
|
||||
{
|
||||
ServicesOverviewRO defaultRo = ServicesOverviewRO.CopyFromRO(ro);
|
||||
ServicesOverviewRO pflegeRo = ServicesOverviewRO.CopyFromRO(ro);
|
||||
|
||||
if (ro.Services != null)
|
||||
{
|
||||
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
|
||||
{
|
||||
ServicesOverviewRO.CreateSignatureString(s);
|
||||
|
||||
if (s.ServiceCategory.ToLower().Contains("verhinderungspflege") || s.ServiceCategory.ToLower().Contains("entlastungsleistung"))
|
||||
{
|
||||
pflegeRo.Services.Add(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
defaultRo.Services.Add(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
XtraReport report = null;
|
||||
report = AddReportToReport<Stundenzettel>(report, defaultRo);
|
||||
report = AddReportToReport<QuittierungsbelegPflege>(report, pflegeRo);
|
||||
|
||||
if (report == null)
|
||||
report = new XtraReport();
|
||||
|
||||
return report;
|
||||
}
|
||||
|
||||
public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, string reportId)
|
||||
{
|
||||
return CreateServicesOverviewReportForRo(ro, null);
|
||||
}
|
||||
|
||||
private XtraReport AddReportToReport<T>(XtraReport report, ServicesOverviewRO ro) where T : XtraReport, IBeWoReport<ServicesOverviewRO>, new()
|
||||
{
|
||||
if (ro.Services.Count > 0)
|
||||
{
|
||||
if (report == null)
|
||||
{
|
||||
report = new T();
|
||||
((T)report).SetReportDataSource(ro);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (report.Pages.Count == 0)
|
||||
{
|
||||
report.CreateDocument();
|
||||
}
|
||||
|
||||
XtraReport newReport = new T();
|
||||
((T)newReport).SetReportDataSource(ro);
|
||||
|
||||
newReport.CreateDocument();
|
||||
report.Pages.AddRange(newReport.Pages);
|
||||
}
|
||||
}
|
||||
return report;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -84,6 +84,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomerMitarbeiterstundenkontoBerechnung.cs" />
|
||||
<Compile Include="CustomReportCreator.cs" />
|
||||
<Compile Include="InvoiceCustomerReport.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -102,6 +103,12 @@
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="QuittierungsbelegPflege.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="QuittierungsbelegPflege.designer.cs">
|
||||
<DependentUpon>QuittierungsbelegPflege.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ServicesOverviewReport.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -121,6 +128,7 @@
|
||||
<Compile Include="SettlementReport2.Designer.cs">
|
||||
<DependentUpon>SettlementReport2.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Statistics\CustomServiceRecordStatisticFactory.cs" />
|
||||
<Compile Include="Teamstundenkonto.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -141,6 +149,9 @@
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="QuittierungsbelegPflege.resx">
|
||||
<DependentUpon>QuittierungsbelegPflege.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ServicesOverviewReport.resx">
|
||||
<DependentUpon>ServicesOverviewReport.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
89
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.cs
Normal file
89
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Report;
|
||||
using DevExpress.XtraReports.UI;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Drawing;
|
||||
using BS.Shared.Core;
|
||||
using System.IO;
|
||||
|
||||
namespace BeWo.MuellestumpeReports
|
||||
{
|
||||
public partial class QuittierungsbelegPflege : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
|
||||
{
|
||||
public QuittierungsbelegPflege()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetReportDataSource(ServicesOverviewRO pRO)
|
||||
{
|
||||
if (String.IsNullOrEmpty(pRO.ApprovedStartDate) && String.IsNullOrEmpty(pRO.ApprovedEndDate))
|
||||
{
|
||||
pRO.ApprovedStartDate = pRO.RequestedStartDate;
|
||||
pRO.ApprovedEndDate = pRO.RequestedEndDate;
|
||||
}
|
||||
|
||||
if (pRO.Services != null)
|
||||
{
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
|
||||
double flMinutes = 0;
|
||||
double fkMinutes = 0;
|
||||
|
||||
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
|
||||
{
|
||||
if (s.IsBillable || s.ServiceDescription.ToLower().Contains("fehlkontakt") || s.ServiceCategory.ToLower().Contains("fehlkontakt"))
|
||||
{
|
||||
ServicesOverviewRO.CreateSignatureString(s);
|
||||
|
||||
if (s.ServiceDescription.ToLower().Contains("fehlkontakt") || s.ServiceCategory.ToLower().Contains("fehlkontakt") || (s.ProzentAbrechenbar < 100))
|
||||
{
|
||||
s.Notice4 = String.Format("{0}", s.Minutes);
|
||||
fkMinutes += s.Minutes;
|
||||
}
|
||||
else
|
||||
{
|
||||
s.Notice3 = String.Format("{0}", s.Minutes);
|
||||
flMinutes += s.Minutes;
|
||||
}
|
||||
|
||||
servicesBillable.Add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// lblSumWithFactor.Text = String.Format("{0:0.##} x 1,2 = {1:0.##} Std.", flMinutes / 60, flMinutes / 60 * 1.2);
|
||||
|
||||
pRO.Services = servicesBillable;
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(pRO.AbsenceTimes))
|
||||
{
|
||||
lblHatAbwesenheiten.Text = "X";
|
||||
lblAbsencetimes.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
pRO.AbsenceTimes = "Krankenhausaufenthalte/stat. Rehamaßnahmen:\n" + pRO.AbsenceTimes;
|
||||
lblHatAbwesenheiten.Visible = false;
|
||||
lblKeineAbwesenheiten.Visible = false;
|
||||
}
|
||||
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
private void picSignature_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
{
|
||||
using (var memoryStream = new MemoryStream(byteArrayIn))
|
||||
{
|
||||
return Image.FromStream(memoryStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1005
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.designer.cs
generated
Normal file
1005
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
123
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.resx
Normal file
123
ReportImp/MuellestumpeReports/QuittierungsbelegPflege.resx
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,533 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace MuellestumpeReports.Statistics
|
||||
{
|
||||
public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
|
||||
{
|
||||
private bool containsPflege = false;
|
||||
|
||||
private int hilfeplanJahr = DateTime.Now.Year;
|
||||
|
||||
public CustomServiceRecordStatisticFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
|
||||
{
|
||||
var appSettings = BeWo.Service.Configuration.AppSettings.GetUserAppSettings();
|
||||
|
||||
if (appSettings.LastSelectedServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl)
|
||||
{
|
||||
var selectedMonth = appSettings.LastSelectedServiceRecordMonth;
|
||||
statisticsDate = selectedMonth.AddMonths(1).AddDays(-1);
|
||||
}
|
||||
|
||||
var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
|
||||
|
||||
int rowCount = 4;
|
||||
|
||||
String monat = String.Format("{0:MMMM yyyy}", statisticsDate);
|
||||
|
||||
var dc = new ServiceRecordStatisticsInfoDC();
|
||||
dc.Header = new string[rowCount];
|
||||
dc.Header[0] = "Bewilligungszeitraum:";
|
||||
dc.Header[1] = "Geleistet im " + monat + "/Gesamt:";
|
||||
dc.Header[2] = "Bewilligt im " + monat + "/Gesamt:";
|
||||
dc.Header[3] = "Frei im " + monat + "/Gesamt:";
|
||||
|
||||
if (containsPflege)
|
||||
{
|
||||
dc.Header[0] = "Bewilligungszeitraum:";
|
||||
dc.Header[1] = "Geleistet im " + monat + ":";
|
||||
dc.Header[2] = "Bewilligt im " + monat + ":";
|
||||
dc.Header[3] = "Frei im " + monat + ":";
|
||||
}
|
||||
else
|
||||
{
|
||||
return base.GetServiceRecordStatisticInfo(costBearer2SupportConceptOid, statisticsDate);
|
||||
}
|
||||
|
||||
dc.ForegroundColor = new string[rowCount];
|
||||
for (int i = 0; i < rowCount; i++)
|
||||
{
|
||||
dc.ForegroundColor[i] = "#FF2B508B";
|
||||
}
|
||||
|
||||
dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
|
||||
|
||||
if (stats != null)
|
||||
{
|
||||
if (containsPflege && stats.PeriodStatistics.Count > 1)
|
||||
{
|
||||
//Fasse Einzelstatistiken zusammen
|
||||
var first = stats.PeriodStatistics[0];
|
||||
|
||||
for (int i = 1; i < stats.PeriodStatistics.Count; i++)
|
||||
{
|
||||
var ps = stats.PeriodStatistics[i];
|
||||
first.FixedAmountApprovedPerInterval = (first.FixedAmountApprovedPerInterval ?? 0) + (ps.FixedAmountApprovedPerInterval ?? 0);
|
||||
first.AmountConsumedThisInterval = first.AmountConsumedThisInterval + ps.AmountConsumedThisInterval;
|
||||
|
||||
}
|
||||
stats.PeriodStatistics = new List<SupportConceptPeriodStatisticsDC>();
|
||||
stats.PeriodStatistics.Add(first);
|
||||
}
|
||||
|
||||
foreach (var pdc in stats.PeriodStatistics)
|
||||
{
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return dc;
|
||||
}
|
||||
|
||||
public override SupportConceptStatisticsDC CreateSupportConceptStatisticsImpl(long costBearer2SupportConceptOid,
|
||||
DateTime statisticsDate, long? ignoreServiceRecordOid)
|
||||
{
|
||||
var stats = base.CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate, ignoreServiceRecordOid);
|
||||
|
||||
CalculateFixedAmountBudget(stats, statisticsDate);
|
||||
|
||||
return stats;
|
||||
}
|
||||
|
||||
public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
|
||||
{
|
||||
int rowCount = 4;
|
||||
|
||||
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(rowCount);
|
||||
|
||||
if (periodStats.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
|
||||
{
|
||||
bool showDateRange = false;
|
||||
if (stats.StatisticsStartDate != periodStats.SupportConceptApprovalPeriod.StartDate ||
|
||||
stats.StatisticsEndDate != periodStats.SupportConceptApprovalPeriod.EndDate)
|
||||
{
|
||||
showDateRange = true;
|
||||
}
|
||||
|
||||
if (showDateRange)
|
||||
{
|
||||
if (!periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
|
||||
{
|
||||
dc.LeftValues[0] = String.Format("{0}: ab {1:dd.MM.yy}",
|
||||
periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
|
||||
periodStats.SupportConceptApprovalPeriod.StartDate);
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}",
|
||||
periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
|
||||
periodStats.SupportConceptApprovalPeriod.StartDate,
|
||||
periodStats.SupportConceptApprovalPeriod.EndDate);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.LeftValues[0] = periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}",
|
||||
periodStats.SupportConceptApprovalPeriod.StartDate,
|
||||
periodStats.SupportConceptApprovalPeriod.EndDate);
|
||||
}
|
||||
}
|
||||
|
||||
if (containsPflege)
|
||||
{
|
||||
dc.LeftValues[1] = "";
|
||||
dc.RightValues[1] = String.Format("{0:c}", periodStats.AmountConsumedThisInterval);
|
||||
dc.LeftValues[2] = "";
|
||||
dc.RightValues[2] = String.Format("{0:c}", periodStats.FixedAmountApprovedPerInterval);
|
||||
|
||||
decimal restBetrag = (periodStats.FixedAmountApprovedPerInterval ?? 0) - periodStats.AmountConsumedThisInterval;
|
||||
|
||||
dc.LeftValues[3] = ""; //String.Format("{0:c}", periodStats.FixedAmountApprovedPerInterval - periodStats.AmountConsumedThisInterval);
|
||||
dc.RightValues[3] = String.Format("{0:c}", restBetrag);
|
||||
|
||||
if (periodStats.FixedAmountApprovedPerInterval - periodStats.AmountConsumedThisInterval < 0)
|
||||
{
|
||||
dc.LeftValueColors[3] = "#FFFF0000";
|
||||
}
|
||||
if (restBetrag < 0)
|
||||
{
|
||||
dc.RightValueColors[3] = "#FFFF0000";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.LeftValues[1] = String.Format("{0:0.00} Std.", periodStats.MinutesProvidedThisMonth / 60);
|
||||
dc.RightValues[1] = String.Format("{0:0.00} Std.", periodStats.MinutesProvidedTotalRounded / 60);
|
||||
|
||||
dc.LeftValues[2] = String.Format("{0:0.00} Std.", periodStats.MinutesApprovedPerMonth / 60);
|
||||
dc.RightValues[2] = String.Format("{0:0.00} Std.", periodStats.MinutesApprovedTotal / 60);
|
||||
|
||||
dc.LeftValues[3] = String.Format("{0:0.00} Std.", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60);
|
||||
dc.RightValues[3] = String.Format("{0:0.00} Std.", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
|
||||
|
||||
if (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth < 0)
|
||||
{
|
||||
dc.LeftValueColors[3] = "#FFFF0000";
|
||||
}
|
||||
if (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded < 0)
|
||||
{
|
||||
dc.RightValueColors[3] = "#FFFF0000";
|
||||
}
|
||||
}
|
||||
|
||||
return dc;
|
||||
}
|
||||
|
||||
public override SupportConceptStatisticsDC CreateSupportConceptStatistics(long costBearer2SupportConceptOid, DateTime statisticsDate)
|
||||
{
|
||||
bool isPflege = false;
|
||||
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(costBearer2SupportConceptOid);
|
||||
|
||||
foreach (var item in c2s.ApprovalPeriodList)
|
||||
{
|
||||
if (item.ServiceCategory != null && (item.ServiceCategory.Name.ToLower().Contains("verhinderungspflege")
|
||||
|| item.ServiceCategory.Name.ToLower().Contains("entlastungsleistung")))
|
||||
{
|
||||
isPflege = true;
|
||||
}
|
||||
}
|
||||
if (!isPflege)
|
||||
{
|
||||
return base.CreateSupportConceptStatistics(costBearer2SupportConceptOid, statisticsDate);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override decimal GetApprovedMinutesPerMonth(SupportConceptPeriodStatisticsDC periodStats)
|
||||
{
|
||||
if (periodStats.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue &&
|
||||
periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue)
|
||||
{
|
||||
var be = periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value;
|
||||
switch (periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value)
|
||||
{
|
||||
case SupportConceptApprovalInterval.Daily:
|
||||
be *= 30;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Weekly:
|
||||
be *= 4.34m;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Fortnightly:
|
||||
be *= 4.34m / 2;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Monthly:
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Quarterly:
|
||||
be /= 3;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.HalfYearly:
|
||||
be /= 6;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Yearly:
|
||||
be /= 12;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
return be*60;
|
||||
}
|
||||
}
|
||||
return base.GetApprovedMinutesPerMonth(periodStats);
|
||||
}
|
||||
|
||||
public override decimal GetApprovedMinutesPerMonth(SupportConceptStatisticsDC stats)
|
||||
{
|
||||
if (stats.PeriodStatistics != null)
|
||||
{
|
||||
return stats.PeriodStatistics.Sum(p => p.MinutesApprovedPerMonth);
|
||||
}
|
||||
return base.GetApprovedMinutesPerMonth(stats);
|
||||
}
|
||||
|
||||
private void CalculateFixedAmountBudget(SupportConceptStatisticsDC stats, DateTime date)
|
||||
{
|
||||
if (stats.PeriodStatistics != null)
|
||||
{
|
||||
foreach (var pstat in stats.PeriodStatistics)
|
||||
{
|
||||
if (pstat != null && pstat.SupportConceptApprovalPeriod != null &&
|
||||
pstat.SupportConceptApprovalPeriod.ServiceCategory != null)
|
||||
{
|
||||
bool isPflege = false;
|
||||
if (pstat.SupportConceptApprovalPeriod.ServiceCategory.Name.ToLower().Contains("verhinderungspflege")
|
||||
|| pstat.SupportConceptApprovalPeriod.ServiceCategory.Name.ToLower().Contains("entlastungsleistung"))
|
||||
{
|
||||
containsPflege = true;
|
||||
isPflege = true;
|
||||
}
|
||||
|
||||
if (!pstat.FixedAmountApprovedTotal.HasValue)
|
||||
{
|
||||
bool berechneGesamt = !isPflege;
|
||||
BerechneBewilligungsBetrag(pstat, date, berechneGesamt);
|
||||
}
|
||||
|
||||
if (isPflege)
|
||||
{
|
||||
if (pstat.SupportConceptApprovalPeriod.StartDate.HasValue &&
|
||||
pstat.SupportConceptApprovalPeriod.StartDate.Value < date)
|
||||
{
|
||||
|
||||
CalculatePflegeBudget(pstat, date);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CalculatePflegeBudget(SupportConceptPeriodStatisticsDC pstat, DateTime date)
|
||||
{
|
||||
if (pstat != null && pstat.SupportConceptApprovalPeriod.ApprovedFixedAmount.HasValue)
|
||||
{
|
||||
if (pstat.SupportConceptApprovalPeriod.MonthlyPayment.HasValue && pstat.SupportConceptApprovalPeriod.MonthlyPayment.Value > 0)
|
||||
{
|
||||
if (!pstat.Custom1.HasValue)
|
||||
{
|
||||
decimal payment = pstat.SupportConceptApprovalPeriod.MonthlyPayment.Value;
|
||||
pstat.Custom1 = payment;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pstat.SupportConceptApprovalPeriod.MonthlyPayment.HasValue)
|
||||
{
|
||||
if (pstat.SupportConceptApprovalPeriod.ServiceCategory != null)
|
||||
{
|
||||
var scap = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(
|
||||
pstat.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value);
|
||||
var customer = scap.CostBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
BerechneRestBetragVorjahr(customer, pstat,
|
||||
pstat.SupportConceptApprovalPeriod.StartDate.Value.Year);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void CalculateFixedAmountBudget(ServiceRecord sr, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
|
||||
{
|
||||
if (periodStats != null && periodStats.SupportConceptApprovalPeriod.ApprovedFixedAmount.HasValue)
|
||||
{
|
||||
decimal preis = 0;
|
||||
preis = GetPreisVonServiceDescription(sr.ServiceDescription, sr.Start.Value) ?? 0;
|
||||
preis *= (sr.RoundedDuration/60);
|
||||
var fahrtkosten = GetPreis("Hausbesuchspauschale", sr.Start.Value); //Einmal Fahrtkosten pro Tag an dem ein Termin stattgefunden hat
|
||||
var firstOfMonthDt = new DateTime(statisticsDate.Year, statisticsDate.Month, 1);
|
||||
|
||||
if (sr.Start >= firstOfMonthDt && sr.Start < firstOfMonthDt.AddMonths(1))
|
||||
{
|
||||
periodStats.AmountConsumedThisInterval += preis;
|
||||
if (!periodStats.ServiceRecords.Any(r => r.ServiceRecordOid != sr.Oid
|
||||
&& r.ServiceDescription.CategoryName.ToLower().StartsWith("entlastung") && r.Start.HasValue && r.Start.Value.Date == sr.Start.Value.Date))
|
||||
periodStats.AmountConsumedThisInterval += fahrtkosten;
|
||||
}
|
||||
if (sr.GroupEmployeeCount.HasValue)
|
||||
{
|
||||
preis /= sr.GroupEmployeeCount.Value;
|
||||
}
|
||||
|
||||
periodStats.AmountConsumedTotal += preis;
|
||||
periodStats.AmountConsumedTotal += fahrtkosten;
|
||||
|
||||
var jahrBeginn = new DateTime(sr.Start.Value.Year, 1, 1);
|
||||
|
||||
if (sr.Start >= jahrBeginn && sr.Start < jahrBeginn.AddMonths(6))
|
||||
{
|
||||
periodStats.Custom3 = preis + (periodStats.Custom3 ?? 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
periodStats.Custom4 = preis + (periodStats.Custom4 ?? 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public decimal GetPreis(String preisBezeichnung, DateTime datum)
|
||||
{
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
var preis = preise.Where(p => p.Name.Contains(preisBezeichnung)).FirstOrDefault();
|
||||
if (preis != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(preis.CostRatePeriods);
|
||||
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
return cr.CostRateValue.Value;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private decimal? GetPreisVonServiceDescription(ServiceDescription serviceDescription, DateTime monat)
|
||||
{
|
||||
if (serviceDescription != null && serviceDescription.CostRatePeriods != null)
|
||||
{
|
||||
var crpDcList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(serviceDescription.CostRatePeriods);
|
||||
|
||||
var crp = crpDcList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, monat);
|
||||
|
||||
if (crp != null)
|
||||
{
|
||||
return crp.CostRateValue;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void BerechneBewilligungsBetrag(SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate, bool berechneGesamtBewilligung)
|
||||
{
|
||||
decimal monate = 0;
|
||||
decimal tage = 0;
|
||||
if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
|
||||
{
|
||||
DateTime start = periodStats.SupportConceptApprovalPeriod.StartDate.Value;
|
||||
DateTime end = periodStats.SupportConceptApprovalPeriod.EndDate.Value;
|
||||
|
||||
if (berechneGesamtBewilligung)
|
||||
{
|
||||
while (start < end)
|
||||
{
|
||||
monate++;
|
||||
start = start.AddMonths(1);
|
||||
}
|
||||
tage = (decimal)end.Subtract(periodStats.SupportConceptApprovalPeriod.StartDate.Value).TotalDays + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (statisticsDate < end)
|
||||
{
|
||||
end = new DateTime(statisticsDate.Year, statisticsDate.Month, 1);
|
||||
}
|
||||
|
||||
while (start < end)
|
||||
{
|
||||
monate++;
|
||||
start = start.AddMonths(1);
|
||||
}
|
||||
|
||||
if (statisticsDate < periodStats.SupportConceptApprovalPeriod.EndDate.Value && statisticsDate.Day >= 15)
|
||||
{
|
||||
monate++;
|
||||
}
|
||||
|
||||
tage = (decimal)end.Subtract(
|
||||
periodStats.SupportConceptApprovalPeriod.StartDate.Value).TotalDays + 1;
|
||||
}
|
||||
|
||||
}
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.SupportConceptApprovalPeriod.ApprovedFixedAmount;
|
||||
periodStats.FixedAmountApprovedPerInterval = periodStats.FixedAmountApprovedTotal;
|
||||
|
||||
if (periodStats.SupportConceptApprovalPeriod.ApprovedFixedAmountInterval.HasValue)
|
||||
{
|
||||
switch (periodStats.SupportConceptApprovalPeriod.ApprovedFixedAmountInterval.Value)
|
||||
{
|
||||
case SupportConceptApprovalInterval.Daily:
|
||||
periodStats.FixedAmountApprovedPerInterval *= 30;
|
||||
periodStats.FixedAmountApprovedTotal = tage * periodStats.FixedAmountApprovedPerInterval;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Weekly:
|
||||
periodStats.FixedAmountApprovedPerInterval *= 4.34m;
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval*monate;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Fortnightly:
|
||||
periodStats.FixedAmountApprovedPerInterval *= (4.34m / 2);
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval * monate;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Monthly:
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval * monate;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Quarterly:
|
||||
periodStats.FixedAmountApprovedPerInterval /= 3;
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval * monate;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.HalfYearly:
|
||||
periodStats.FixedAmountApprovedPerInterval /= 6;
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval * monate;
|
||||
break;
|
||||
case SupportConceptApprovalInterval.Yearly:
|
||||
periodStats.FixedAmountApprovedPerInterval /= 12;
|
||||
periodStats.FixedAmountApprovedTotal = periodStats.FixedAmountApprovedPerInterval * monate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void BerechneRestBetragVorjahr( Customer c, SupportConceptPeriodStatisticsDC pstat, int folgeJahr)
|
||||
{
|
||||
int jahr = folgeJahr - 1;
|
||||
|
||||
foreach (var sc in c.SupportConcepts)
|
||||
{
|
||||
foreach (var c2s in sc.CostBearer2SupportConceptList)
|
||||
{
|
||||
foreach (var scap in c2s.ApprovalPeriodList)
|
||||
{
|
||||
if (scap.ApprovedFixedAmount.HasValue && scap.EndDate.HasValue && scap.EndDate.Value.Date == new DateTime(jahr, 12, 31) && scap.ServiceCategory != null && scap.ServiceCategory.Name == pstat.SupportConceptApprovalPeriod.ServiceCategory.Name)
|
||||
{
|
||||
var statsFactory = new CustomServiceRecordStatisticFactory();
|
||||
var statsVorjahr = statsFactory.CreateSupportConceptStatisticsImpl(c2s.Oid.Value, new DateTime(jahr, 12, 31));
|
||||
|
||||
if (statsVorjahr != null && statsVorjahr.PeriodStatistics != null && statsVorjahr.PeriodStatistics.Count > 0)
|
||||
{
|
||||
foreach (var pstatVj in statsVorjahr.PeriodStatistics)
|
||||
{
|
||||
if (pstatVj.SupportConceptApprovalPeriod != null &&
|
||||
pstatVj.SupportConceptApprovalPeriod.ServiceCategory != null &&
|
||||
pstatVj.SupportConceptApprovalPeriod.ServiceCategory.Name ==
|
||||
pstat.SupportConceptApprovalPeriod.ServiceCategory.Name)
|
||||
{
|
||||
decimal restVorjahr = pstatVj.Custom2 ?? 0;
|
||||
decimal dazugekommenesBudgetLaufendesJahr = pstatVj.FixedAmountApprovedTotal ?? 0;
|
||||
decimal verwendetErstesHalbjahr = pstatVj.Custom3 ?? 0;
|
||||
decimal verwendetZweitesHalbjahr = pstatVj.Custom4 ?? 0;
|
||||
decimal verwendeterGesamtBetragLaufendesJahr = pstatVj.AmountConsumedTotal;
|
||||
|
||||
var insgesamtBudget = dazugekommenesBudgetLaufendesJahr;
|
||||
|
||||
var budgetMinus1Hj = insgesamtBudget - verwendetErstesHalbjahr;
|
||||
|
||||
var restBudget = budgetMinus1Hj - verwendetZweitesHalbjahr;
|
||||
|
||||
restVorjahr = restBudget;
|
||||
pstat.Custom2 = restVorjahr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,33 @@ namespace NovaSelbstbestimmtLebenUG.Invoicing
|
||||
private DateTime? accountingPeriodStart = null;
|
||||
private DateTime? accountingPeriodEnd = null;
|
||||
|
||||
public override ServiceInvoice CreateSingleInvoice(int invoiceCounter, CostBearer costBearer, DateTimeSpan invoicePeriod, CompactSupportConceptDC supportConcept, List<ServiceRecordDC> serviceRecords)
|
||||
{
|
||||
if (!supportConcept.IsDeleted && !supportConcept.IsArchived)
|
||||
{
|
||||
var invoice = new ServiceInvoice();
|
||||
|
||||
var supportConceptList = new List<CompactSupportConceptDC> { supportConcept };
|
||||
|
||||
|
||||
SetSenderInformation(invoice);
|
||||
SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
|
||||
SetSingleInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConcept);
|
||||
|
||||
SetRecipientInformation(invoice, costBearer);
|
||||
|
||||
SetServiceInvoicePeriods(invoice, invoice.InvoiceBase.CostBearer2SupportConcept, invoicePeriod,
|
||||
serviceRecords);
|
||||
|
||||
SetServiceInvoicePeriodAmounts(invoice);
|
||||
SetAmountAdvancePayments(invoice);
|
||||
|
||||
return invoice;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
|
||||
IList<CompactSupportConceptDC> supportConceptList)
|
||||
{
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
@@ -39,6 +40,7 @@
|
||||
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
|
||||
@@ -94,6 +94,11 @@ namespace BeWo.Report.DefaultReports
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblAbschlagszahlungenValue = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblEndbetragValue = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblAbschlagszahlungenText = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblEndbetragText = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
|
||||
@@ -458,7 +463,7 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrLabel15
|
||||
//
|
||||
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 169.6667F);
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 185.2917F);
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel15.SizeF = new System.Drawing.SizeF(175F, 17F);
|
||||
@@ -468,7 +473,7 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrTable4
|
||||
//
|
||||
this.xrTable4.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
|
||||
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 123.8334F);
|
||||
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 155.0834F);
|
||||
this.xrTable4.Name = "xrTable4";
|
||||
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow10,
|
||||
@@ -520,7 +525,7 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrLabel9
|
||||
//
|
||||
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("Verdana", 10F, DevExpress.Drawing.DXFontStyle.Italic);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 98.83336F);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 130.0833F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(250F, 17F);
|
||||
@@ -633,7 +638,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell33.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell33.Text = "Stunden";
|
||||
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell33.Weight = 0.2893277257020575D;
|
||||
this.xrTableCell33.Weight = 0.25367644132129874D;
|
||||
//
|
||||
// xrTableCell34
|
||||
//
|
||||
@@ -651,7 +656,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell34.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell34.Text = "Gesamt";
|
||||
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell34.Weight = 0.31923915575667006D;
|
||||
this.xrTableCell34.Weight = 0.35489044013742888D;
|
||||
//
|
||||
// DetailReport2
|
||||
//
|
||||
@@ -757,7 +762,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell44.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell44.Text = "xrTableCell44";
|
||||
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell44.Weight = 0.2893277257020575D;
|
||||
this.xrTableCell44.Weight = 0.25367644132129874D;
|
||||
//
|
||||
// xrTableCell47
|
||||
//
|
||||
@@ -773,11 +778,16 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell47.StylePriority.UsePadding = false;
|
||||
this.xrTableCell47.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell47.Weight = 0.31923915575667006D;
|
||||
this.xrTableCell47.Weight = 0.35489044013742888D;
|
||||
//
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel10,
|
||||
this.lblAbschlagszahlungenText,
|
||||
this.lblEndbetragText,
|
||||
this.lblEndbetragValue,
|
||||
this.lblAbschlagszahlungenValue,
|
||||
this.xrLabel5,
|
||||
this.xrLabel1,
|
||||
this.xrLabel9,
|
||||
@@ -790,11 +800,11 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrLabel5
|
||||
//
|
||||
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
|
||||
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 41.20833F);
|
||||
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 82.875F);
|
||||
this.xrLabel5.Multiline = true;
|
||||
this.xrLabel5.Name = "xrLabel5";
|
||||
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel5.SizeF = new System.Drawing.SizeF(677.0001F, 39.91668F);
|
||||
this.xrLabel5.SizeF = new System.Drawing.SizeF(677.0001F, 36.79167F);
|
||||
this.xrLabel5.StylePriority.UseFont = false;
|
||||
this.xrLabel5.Text = "Bitte überweisen Sie den offenen Betrag an unser Konto mit der IBAN:\r\nDE52 2805 0" +
|
||||
"100 0095 9964 27";
|
||||
@@ -802,17 +812,95 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrLabel1
|
||||
//
|
||||
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim", "Gesamtsumme: {0}")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
|
||||
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(420.9999F, 0F);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(573.1402F, 0F);
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(255.8333F, 25F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(103.8598F, 21.875F);
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.StylePriority.UsePadding = false;
|
||||
this.xrLabel1.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel1.Text = "xrLabel1";
|
||||
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrLabel1.TextFormatString = "{0}";
|
||||
//
|
||||
// lblAbschlagszahlungenValue
|
||||
//
|
||||
this.lblAbschlagszahlungenValue.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "AmountAdvancedPayments")});
|
||||
this.lblAbschlagszahlungenValue.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
|
||||
this.lblAbschlagszahlungenValue.LocationFloat = new DevExpress.Utils.PointFloat(573.1353F, 21.87496F);
|
||||
this.lblAbschlagszahlungenValue.Name = "lblAbschlagszahlungenValue";
|
||||
this.lblAbschlagszahlungenValue.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.lblAbschlagszahlungenValue.SizeF = new System.Drawing.SizeF(103.6979F, 21.87999F);
|
||||
this.lblAbschlagszahlungenValue.StylePriority.UseFont = false;
|
||||
this.lblAbschlagszahlungenValue.StylePriority.UsePadding = false;
|
||||
this.lblAbschlagszahlungenValue.StylePriority.UseTextAlignment = false;
|
||||
this.lblAbschlagszahlungenValue.Text = "xrLabel1";
|
||||
this.lblAbschlagszahlungenValue.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.lblAbschlagszahlungenValue.TextFormatString = "{0}";
|
||||
this.lblAbschlagszahlungenValue.Visible = false;
|
||||
//
|
||||
// lblEndbetragValue
|
||||
//
|
||||
this.lblEndbetragValue.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "NetClaim")});
|
||||
this.lblEndbetragValue.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.lblEndbetragValue.LocationFloat = new DevExpress.Utils.PointFloat(573.1353F, 43.755F);
|
||||
this.lblEndbetragValue.Name = "lblEndbetragValue";
|
||||
this.lblEndbetragValue.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.lblEndbetragValue.SizeF = new System.Drawing.SizeF(103.6979F, 21.87998F);
|
||||
this.lblEndbetragValue.StylePriority.UseFont = false;
|
||||
this.lblEndbetragValue.StylePriority.UsePadding = false;
|
||||
this.lblEndbetragValue.StylePriority.UseTextAlignment = false;
|
||||
this.lblEndbetragValue.Text = "xrLabel1";
|
||||
this.lblEndbetragValue.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.lblEndbetragValue.TextFormatString = "{0}";
|
||||
this.lblEndbetragValue.Visible = false;
|
||||
//
|
||||
// xrLabel10
|
||||
//
|
||||
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(198.3953F, 0F);
|
||||
this.xrLabel10.Name = "xrLabel10";
|
||||
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.xrLabel10.SizeF = new System.Drawing.SizeF(374.7449F, 21.875F);
|
||||
this.xrLabel10.StylePriority.UseFont = false;
|
||||
this.xrLabel10.StylePriority.UsePadding = false;
|
||||
this.xrLabel10.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel10.Text = "Gesamtsumme:";
|
||||
this.xrLabel10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrLabel10.TextFormatString = "Gesamtsumme";
|
||||
//
|
||||
// lblAbschlagszahlungenText
|
||||
//
|
||||
this.lblAbschlagszahlungenText.Font = new DevExpress.Drawing.DXFont("Verdana", 9F);
|
||||
this.lblAbschlagszahlungenText.LocationFloat = new DevExpress.Utils.PointFloat(198.3953F, 21.87503F);
|
||||
this.lblAbschlagszahlungenText.Name = "lblAbschlagszahlungenText";
|
||||
this.lblAbschlagszahlungenText.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.lblAbschlagszahlungenText.SizeF = new System.Drawing.SizeF(374.74F, 21.88F);
|
||||
this.lblAbschlagszahlungenText.StylePriority.UseFont = false;
|
||||
this.lblAbschlagszahlungenText.StylePriority.UsePadding = false;
|
||||
this.lblAbschlagszahlungenText.StylePriority.UseTextAlignment = false;
|
||||
this.lblAbschlagszahlungenText.Text = "abzgl. Abschlagszahlungen:";
|
||||
this.lblAbschlagszahlungenText.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.lblAbschlagszahlungenText.TextFormatString = " {0}";
|
||||
this.lblAbschlagszahlungenText.Visible = false;
|
||||
//
|
||||
// lblEndbetragText
|
||||
//
|
||||
this.lblEndbetragText.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.lblEndbetragText.LocationFloat = new DevExpress.Utils.PointFloat(198.3953F, 43.755F);
|
||||
this.lblEndbetragText.Name = "lblEndbetragText";
|
||||
this.lblEndbetragText.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
|
||||
this.lblEndbetragText.SizeF = new System.Drawing.SizeF(374.74F, 21.88F);
|
||||
this.lblEndbetragText.StylePriority.UseFont = false;
|
||||
this.lblEndbetragText.StylePriority.UsePadding = false;
|
||||
this.lblEndbetragText.StylePriority.UseTextAlignment = false;
|
||||
this.lblEndbetragText.Text = "Endsumme:";
|
||||
this.lblEndbetragText.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.lblEndbetragText.Visible = false;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
@@ -832,7 +920,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
|
||||
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
|
||||
this.ruleRateFactorNull});
|
||||
this.Margins = new DevExpress.Drawing.DXMargins(53F, 39F, 157.5001F, 120.4999F);
|
||||
this.Margins = new DevExpress.Drawing.DXMargins(53F, 32F, 157.5001F, 120.4999F);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
|
||||
@@ -913,5 +1001,10 @@ namespace BeWo.Report.DefaultReports
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblEndbetragValue;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblAbschlagszahlungenValue;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblAbschlagszahlungenText;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblEndbetragText;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,14 @@ namespace BeWo.Report.DefaultReports
|
||||
|
||||
SetzeAdresse(pRO);
|
||||
|
||||
if (pRO.AmountAdvancedPayments != null && pRO.AmountAdvancedPayments != "0,00 €")
|
||||
{
|
||||
lblAbschlagszahlungenValue.Visible = true;
|
||||
lblAbschlagszahlungenText.Visible = true;
|
||||
lblEndbetragValue.Visible = true;
|
||||
lblEndbetragText.Visible = true;
|
||||
}
|
||||
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace BeWo.TRIASAmbulanteSozialarbeit
|
||||
this.lblZeNr.SizeF = new System.Drawing.SizeF(244.0002F, 20F);
|
||||
this.lblZeNr.StylePriority.UseBackColor = false;
|
||||
this.lblZeNr.StylePriority.UseFont = false;
|
||||
this.lblZeNr.Text = "ZE-Nr. 23700";
|
||||
this.lblZeNr.Text = "ZE-Nr. 23258";
|
||||
this.lblZeNr.Visible = false;
|
||||
this.lblZeNr.WordWrap = false;
|
||||
//
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace BS.Shared.AppSender
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new GkvException(e.Message, "KundenApp");
|
||||
throw new GkvException(e.ToString() + $" ({url})", "KundenApp");
|
||||
}
|
||||
|
||||
if (app8_response is null)
|
||||
|
||||
@@ -652,6 +652,7 @@ namespace BS.Shared
|
||||
AiModulePromptbausteineEdit = 201009,
|
||||
AiModulePromptbausteineRemove = 201010,
|
||||
AiModulePromptbausteineSeeAll = 201011,
|
||||
//AiModulePromptbausteineExecute = 201012,
|
||||
AiVoiceView= 201020,
|
||||
}
|
||||
|
||||
|
||||
@@ -687,7 +687,7 @@ namespace BS.Shared.Core
|
||||
{
|
||||
var dict = new Dictionary<UserRightType, String>();
|
||||
|
||||
var action_keywords = new string[] { "ansehen", "verwalten", "anlegen", "bearbeiten", "löschen", "senden", "klonen", "alle ansehen" };
|
||||
var action_keywords = new string[] { "ansehen", "verwalten", "anlegen", "bearbeiten", "löschen", "senden", "klonen", "alle ansehen", "ausführen" };
|
||||
|
||||
dict.Add(UserRightType.CreateAll, Translator.Translate("Alles anlegen"));
|
||||
|
||||
@@ -779,6 +779,7 @@ namespace BS.Shared.Core
|
||||
dict.Add(UserRightType.AiModulePromptbausteineEdit, Translator.Translate($"KI-Promptbaustein {action_keywords[3]}"));
|
||||
dict.Add(UserRightType.AiModulePromptbausteineRemove, Translator.Translate($"KI-Promptbaustein {action_keywords[4]}"));
|
||||
dict.Add(UserRightType.AiModulePromptbausteineSeeAll, Translator.Translate($"KI-Promptbausteine {action_keywords[7]}"));
|
||||
//dict.Add(UserRightType.AiModulePromptbausteineExecute, Translator.Translate($"KI-Promptbausteine {action_keywords[8]}"));
|
||||
|
||||
dict.Add(UserRightType.PersonView_Create, Translator.Translate("Personen anlegen"));
|
||||
dict.Add(UserRightType.PersonView_Delete, Translator.Translate("Personen löschen"));
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace BS.Shared.DataContracts
|
||||
public long? AppointmentVersion { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public Object ContextObject { get; set; }
|
||||
public object ContextObject { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Subject { get; set; }
|
||||
|
||||
@@ -750,5 +750,14 @@ namespace BS.Shared.Extensions
|
||||
|
||||
return date;
|
||||
}
|
||||
|
||||
public static DateTime GetDayOfWeek(DayOfWeek dayOfWeek)
|
||||
{
|
||||
var today = DateTime.Today;
|
||||
|
||||
var diff = (7 + (today.DayOfWeek - dayOfWeek)) % 7;
|
||||
|
||||
return today.AddDays(-diff);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user