Perseh Schnittstelle, diverse Todos fürs Release + Anpassungen Schulbegleitung Hildmann/Kloss Betreuungszeiten
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
<EnableSecurityDebugging>true</EnableSecurityDebugging>
|
||||
<TargetZone>Internet</TargetZone>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
<SignManifests>false</SignManifests>
|
||||
<SignManifests>true</SignManifests>
|
||||
<ManifestKeyFile>
|
||||
</ManifestKeyFile>
|
||||
<ManifestCertificateThumbprint>8CA4066C36C87B745E4016FDA715A6DB16FCFFA9</ManifestCertificateThumbprint>
|
||||
@@ -43,12 +43,12 @@
|
||||
<TargetCulture>de-DE</TargetCulture>
|
||||
<ProductName>BeWoPlaner</ProductName>
|
||||
<PublisherName>ownSoft GmbH</PublisherName>
|
||||
<MinimumRequiredVersion>2.0.1.248</MinimumRequiredVersion>
|
||||
<MinimumRequiredVersion>2.0.1.249</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.htm</WebPage>
|
||||
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
|
||||
<TrustUrlParameters>true</TrustUrlParameters>
|
||||
<ApplicationRevision>249</ApplicationRevision>
|
||||
<ApplicationRevision>250</ApplicationRevision>
|
||||
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace BeWo
|
||||
|
||||
public static MainControl MainControl;
|
||||
public static string ShortVersion = "3.21";
|
||||
public static string Version = "Version 3.21.4";
|
||||
public static string Version = "Version 3.21.5";
|
||||
|
||||
public static int RenderTier = 0;
|
||||
|
||||
|
||||
@@ -244,15 +244,19 @@ namespace BeWo
|
||||
|
||||
//!!!!Wenn hier neue Keys hinzugefügt werden, muss das auch in der Klasse ChatController.HauptKlassen.Chat und im DatabaseTerminator gemacht werden!!
|
||||
|
||||
private static String PUB_KEY_X3 = "3082010A02820101009CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
private static String PUB_KEY_X3 = "9CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
|
||||
private static String PUB_KEY_R3 = "3082010A0282010100BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
private static String PUB_KEY_R3 = "BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
|
||||
private static String PUB_KEY_E1 = "04245C2DA22AFD1C4BA65D97732731ACB2A06962EF65E8A6B0F0AC4B9FFF1C0B700FD3982F4DFC0F009B37F074055732972E05EF2A4325A3FB6E342713F64F7E69D302995EEB244792C1249BE6B1218FC12481FC68CC1F69BA58F51922F774C616";
|
||||
private static String PUB_KEY_E1 = "245c2da22afd1c4ba65d97732731acb2a06962ef65e8a6b0f0ac4b9fff1c0b700fd3982f4dfc0f009b37f074055732972e05ef2a4325a3fb6e342713f64f7e69d302995eeb244792c1249be6b1218fc12481fc68cc1f69ba58f51922f774c616";
|
||||
|
||||
private static String PUB_KEY_R11 = "3082010A0282010100BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
private static String PUB_KEY_E5 = "0d0b3a8a6b618eb6efdc5f58e7c6424554ab63f66661480a2e5975b481023750b73f1679dc98eca1289772201c2ccfd57c52204e54785b84146bc090ae85ecc051413c5a877f064dd4fe60d1fa6c2de17d951088a208540f991a4ce6ea0aacd8";
|
||||
|
||||
private static String PUB_KEY_R10 = "3082010A0282010100CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
private static String PUB_KEY_E6 = "d9f19e4687f8217160a826eba3fab9eada1db912a7d426d95114b1617c7596bf220b391fd5bed10a46aa2d3c4a09842ebe409555e91940376675ed324e770449f8707bc318e7cef77110feac74d800d4ed6d1c731633109c3ab2ea6c62f4bdb8";
|
||||
|
||||
private static String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private static String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
|
||||
|
||||
private bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
|
||||
@@ -263,15 +267,18 @@ namespace BeWo
|
||||
return false;
|
||||
|
||||
bool chainContainsPk = false;
|
||||
|
||||
|
||||
foreach (var element in chain.ChainElements)
|
||||
{
|
||||
String pk = element.Certificate.GetPublicKeyString();
|
||||
String testx3 = PUB_KEY_X3;
|
||||
String testr3 = PUB_KEY_R3;
|
||||
String teste1 = PUB_KEY_E1;
|
||||
String r11 = PUB_KEY_R11;
|
||||
if (pk == PUB_KEY_X3 || pk == PUB_KEY_R3 || pk == PUB_KEY_E1 || pk == PUB_KEY_R11 || pk == PUB_KEY_R10)
|
||||
String pk = element.Certificate.GetPublicKeyString().ToLower();
|
||||
|
||||
if (pk.Contains(PUB_KEY_X3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E5.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E6.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R10.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R11.ToLower()))
|
||||
{
|
||||
chainContainsPk = true;
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TypeString" Header="Art der Rechnung" Width="150" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="CustomerName" Header="{markup:Translate Klient/in}" Width="100" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AccountingPeriodString" SortFieldName="AccountingPeriodStart" Header="Zeitraum" Width="100" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceNumber" Header="Nummer" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceNumber" Header="Nummer" SortOrder="Ascending" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceDate" Header="Datum" EditSettings="{dxe:DateSettings DisplayFormat=d}" MinWidth="70" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Header="{markup:Translate EmpfängerSingular}" />
|
||||
<!--<dxg:GridColumn FieldName="AccountingPeriodString" Header="Abrechnungszeitraum" />-->
|
||||
|
||||
@@ -82,10 +82,22 @@
|
||||
<TextBox Grid.Column="1" Margin="1" VerticalContentAlignment="Center" Text="{Binding ViewModel.NewVM.Description, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Button Grid.Column="2" Height="25" Content="Hinzufügen" Margin="3" Click="ZielHinzufuegenButton_Click" />
|
||||
<Button Grid.Column="3" Height="25" Content="Icf Importieren" Margin="3" Click="IcfImport_Click" />
|
||||
<ToggleButton Grid.Column="4" Height="25" Content="Bearbeiten" Margin="3" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked" Visibility="Collapsed"/>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="0" Grid.ColumnSpan="10" HorizontalAlignment="Right" Visibility="Collapsed">
|
||||
<Button x:Name="PrevButton" Height="25" Content="Prev" Margin="3" Click="PrevButton_Click" />
|
||||
<Button x:Name="NextButton" Height="25" Content="Next" Margin="3" Click="NextButton_Click" />
|
||||
<ToggleButton x:Name="EditToggleButton" Grid.Column="4" Width="157" Height="25" Content="Bearbeiten aktivieren" Margin="3" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked" Visibility="Visible" ToolTip="Wenn der Bearbeiten Modus aktiviert ist, können Sie Elemente mit Drag und Drop verschieben"/>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="0" Grid.ColumnSpan="10" HorizontalAlignment="Right" Visibility="Visible">
|
||||
<Button x:Name="PrevButton" Height="25" Width="25" Margin="3" Click="PrevButton_Click" ToolTip="Letzte Änderung rückgängig machen">
|
||||
<Image Source="..\..\Ressources\Icons\Undo.png" Height="18" VerticalAlignment="Center" HorizontalAlignment="Center" Width="20" Margin="0,3,0,0" />
|
||||
</Button>
|
||||
<Button x:Name="NextButton" Height="25" Width="25" Margin="3" Click="NextButton_Click">
|
||||
<Image Source="..\..\Ressources\Icons\Undo.png" Height="18" VerticalAlignment="Center" HorizontalAlignment="Center" Width="20" Margin="0,3,0,0" />
|
||||
<Button.RenderTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="-1" />
|
||||
<TranslateTransform X="25" />
|
||||
</TransformGroup>
|
||||
|
||||
|
||||
</Button.RenderTransform>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
|
||||
@@ -341,10 +341,12 @@ namespace BeWo.View.Detail
|
||||
private void ToggleButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Bearbeitungsmodus = true;
|
||||
EditToggleButton.Content = "Bearbeiten deaktivieren";
|
||||
}
|
||||
private void ToggleButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Bearbeitungsmodus = false;
|
||||
EditToggleButton.Content = "Bearbeiten aktivieren";
|
||||
}
|
||||
|
||||
private void StartCopyItem(SupportConceptGoalTreeItem _item, SupportConceptGoalTreeItem _copy)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
<dxg:GridColumn x:Name="column_interval" FieldName="AccountingInterval" Header="Abrechnungsintervall" Width="130" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView AutoWidth="true" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
|
||||
<dxg:TableView AutoWidth="True" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
<Popup x:Name="popup_costrateperiods" StaysOpen="false" Placement="MousePoint">
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -26,9 +26,8 @@
|
||||
</Grid.RowDefinitions>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="180" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -39,9 +38,9 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Grid.Column="0" Grid.Row="0">Bezeichnung</Label>
|
||||
<TextBox Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Margin="3" Height="23" Text="{val:ValidationBinding Path=NewVM.Name, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBox Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Text="{val:ValidationBinding Path=NewVM.Name, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Column="0" Grid.Row="1">Kategorie</Label>
|
||||
<controls:NullItemComboBox Name="combobox_categories" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Height="23" ItemsSource="{Binding Path=PossibleCategories, Mode=OneWay}" Margin="3" SelectedItem="{val:ValidationBinding Path=NewVM.ServiceCategory}" SelectionChanged="Combobox_categories_OnSelected">
|
||||
<controls:NullItemComboBox Name="combobox_categories" Grid.Column="1" Grid.Row="1" Height="23" ItemsSource="{Binding Path=PossibleCategories, Mode=OneWay}" Margin="3" SelectedItem="{val:ValidationBinding Path=NewVM.ServiceCategory}" SelectionChanged="Combobox_categories_OnSelected">
|
||||
<ComboBox.Resources>
|
||||
<DataTemplate x:Key="DropDownItemTemplate">
|
||||
<Grid>
|
||||
@@ -66,17 +65,17 @@
|
||||
</ComboBox.ItemContainerStyle>
|
||||
</controls:NullItemComboBox>
|
||||
|
||||
<Label Content="Position" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" Grid.ColumnSpan="2" />
|
||||
<Label Content="Position" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" />
|
||||
|
||||
<dxe:SpinEdit EditValueType="{x:Type sys:Int32}" MinValue="0" Margin="3" IsFloatValue="False" Grid.Column="2" Grid.Row="2" Height="23" EditValue="{Binding Path=NewVM.Position, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit EditValueType="{x:Type sys:Int32}" MinValue="0" Margin="3" IsFloatValue="False" Grid.Column="1" Grid.Row="2" Height="23" EditValue="{Binding Path=NewVM.Position, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<Label Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2" Content="{t:Translate Prozent Abrechenbar}"/>
|
||||
<Label Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" Content="{t:Translate Prozent Budget}"/>
|
||||
<Label Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="2" Content="{t:Translate Prozent Stundenkonto}"/>
|
||||
<Label Grid.Column="0" Grid.Row="3" Content="{t:Translate Prozent Abrechenbar}"/>
|
||||
<Label Grid.Column="0" Grid.Row="4" Content="{t:Translate Prozent Budget}"/>
|
||||
<Label Grid.Column="0" Grid.Row="5" Content="{t:Translate Prozent Stundenkonto}"/>
|
||||
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="2" Grid.Row="3" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentAbrechenbar, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="2" Grid.Row="4" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentBudget, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="2" Grid.Row="5" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentStundenkonto, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="1" Grid.Row="3" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentAbrechenbar, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="1" Grid.Row="4" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentBudget, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:SpinEdit IsFloatValue="True" MinValue="0" MaxValue="100" Increment="10" Grid.Column="1" Grid.Row="5" Margin="3" Height="23" EditValue="{Binding Path=NewVM.ProzentStundenkonto, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
</Grid>
|
||||
|
||||
@@ -112,7 +111,7 @@
|
||||
</Grid>
|
||||
</Border>
|
||||
<Button Name="button_addServiceDescription" Click="button_addServiceDescription_Click" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Height="25" Margin="3,3,3,3" Padding="5 0" IsDefault="True" HorizontalAlignment="Right">Hinzufügen</Button>
|
||||
<dxg:GridControl x:Name="datagrid_descriptions" Margin="0,10,0,0" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="7" DataSource="{Binding VMList}">
|
||||
<dxg:GridControl x:Name="datagrid_descriptions" Margin="0,10,0,0" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" DataSource="{Binding VMList}">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn FieldName="IsDeleteable" Header="" FixedWidth="True" Width="24" ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
@@ -140,7 +139,7 @@
|
||||
<dxg:GridColumn FieldName="ProzentStundenkonto" Header="Prozent Stundenkonto" Width="130" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView AutoWidth="true" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
|
||||
<dxg:TableView AutoWidth="True" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
<Popup x:Name="popup_costrateperiods" StaysOpen="false" Placement="MousePoint">
|
||||
|
||||
@@ -57,28 +57,31 @@ namespace BeWo.View.Detail
|
||||
}
|
||||
private void _YearPicker_EditValueChanged(object sender, EditValueChangedEventArgs e)
|
||||
{
|
||||
if (_GridLeaveDays == null)
|
||||
if (_YearPicker.SelectedItem != null)
|
||||
{
|
||||
_GridLeaveDays = rootGrid.Resources["datagrid_leavedays"] as GridControl;
|
||||
|
||||
WPFGridLeaveDays.Children.Add(_GridLeaveDays);
|
||||
}
|
||||
|
||||
var urlaubskonto = ServiceFacade.DoEmployeeServiceSync(s => s.ErstelleUrlaubskontoDarstellung(DataContract, (int)_YearPicker.SelectedItem));
|
||||
|
||||
if (urlaubskonto == null)
|
||||
{
|
||||
urlaubskonto = new List<UrlaubskontoDarstellungDC>();
|
||||
urlaubskonto.Add(new UrlaubskontoDarstellungDC()
|
||||
if (_GridLeaveDays == null)
|
||||
{
|
||||
Erlaeuterung = "Es existiert kein Vertrag für ausgewähltes Jahr",
|
||||
});
|
||||
button_openLeaveDayDialogue.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
button_openLeaveDayDialogue.Visibility = Visibility.Visible;
|
||||
_GridLeaveDays = rootGrid.Resources["datagrid_leavedays"] as GridControl;
|
||||
|
||||
_GridLeaveDays.ItemsSource = urlaubskonto;
|
||||
WPFGridLeaveDays.Children.Add(_GridLeaveDays);
|
||||
}
|
||||
|
||||
var urlaubskonto = ServiceFacade.DoEmployeeServiceSync(s => s.ErstelleUrlaubskontoDarstellung(DataContract, (int)_YearPicker.SelectedItem));
|
||||
|
||||
if (urlaubskonto == null)
|
||||
{
|
||||
urlaubskonto = new List<UrlaubskontoDarstellungDC>();
|
||||
urlaubskonto.Add(new UrlaubskontoDarstellungDC()
|
||||
{
|
||||
Erlaeuterung = "Es existiert kein Vertrag für ausgewähltes Jahr",
|
||||
});
|
||||
button_openLeaveDayDialogue.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
button_openLeaveDayDialogue.Visibility = Visibility.Visible;
|
||||
|
||||
_GridLeaveDays.ItemsSource = urlaubskonto;
|
||||
}
|
||||
}
|
||||
|
||||
private void button_addLeaveDay_Click(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -13,11 +13,27 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
{
|
||||
public partial class ServiceRecordCreationView
|
||||
{
|
||||
|
||||
private DateTime _StartDatum;
|
||||
private DateTime _EndDatum;
|
||||
|
||||
public DateTime StartDatum { get; set; }
|
||||
public DateTime StartDatum
|
||||
{
|
||||
get { return _StartDatum; }
|
||||
set
|
||||
{
|
||||
_StartDatum = value;
|
||||
UpdateSelectedArbeitszeitVm();
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime EndDatum { get; set; }
|
||||
public DateTime EndDatum {
|
||||
get { return _EndDatum; }
|
||||
set
|
||||
{
|
||||
_EndDatum = value;
|
||||
UpdateSelectedArbeitszeitVm();
|
||||
}
|
||||
}
|
||||
|
||||
public SupportConceptCostBearerRelDC SupportConceptCostBearerRel { get; set; }
|
||||
|
||||
@@ -44,7 +60,13 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
|
||||
private void UpdateSelectedArbeitszeitVm()
|
||||
{
|
||||
SelectedArbeitszeitVM = ArbeitszeitListVM.VMList[0];
|
||||
foreach (var item in ArbeitszeitListVM.VMList)
|
||||
{
|
||||
if ((!item.GueltigVon.HasValue || item.GueltigVon <= EndDatum) && (!item.GueltigBis.HasValue || item.GueltigBis >= StartDatum))
|
||||
{
|
||||
SelectedArbeitszeitVM = item;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,8 @@ namespace BeWo.View.Navigation
|
||||
{
|
||||
textblock_link.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
//###CB SERIENBRIEF mainNavigationView.MailMergeButton.Visibility = Visibility.Collapsed;
|
||||
mainNavigationView.chkShowDeleted.Visibility = Visibility.Collapsed;
|
||||
//###CB SERIENBRIEF mainNavigationView.MailMergeButton.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -99,9 +99,13 @@
|
||||
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" AllowNullInput="True" Grid.Column="1" Grid.Row="0" Margin="3" Width="125" Height="23" EditValue="{Binding Path=GueltigVon, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" AllowNullInput="True" Grid.Column="3" Grid.Row="0" Margin="3" Width="125" Height="23" EditValue="{Binding Path=GueltigBis, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<Button Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Content="{markup:Translate Neuen Eintrag hinzufügen}" HorizontalAlignment="Left" Click="AddArbeitszeitToView_Click" Height="23" Margin="0,10,0,0" />
|
||||
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5" Orientation="Horizontal">
|
||||
<Button Content="{markup:Translate Neuen Eintrag hinzufügen}" HorizontalAlignment="Left" Click="AddArbeitszeitToView_Click" Height="23" Margin="0,10,0,0" />
|
||||
<Button Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Content="{markup:Translate Gesamte Betreuungszeiten kopieren}" HorizontalAlignment="Left" Click="CopyArbeitszeit_Click" Height="23" Margin="10,10,0,0" />
|
||||
|
||||
<controls:PopupNonTopmost x:Name="popup_newArbeitszeitEintrag" Placement="MousePoint" StaysOpen="True">
|
||||
</StackPanel>
|
||||
|
||||
<controls:PopupNonTopmost x:Name="popup_newArbeitszeitEintrag" Placement="MousePoint" StaysOpen="True">
|
||||
<Border Background="White" Padding="3" BorderThickness="1" BorderBrush="Gray">
|
||||
<GroupBox Name="groupbox_newArbeistzeit" Header="Neuen Eintrag hinzufügen" Style="{DynamicResource ObjectEditGroupBox}">
|
||||
<Grid>
|
||||
@@ -203,9 +207,10 @@
|
||||
</dxg:GridColumn.EditTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn Header="Bemerkungen" FieldName="Notice" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridColumn Header="" FieldName="Infos" AllowEditing="False" AllowSorting="False" Width="150"/>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" Margin="2,2,2,2" AllowBestFit="True" BestFitMode="AllRows" AutoWidth="True" ShowGroupPanel="False" ShowGroupedColumns="False" ShowTotalSummary="False" HorizontalContentAlignment="Left" ShowingEditor="GridViewBase_OnShowingEditor" />
|
||||
<dxg:TableView NavigationStyle="Cell" Margin="2,2,2,2" AllowBestFit="True" BestFitMode="AllRows" ShowGroupPanel="False" ShowGroupedColumns="False" ShowTotalSummary="False" HorizontalContentAlignment="Left" ShowingEditor="GridViewBase_OnShowingEditor" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</GroupBox>
|
||||
|
||||
@@ -11,6 +11,8 @@ using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.Xpf.Grid;
|
||||
using System;
|
||||
using BS.Shared.DataContracts;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BeWo.View
|
||||
{
|
||||
@@ -114,11 +116,11 @@ namespace BeWo.View
|
||||
|
||||
private void AddArbeitszeitToView_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var popup = tabcontrol_Arbeitszeit.GetAllChildren().OfType<PopupNonTopmost>();
|
||||
var popup = tabcontrol_Arbeitszeit.GetAllChildren().OfType<PopupNonTopmost>();
|
||||
|
||||
var popup_NewArbeitszeitEintrag = popup.First(x => x.Name.Equals("popup_newArbeitszeitEintrag"));
|
||||
var popup_NewArbeitszeitEintrag = popup.First(x => x.Name.Equals("popup_newArbeitszeitEintrag"));
|
||||
|
||||
popup_NewArbeitszeitEintrag.IsOpen = true;
|
||||
popup_NewArbeitszeitEintrag.IsOpen = true;
|
||||
}
|
||||
|
||||
private void PopupArbeitszeitClose_Click(object sender, RoutedEventArgs e)
|
||||
@@ -163,6 +165,33 @@ namespace BeWo.View
|
||||
grid_ArbeitszeitEintrag.RefreshData();
|
||||
}
|
||||
|
||||
private void CopyArbeitszeit_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var arbeitszeit = tabcontrol_Arbeitszeit.SelectedItem as ArbeitszeitVM;
|
||||
|
||||
var dc = new ArbeitszeitDC();
|
||||
if (arbeitszeit.GueltigBis.HasValue)
|
||||
{
|
||||
dc.GueltigVon = arbeitszeit.GueltigBis.Value.AddDays(1);
|
||||
}
|
||||
dc.Eintraege = new List<ArbeitszeitEintragDC>();
|
||||
foreach (var ae in arbeitszeit.ArbeitszeitEintraege.VMList)
|
||||
{
|
||||
var copy = new ArbeitszeitEintragDC();
|
||||
copy.Tag = ae.Tag;
|
||||
copy.UhrzeitVon = ae.UhrzeitVon;
|
||||
copy.UhrzeitBis = ae.UhrzeitBis;
|
||||
copy.Notice = ae.Notice;
|
||||
copy.Employee = ae.Employee;
|
||||
dc.Eintraege.Add(copy);
|
||||
}
|
||||
|
||||
var copyVm = new ArbeitszeitVM(dc);
|
||||
ViewModel.VMList.Add(copyVm);
|
||||
|
||||
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
|
||||
|
||||
}
|
||||
private void GridControl_OnCustomColumnSort(object sender, CustomColumnSortEventArgs e)
|
||||
{
|
||||
var comparer = new WochentagComparerClass();
|
||||
|
||||
@@ -2,6 +2,7 @@ using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BeWo.Validation;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using System;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
@@ -49,6 +50,7 @@ namespace BeWo.ViewModel
|
||||
_UhrzeitVon = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.UhrzeitVon, value), PropertyName_UhrzeitVon);
|
||||
FirePropertyChanged(PropertyName_UhrzeitVon);
|
||||
FirePropertyChanged("Infos");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -64,7 +66,7 @@ namespace BeWo.ViewModel
|
||||
{
|
||||
_UhrzeitBis = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.UhrzeitBis, value), PropertyName_UhrzeitBis);
|
||||
FirePropertyChanged(PropertyName_UhrzeitBis);
|
||||
FirePropertyChanged("Infos");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -101,6 +103,30 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public string Infos
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!string.IsNullOrEmpty(UhrzeitVon) && !string.IsNullOrEmpty(UhrzeitVon))
|
||||
{
|
||||
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, UhrzeitVon);
|
||||
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, UhrzeitBis);
|
||||
|
||||
DateTime date1;
|
||||
DateTime date2;
|
||||
|
||||
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
|
||||
{
|
||||
|
||||
return String.Format("Gesamtstunden: {0:0.00}", date2.Subtract(date1).TotalHours);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
public string Klient => _CompactCustomer?.FullName;
|
||||
|
||||
public CompactCustomerDC CompactCustomer
|
||||
|
||||
@@ -18,12 +18,6 @@ namespace BeWoDatabaseTerminator
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
private const string PubKeyX3 = "3082010A02820101009CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
private const string PubKeyR3 = "3082010A0282010100BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
private const string PubKeyE1 = "04245C2DA22AFD1C4BA65D97732731ACB2A06962EF65E8A6B0F0AC4B9FFF1C0B700FD3982F4DFC0F009B37F074055732972E05EF2A4325A3FB6E342713F64F7E69D302995EEB244792C1249BE6B1218FC12481FC68CC1F69BA58F51922F774C616";
|
||||
private const String PUB_KEY_R11 = "3082010A0282010100BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
private const String PUB_KEY_R10 = "3082010A0282010100CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private const string APIKEY = "CwjlSCbNqctEsofpGY64Z4aO6pShNYAdGtjMqHsjO64FuK23qoRDUqIjUC0P";
|
||||
|
||||
private static string _ConnectionStringServer;
|
||||
@@ -49,36 +43,57 @@ namespace BeWoDatabaseTerminator
|
||||
ServicePointManager.ServerCertificateValidationCallback = PinPublicKey;
|
||||
}
|
||||
|
||||
private const String PUB_KEY_X3 = "9CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
|
||||
private const String PUB_KEY_R3 = "BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
|
||||
private const String PUB_KEY_E1 = "245c2da22afd1c4ba65d97732731acb2a06962ef65e8a6b0f0ac4b9fff1c0b700fd3982f4dfc0f009b37f074055732972e05ef2a4325a3fb6e342713f64f7e69d302995eeb244792c1249be6b1218fc12481fc68cc1f69ba58f51922f774c616";
|
||||
|
||||
private const String PUB_KEY_E5 = "0d0b3a8a6b618eb6efdc5f58e7c6424554ab63f66661480a2e5975b481023750b73f1679dc98eca1289772201c2ccfd57c52204e54785b84146bc090ae85ecc051413c5a877f064dd4fe60d1fa6c2de17d951088a208540f991a4ce6ea0aacd8";
|
||||
|
||||
private const String PUB_KEY_E6 = "d9f19e4687f8217160a826eba3fab9eada1db912a7d426d95114b1617c7596bf220b391fd5bed10a46aa2d3c4a09842ebe409555e91940376675ed324e770449f8707bc318e7cef77110feac74d800d4ed6d1c731633109c3ab2ea6c62f4bdb8";
|
||||
|
||||
private const String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private const String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
|
||||
|
||||
private static bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(certificate is null || chain is null)
|
||||
{
|
||||
if (certificate == null || chain == null)
|
||||
return false;
|
||||
}
|
||||
|
||||
var chainContainsPublicKey = false;
|
||||
bool chainContainsPk = false;
|
||||
|
||||
foreach(var element in chain.ChainElements)
|
||||
foreach (var element in chain.ChainElements)
|
||||
{
|
||||
var pk = element.Certificate.GetPublicKeyString();
|
||||
if((pk?.Equals(PubKeyX3) ?? false) || (pk?.Equals(PubKeyR3) ?? false) || (pk?.Equals(PubKeyE1) ?? false) || pk == PUB_KEY_R11 || pk == PUB_KEY_R10)
|
||||
String pk = element.Certificate.GetPublicKeyString().ToLower();
|
||||
|
||||
if (pk.Contains(PUB_KEY_X3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E5.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E6.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R10.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R11.ToLower()))
|
||||
{
|
||||
chainContainsPublicKey = true;
|
||||
chainContainsPk = true;
|
||||
}
|
||||
}
|
||||
|
||||
var subjectAccepted = certificate.Subject.Trim().ToLower().EndsWith(".bewoplaner.de") || certificate.Subject.Trim().ToLower().EndsWith(".ownchat.de");
|
||||
|
||||
return chainContainsPublicKey && subjectAccepted;
|
||||
bool subjectAccepted = certificate.Subject.Trim().ToLower().EndsWith(".bewoplaner.de") ||
|
||||
certificate.Subject.Trim().ToLower().EndsWith(".ownchat.de");
|
||||
return chainContainsPk && subjectAccepted;
|
||||
}
|
||||
catch(Exception)
|
||||
catch (Exception e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static async Task Main(string[] args)
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
@@ -24,5 +24,6 @@
|
||||
<property column="ChangeType" type="BS.Shared.StatementType, BS.Shared" name="ChangeType" />
|
||||
<property name="SupportConcept_CustomerOid" type="Int64" />
|
||||
<property name="SupportConcept_EmployeeOid" type="Int64" />
|
||||
<property name="SupportConceptOid" type="Int64" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
@@ -102,6 +102,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell57 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell58 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
|
||||
this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
|
||||
this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
|
||||
@@ -120,7 +121,6 @@ namespace BeWo.Report.DefaultReports
|
||||
this.fieldIstArbeitszeit = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldUeberstundenGesamt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldTatsSoll = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
@@ -808,7 +808,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell51.StylePriority.UseFont = false;
|
||||
this.xrTableCell51.StylePriority.UsePadding = false;
|
||||
this.xrTableCell51.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell51.Text = "davon ausbezahlt:";
|
||||
this.xrTableCell51.Text = "Anpassung Überstunden:";
|
||||
this.xrTableCell51.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell51.Weight = 0.22133303497678214D;
|
||||
//
|
||||
@@ -891,6 +891,10 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell26.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell26.Weight = 0.11143081848591821D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
|
||||
//
|
||||
// Title
|
||||
//
|
||||
this.Title.BackColor = System.Drawing.Color.White;
|
||||
@@ -1027,10 +1031,6 @@ namespace BeWo.Report.DefaultReports
|
||||
this.fieldTatsSoll.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldTatsSoll.Name = "fieldTatsSoll";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
|
||||
//
|
||||
// Mitarbeiterarbeitszeitkonto
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
|
||||
@@ -1719,7 +1719,7 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
if (dd.Feiertag != null)
|
||||
{
|
||||
dd.MinutesTotal = dd.SollStunden * 60;
|
||||
dd.MinutesTotal = dd.SollStunden * 60 * GetFeiertagsFaktor(dd.Date);
|
||||
TimeSpan tspan = TimeSpan.FromMinutes((double)dd.MinutesTotal);
|
||||
dd.TimeTotal = String.Format("{0:00}:{1:00}", tspan.Hours, tspan.Minutes);
|
||||
}
|
||||
|
||||
@@ -578,17 +578,18 @@ where scap2e.EmployeeOid = {0} and scap.Start <= '{1:yyyy-MM-dd}' and scap.EndDa
|
||||
|
||||
foreach (AbsenceTime at in c.AbsenceTimes.OrderBy(a => a.Start))
|
||||
{
|
||||
if (at.AbsenceReason.Description.Contains("<24h") || at.AbsenceReason.Description.Contains(">24h") || at.AbsenceReason.Description.StartsWith("S_Abwesenheit nicht abrechenbar") || at.AbsenceReason.Description.StartsWith("S_JA"))
|
||||
if (at.AbsenceReason.Description.Contains("<24h") || at.AbsenceReason.Description.Contains(">24h") || at.AbsenceReason.Description.Contains("Abwesenheit nicht abrechenbar") || at.AbsenceReason.Description.StartsWith("S_JA") ||
|
||||
at.AbsenceReason.Description.StartsWith("SozA") || at.AbsenceReason.Description.StartsWith("S_Abwesenheit nicht abrechenbar") || at.AbsenceReason.Description.StartsWith("JugA"))
|
||||
{
|
||||
if (at.Start >= startSchuljahr && at.Start <= endeSchuljahr && (at.End == null || at.End >= startSchuljahr))
|
||||
{
|
||||
var maxAnzahlIntern = maxAnzahl;
|
||||
|
||||
if (at.AbsenceReason.Description.Contains("<24h_SA"))
|
||||
if (at.AbsenceReason.Description.Contains("<24h_SA") || at.AbsenceReason.Description.Contains("unter 24"))
|
||||
{
|
||||
maxAnzahlIntern = Int32.MaxValue; // Dürfen immer abgerechnet werden
|
||||
}
|
||||
else if ((at.AbsenceReason.Description.Contains(">24h") && istJugendamt) || at.AbsenceReason.Description.StartsWith("S_Abwesenheit nicht abrechenbar"))
|
||||
else if ((at.AbsenceReason.Description.Contains(">24h") && istJugendamt) || at.AbsenceReason.Description.Contains("Abwesenheit nicht abrechenbar"))
|
||||
{
|
||||
maxAnzahlIntern = 0; // Darf beim Jugendamt nie abgerechnet werden
|
||||
}
|
||||
|
||||
@@ -12,25 +12,13 @@ namespace BeWo.Service.Invoicing
|
||||
{
|
||||
internal class Club74SettlementInvoiceCreation : LWLSettlementInvoiceCreation
|
||||
{
|
||||
private decimal totalFLS = 0;
|
||||
|
||||
public override List<InvoiceItemDC> CreateInvoiceItems(Settlement2DC si, IList<ApprovalPeriod> apList)
|
||||
{
|
||||
var items = base.CreateInvoiceItems(si, apList, true);
|
||||
|
||||
var temp = base.CreateInvoiceItems(si, apList, false);
|
||||
|
||||
totalFLS = temp.Sum(ii => (ii.UnitCount ?? 0)); // * rf; //eigentlich falsch dass netto = brutto ist.
|
||||
return items;
|
||||
}
|
||||
public override bool SchneideBeiErreichenDesBudgetsAb { get { return true; } }
|
||||
|
||||
public override void CreateInvoiceDetailsTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
|
||||
{
|
||||
base.CreateInvoiceDetailsTheOldWay(si, c2s);
|
||||
|
||||
|
||||
si.RecordedBillableFLSNetto = totalFLS;
|
||||
|
||||
si.RecordedBillableFLSNetto = si.RecordedMinutesTotal / 60;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace DieBrueckeHilfeUndHalt.Service
|
||||
var stats = base.CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate, ignoreServiceRecordOid);
|
||||
|
||||
var cb = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(DAOFactory.GenericDAO.GetByID<CostBearer2SupportConcept>(costBearer2SupportConceptOid));
|
||||
if (!cb.CostBearer.Function.ToLower().Contains("neue vereinbarung"))
|
||||
if (cb == null || cb.CostBearer.Function == null || !cb.CostBearer.Function.ToLower().Contains("neue vereinbarung"))
|
||||
return stats;
|
||||
|
||||
decimal factor = 1.2m;
|
||||
|
||||
@@ -132,7 +132,8 @@ namespace Fortis
|
||||
|
||||
if (ro.MinutenProWocheUnterStufe < 0)
|
||||
{
|
||||
ro.Hinweise = "Vorsicht: Rückforderung droht!";
|
||||
//ro.Hinweise = "Vorsicht: Rückforderung droht!";
|
||||
ro.Hinweise = "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Services;
|
||||
|
||||
namespace HphBersenbrueck
|
||||
{
|
||||
public class CustomGroupDurationCalculator : GroupDurationCalculator
|
||||
{
|
||||
public override GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
|
||||
{
|
||||
return new GroupDurationDC()
|
||||
{
|
||||
SingleDuration = Math.Round((totalDuration / personCount) * employeeCount, 2, MidpointRounding.AwayFromZero),
|
||||
TotalDuration = totalDuration
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,7 @@
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Calculations\CustomGroupDurationCalculator.cs" />
|
||||
<Compile Include="Calculations\HPHBCalculations.cs" />
|
||||
<Compile Include="CustomerDataReport.cs">
|
||||
<SubType>Component</SubType>
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace HPHBersenbrueck.Invoicing
|
||||
{
|
||||
protected DateTime? accountingPeriodStart = null;
|
||||
protected DateTime? accountingPeriodEnd = null;
|
||||
|
||||
private Dictionary<long, bool> groupOidDict = null;
|
||||
|
||||
public override void SetInvoiceId(ServiceInvoice invoice)
|
||||
{
|
||||
@@ -29,6 +29,8 @@ namespace HPHBersenbrueck.Invoicing
|
||||
|
||||
public override List<ServiceInvoiceDC> GenerateServiceInvoices(long costBearerOid, DateTimeSpan invoicePeriod, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
|
||||
{
|
||||
groupOidDict = new Dictionary<long, bool>();
|
||||
|
||||
var invoices = base.GenerateServiceInvoices(costBearerOid, invoicePeriod, supportConcepts2ServiceRecords);
|
||||
|
||||
foreach (var i in invoices)
|
||||
@@ -65,14 +67,27 @@ namespace HPHBersenbrueck.Invoicing
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
ii.ItemDescription = iServiceRecord.ServiceDescription.CategoryName;
|
||||
if (ii.ItemDescription.StartsWith("Neu "))
|
||||
if (!iServiceRecord.GroupOid.HasValue || !groupOidDict.ContainsKey(iServiceRecord.GroupOid.Value))
|
||||
{
|
||||
ii.ItemDescription = ii.ItemDescription.Replace("Neu ", "");
|
||||
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
if (iServiceRecord.GroupOid.HasValue)
|
||||
{
|
||||
ii.UnitCount = ((iServiceRecord.GroupRoundedDuration / iServiceRecord.GroupPersonCount) * iServiceRecord.GroupEmployeeCount) / 60;
|
||||
}
|
||||
ii.UnitCount = Math.Round(ii.UnitCount.Value * 1.2m, 2, MidpointRounding.AwayFromZero);
|
||||
ii.ItemDescription = iServiceRecord.ServiceDescription.CategoryName;
|
||||
if (ii.ItemDescription.StartsWith("Neu "))
|
||||
{
|
||||
ii.ItemDescription = ii.ItemDescription.Replace("Neu ", "");
|
||||
}
|
||||
if (iServiceRecord.GroupOid.HasValue)
|
||||
{
|
||||
groupOidDict.Add(iServiceRecord.GroupOid.Value, true);
|
||||
}
|
||||
return ii;
|
||||
}
|
||||
return ii;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
|
||||
@@ -83,7 +98,7 @@ namespace HPHBersenbrueck.Invoicing
|
||||
{
|
||||
if (item.UnitCount.HasValue)
|
||||
{
|
||||
item.UnitCount = Math.Round(item.UnitCount.Value * 1.2m, 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
|
||||
item.AmountTotal = item.AmountPerUnit * item.UnitCount;
|
||||
item.GrossAmountTotal = item.AmountTotal;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,32 +47,44 @@ namespace BeWo.HPHBersenbrueck
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
int summeWegepauschalen = 0;
|
||||
int summeAusfallstunden = 0;
|
||||
decimal summeAbrWegePauschalen = 0;
|
||||
foreach (var sd in pRO.Services)
|
||||
{
|
||||
|
||||
if (!sd.ServiceCategory.Contains("Fahrt"))
|
||||
{
|
||||
sd.FLSQualified = sd.Minutes / 50;
|
||||
|
||||
minuten += sd.Minutes;
|
||||
ServicesOverviewRO.CreateSignatureString(sd);
|
||||
|
||||
|
||||
sd.FLSQualified = sd.Minutes / 50;
|
||||
|
||||
if (sd.IsGroup)
|
||||
{
|
||||
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
|
||||
hatGruppen = true;
|
||||
sd.Notice3 = "1";
|
||||
sd.Minutes = sd.GroupMinutes;
|
||||
|
||||
sd.FLSQualified = Math.Round((sd.GroupMinutes / sd.CustomerCount / 50) * sd.EmployeeCount, 2, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
else
|
||||
sd.Notice3 = "";
|
||||
{
|
||||
sd.FLSQualified = sd.Minutes / 50;
|
||||
}
|
||||
|
||||
|
||||
minuten += sd.Minutes;
|
||||
|
||||
|
||||
// Felder für Wegepauschale setzen (Wenn FLS FaceToFace, dann ja)
|
||||
sd.Notice3 = "";
|
||||
sd.Notice4 = "";
|
||||
if (!String.IsNullOrWhiteSpace(sd.GefahreneKilometer) && Decimal.TryParse(sd.GefahreneKilometer, out var k))
|
||||
{
|
||||
if (k > 0)
|
||||
{
|
||||
sd.Notice4 = "1";
|
||||
sd.Notice3 = "1";
|
||||
sd.Notice4 = String.Format("{0:0.00}", 1m / sd.CustomerCount);
|
||||
summeAbrWegePauschalen += Math.Round(1m / sd.CustomerCount, 2, MidpointRounding.AwayFromZero);
|
||||
summeWegepauschalen++;
|
||||
}
|
||||
}
|
||||
@@ -92,6 +104,7 @@ namespace BeWo.HPHBersenbrueck
|
||||
pRO.Services = servicesBillable;
|
||||
lblSummeWegepauschalen.Text = string.Format("{0:0}", summeWegepauschalen);
|
||||
lblSummeAusfallstunden.Text = string.Format("{0:0}", summeAusfallstunden);
|
||||
lblSummeAbrWegepauschalen.Text = string.Format("{0:0.00}", summeAbrWegePauschalen);
|
||||
|
||||
}
|
||||
lblBewilligtFls.Text = String.Format("{0:0.00}", pRO.ApprovedFLSPerWeek);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,35 +47,44 @@ namespace BeWo.HPHBersenbrueck
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
int summeWegepauschalen = 0;
|
||||
int summeAusfallstunden = 0;
|
||||
decimal summeAbrWegePauschalen = 0;
|
||||
foreach (var sd in pRO.Services)
|
||||
{
|
||||
sd.IsBillable = sd.ServiceDescription.Contains("50 direkt") || sd.ServiceDescription.Contains("Ausfall");
|
||||
|
||||
|
||||
|
||||
if (sd.IsBillable && !sd.ServiceCategory.Contains("Fahrt"))
|
||||
{
|
||||
sd.FLSQualified = sd.Minutes / 50;
|
||||
|
||||
minuten += sd.Minutes;
|
||||
ServicesOverviewRO.CreateSignatureString(sd);
|
||||
|
||||
|
||||
if (sd.IsGroup)
|
||||
{
|
||||
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
|
||||
hatGruppen = true;
|
||||
sd.Notice3 = "1";
|
||||
sd.Minutes = sd.GroupMinutes;
|
||||
|
||||
sd.FLSQualified = Math.Round((sd.GroupMinutes / sd.CustomerCount / 50) * sd.EmployeeCount, 2, MidpointRounding.AwayFromZero);
|
||||
}
|
||||
else
|
||||
sd.Notice3 = "";
|
||||
{
|
||||
sd.FLSQualified = sd.Minutes / 50;
|
||||
}
|
||||
|
||||
|
||||
minuten += sd.Minutes;
|
||||
|
||||
|
||||
|
||||
// Felder für Wegepauschale setzen (Wenn FLS FaceToFace, dann ja)
|
||||
sd.Notice3 = "";
|
||||
sd.Notice4 = "";
|
||||
if (!String.IsNullOrWhiteSpace(sd.GefahreneKilometer) && Decimal.TryParse(sd.GefahreneKilometer, out var k))
|
||||
{
|
||||
if (k > 0)
|
||||
{
|
||||
sd.Notice4 = "1";
|
||||
sd.Notice3 = "1";
|
||||
sd.Notice4 = String.Format("{0:0.00}", 1m / sd.CustomerCount);
|
||||
summeAbrWegePauschalen += Math.Round(1m / sd.CustomerCount, 2, MidpointRounding.AwayFromZero);
|
||||
summeWegepauschalen++;
|
||||
}
|
||||
}
|
||||
@@ -95,6 +104,7 @@ namespace BeWo.HPHBersenbrueck
|
||||
pRO.Services = servicesBillable;
|
||||
lblSummeWegepauschalen.Text = string.Format("{0:0}", summeWegepauschalen);
|
||||
lblSummeAusfallstunden.Text = string.Format("{0:0}", summeAusfallstunden);
|
||||
lblSummeAbrWegepauschalen.Text = string.Format("{0:0.00}", summeAbrWegePauschalen);
|
||||
|
||||
}
|
||||
lblBewilligtFls.Text = String.Format("{0:0.00}", pRO.ApprovedFLSPerWeek);
|
||||
|
||||
@@ -56,11 +56,12 @@ namespace HphBersenbrueck.Service
|
||||
|
||||
if (stats != null)
|
||||
{
|
||||
var allStats = new List<SupportConceptPeriodStatisticsDC>();
|
||||
foreach (var pdc in stats.PeriodStatistics.OrderByDescending(s => s.SupportConceptApprovalPeriod != null ? s.SupportConceptApprovalPeriod.StartDate : DateTime.MinValue))
|
||||
{
|
||||
if (pdc.SupportConceptApprovalPeriod != null && pdc.SupportConceptApprovalPeriod.ServiceCategory != null && pdc.SupportConceptApprovalPeriod.ServiceCategory.Name == NEUE_QA_KATEGORIE)
|
||||
{
|
||||
ErstelleAlleStatistikenFuerNeueQA(statisticsDate, dc, stats, pdc);
|
||||
BerechneAlleStatistikenFuerNeueQA(statisticsDate, dc, stats, pdc, allStats);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -88,14 +89,18 @@ namespace HphBersenbrueck.Service
|
||||
}
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, header));
|
||||
}
|
||||
|
||||
}
|
||||
if (allStats.Count > 0)
|
||||
{
|
||||
ErstelleStatistikenFuerDieAnzeige(dc, stats, allStats);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return dc;
|
||||
}
|
||||
|
||||
private void ErstelleAlleStatistikenFuerNeueQA(DateTime statisticsDate, ServiceRecordStatisticsInfoDC dc, SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC pdc)
|
||||
private void BerechneAlleStatistikenFuerNeueQA(DateTime statisticsDate, ServiceRecordStatisticsInfoDC dc, SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC pdc, List<SupportConceptPeriodStatisticsDC> allStats)
|
||||
{
|
||||
//Eine Stunden der neuen QA wird unterteilt in 50 Min direkt, 10 Min Mittelbar, 6 Min indirekt und 15 Min Fahrtzeit
|
||||
var statsDirekt = new SupportConceptPeriodStatisticsDC();
|
||||
@@ -108,6 +113,8 @@ namespace HphBersenbrueck.Service
|
||||
statsDirekt.ApprovedMinutesTillNow = pdc.ApprovedMinutesTillNow; // / 1.2m;
|
||||
statsDirekt.SupportConceptApprovalPeriod = pdc.SupportConceptApprovalPeriod;
|
||||
|
||||
|
||||
|
||||
//statsMittelbar.MinutesApprovedPerWeek = pdc.MinutesApprovedPerWeek / 6m; //60 min. bewilligt sind 10 min. mittelbar
|
||||
//statsMittelbar.MinutesApprovedTotal = pdc.MinutesApprovedTotal / 6m;
|
||||
//statsMittelbar.ApprovedMinutesTillNow = pdc.ApprovedMinutesTillNow / 6m;
|
||||
@@ -128,15 +135,47 @@ namespace HphBersenbrueck.Service
|
||||
BerechneGeleisteteStunden(statisticsDate, statsIndirekt, "6 indirekte Leistung");
|
||||
BerechneGeleisteteStunden(statisticsDate, statsFahrtzeit, "15 Fahrzeit");
|
||||
|
||||
String zeitraum = "";
|
||||
if (stats.PeriodStatistics.Count > 1 && pdc.SupportConceptApprovalPeriod != null)
|
||||
if (allStats.Count >= 3)
|
||||
{
|
||||
zeitraum = String.Format(" ({0:dd.MM.yyyy} - {1:dd.MM.yyyy})", pdc.SupportConceptApprovalPeriod.StartDate, pdc.SupportConceptApprovalPeriod.EndDate);
|
||||
//Addiere Stunden der letzten Bewilligung auf die aktuelle Bewilligung
|
||||
var letzteDirekt = allStats[0];
|
||||
var letzteIndirekt = allStats[1];
|
||||
var letzteFahrtzeit = allStats[2];
|
||||
|
||||
|
||||
|
||||
letzteDirekt.MinutesApprovedTotal += statsDirekt.MinutesApprovedTotal;
|
||||
letzteDirekt.MinutesProvidedTotalRounded += statsDirekt.MinutesProvidedTotalRounded;
|
||||
|
||||
}
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsDirekt, " 50 direkte Leistung" + zeitraum));
|
||||
//dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsMittelbar, " 10 direkte Leistung"));
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsIndirekt, " 6 indirekte Leistung"));
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsFahrtzeit, " 15 Fahrzeit "));
|
||||
|
||||
|
||||
allStats.Add(statsDirekt);
|
||||
allStats.Add(statsIndirekt);
|
||||
allStats.Add(statsFahrtzeit);
|
||||
}
|
||||
|
||||
private void ErstelleStatistikenFuerDieAnzeige(ServiceRecordStatisticsInfoDC dc, SupportConceptStatisticsDC stats, List<SupportConceptPeriodStatisticsDC> allStats)
|
||||
{
|
||||
for (int i = 0; i < allStats.Count; i += 3)
|
||||
{
|
||||
var statsDirekt = allStats[i];
|
||||
var statsIndirekt = allStats[i + 1];
|
||||
var statsFahrtzeit = allStats[i + 2];
|
||||
String zeitraum = "";
|
||||
if (allStats.Count > 3 && statsDirekt.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
zeitraum = String.Format(" ({0:dd.MM.yyyy} - {1:dd.MM.yyyy})", statsDirekt.SupportConceptApprovalPeriod.StartDate, statsDirekt.SupportConceptApprovalPeriod.EndDate);
|
||||
}
|
||||
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsDirekt, " 50 direkte Leistung" + zeitraum));
|
||||
//dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsMittelbar, " 10 direkte Leistung"));
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsIndirekt, " 6 indirekte Leistung"));
|
||||
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, statsFahrtzeit, " 15 Fahrzeit "));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void BerechneGeleisteteStunden(DateTime statisticsDate, SupportConceptPeriodStatisticsDC pdc, string leistung)
|
||||
|
||||
@@ -565,7 +565,7 @@ namespace LebenshilfeFrankfurtOder
|
||||
{
|
||||
var invoices4 = CreateAbrechnungSbdPool(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
|
||||
invoices.AddRange(invoices4);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (abrechnungsArt == AbrechnungsEnum.Einzelfallhilfe)
|
||||
{
|
||||
@@ -1325,7 +1325,17 @@ namespace LebenshilfeFrankfurtOder
|
||||
{
|
||||
var invoicePeriod = new DateTimeSpan(start, end);
|
||||
|
||||
IList<CompactSupportConceptDC> supportConcepts = GetSupportConcepts(start, end, "Familienentlastender Dienst", "pool", customerOid, 24);
|
||||
long? regionOid = null;
|
||||
|
||||
if (serviceCategoryOid == 77)
|
||||
{
|
||||
regionOid = 24;
|
||||
}
|
||||
else
|
||||
{
|
||||
regionOid = 28;
|
||||
}
|
||||
IList<CompactSupportConceptDC> supportConcepts = GetSupportConcepts(start, end, "Familienentlastender Dienst", "pool", customerOid, regionOid);
|
||||
|
||||
var supportConcepts2ServiceRecords = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
|
||||
|
||||
|
||||
@@ -246,5 +246,18 @@ namespace SHKService
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override decimal GetFeiertagsFaktor(DateTime start)
|
||||
{
|
||||
if (start.Month == 12)
|
||||
{
|
||||
if (start.Day == 24 || start.Day == 31)
|
||||
{
|
||||
return 0.5m;
|
||||
}
|
||||
}
|
||||
|
||||
return base.GetFeiertagsFaktor(start);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -133,6 +133,7 @@
|
||||
</Compile>
|
||||
<Compile Include="Service\CustomCustomerService.cs" />
|
||||
<Compile Include="Service\CustomSupportConceptAnalysisCreator.cs" />
|
||||
<Compile Include="Service\CustomVacationService.cs" />
|
||||
<Compile Include="Teamstundenkonto.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
||||
30
ReportImp/SHKService/Service/CustomVacationService.cs
Normal file
30
ReportImp/SHKService/Service/CustomVacationService.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace SHKServiceSBD.Service
|
||||
{
|
||||
public class CustomVacationService : VacationService
|
||||
{
|
||||
public override List<FeiertagDC> GetFeiertage(int year, String bundesland)
|
||||
{
|
||||
List<FeiertagDC> list = base.GetFeiertage(year, bundesland);
|
||||
if (year >= 2024)
|
||||
{
|
||||
list.Add(new FeiertagDC { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -375,7 +375,7 @@ namespace SHKServiceSBD
|
||||
var faktor = GetFeiertagsFaktor(dd.Date);
|
||||
if (faktor > 0)
|
||||
{
|
||||
if (at.AbsenceReason.Description.ToLower().Contains("krankengeld") || at.AbsenceReason.Description.ToLower().Contains("krank ohne lohnfortzahlung"))
|
||||
if (at.AbsenceReason.Description.ToLower().Contains("krankengeld") || at.AbsenceReason.Description.ToLower().Contains("elternzeit") || at.AbsenceReason.Description.ToLower().Contains("krank ohne lohnfortzahlung"))
|
||||
{
|
||||
feiertagAnrechnen = false;
|
||||
dd.HoursSick = sollProTag;
|
||||
@@ -429,6 +429,7 @@ namespace SHKServiceSBD
|
||||
if (feiertagAnrechnen && HatVertrag(ed, dd.Date))
|
||||
{
|
||||
var soll = BerechneSollAmTag(ed, dd.Date) * 60;
|
||||
soll *= GetFeiertagsFaktor(dd.Date);
|
||||
if (dd.MinutesTotal <= soll)
|
||||
{
|
||||
dd.MinutesTotal = soll;
|
||||
@@ -565,7 +566,7 @@ namespace SHKServiceSBD
|
||||
{
|
||||
foreach (var at in emp.AbsenceTimes)
|
||||
{
|
||||
if (at.AbsenceReason.Description.ToLower().Contains("unbezahlter urlaub") || at.AbsenceReason.Description.ToLower().Contains("krankengeld"))
|
||||
if (at.AbsenceReason.Description.ToLower().Contains("unbezahlter urlaub") || at.AbsenceReason.Description.ToLower().Contains("krankengeld") || at.AbsenceReason.Description.ToLower().Contains("elternzeit"))
|
||||
{
|
||||
if (at.Start.Value <= start && (!at.End.HasValue || at.End.Value >= start))
|
||||
{
|
||||
@@ -636,6 +637,13 @@ namespace SHKServiceSBD
|
||||
//{
|
||||
// return 1;
|
||||
//}
|
||||
if (start.Month == 12)
|
||||
{
|
||||
if (start.Day == 24 || start.Day == 31)
|
||||
{
|
||||
return 0.5m;
|
||||
}
|
||||
}
|
||||
|
||||
return base.GetFeiertagsFaktor(start);
|
||||
}
|
||||
@@ -649,5 +657,6 @@ namespace SHKServiceSBD
|
||||
{
|
||||
return vacationService.GetFerien(start, vacationService.Bundesland);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,8 @@ namespace SHKServiceSBD
|
||||
|
||||
}
|
||||
if (dd.AbsenceTimes != null && dd.AbsenceTimes.Count > 0 &&
|
||||
(dd.AbsenceTimes[0].AbsenceReason.Description.Contains("Krankengeld") ||
|
||||
(dd.AbsenceTimes[0].AbsenceReason.Description.Contains("Krankengeld") ||
|
||||
dd.AbsenceTimes[0].AbsenceReason.Description.Contains("Elternzeit") ||
|
||||
dd.AbsenceTimes[0].AbsenceReason.Description.Contains("ohne Lohnfortzahlung")))
|
||||
{
|
||||
ed.StundenSollMax -= dd.HoursSick;
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
</Compile>
|
||||
<Compile Include="Service\CustomCustomerService.cs" />
|
||||
<Compile Include="Service\CustomOperationService.cs" />
|
||||
<Compile Include="Service\CustomVacationService.cs" />
|
||||
<Compile Include="Service\CustomVertretungsManager.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
30
ReportImp/SHKServiceSBD/Service/CustomVacationService.cs
Normal file
30
ReportImp/SHKServiceSBD/Service/CustomVacationService.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace SHKServiceSBD.Service
|
||||
{
|
||||
public class CustomVacationService : VacationService
|
||||
{
|
||||
public override List<FeiertagDC> GetFeiertage(int year, String bundesland)
|
||||
{
|
||||
List<FeiertagDC> list = base.GetFeiertage(year, bundesland);
|
||||
if (year >= 2024)
|
||||
{
|
||||
list.Add(new FeiertagDC { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,16 @@ namespace VSDHammReports
|
||||
|
||||
internal class CustomSettlementInvoiceCreation : LWLSettlementInvoiceCreation
|
||||
{
|
||||
|
||||
|
||||
public override bool SchneideBeiErreichenDesBudgetsAb { get { return true; } }
|
||||
|
||||
|
||||
public override void CreateInvoiceDetailsTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
|
||||
{
|
||||
base.CreateInvoiceDetailsTheOldWay(si, c2s);
|
||||
}
|
||||
|
||||
public override List<InvoiceItemDC> CreateInvoiceItems(Settlement2DC si, IList<ApprovalPeriod> apList, bool schneideBeiMaxAb)
|
||||
{
|
||||
//var items = base.CreateInvoiceItems(si, apList, true);
|
||||
@@ -44,8 +54,6 @@ namespace VSDHammReports
|
||||
list.Add(ap);
|
||||
}
|
||||
|
||||
decimal maxApprovedFls = si.ApprovedFLS ?? 0;
|
||||
decimal totalHours = 0;
|
||||
foreach (var key in apsByHourlyRate.Keys)
|
||||
{
|
||||
IList<ApprovalPeriod> list = apsByHourlyRate[key];
|
||||
@@ -64,6 +72,7 @@ namespace VSDHammReports
|
||||
{
|
||||
minutesTotal += approvalPeriod.RecordedMinutes;
|
||||
minutesTotalBudget += approvalPeriod.BudgetMinutes;
|
||||
|
||||
if (approvalPeriod.PeriodStartDate < start)
|
||||
start = approvalPeriod.PeriodStartDate;
|
||||
if (approvalPeriod.PeriodEndDate > end)
|
||||
@@ -92,22 +101,6 @@ namespace VSDHammReports
|
||||
hoursBudget *= (100 + rf) / 100;
|
||||
hoursBudget = Math.Round(hoursBudget, 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
if (schneideBeiMaxAb)
|
||||
{
|
||||
if (totalHours + hoursBudget > maxApprovedFls)
|
||||
{
|
||||
hoursBudget = maxApprovedFls - totalHours;
|
||||
if (hoursBudget < 0)
|
||||
{
|
||||
hoursBudget = 0;
|
||||
}
|
||||
if (hours > hoursBudget)
|
||||
{
|
||||
hours = hoursBudget;
|
||||
}
|
||||
}
|
||||
}
|
||||
totalHours += hoursBudget;
|
||||
|
||||
ii.UnitCount = hours;
|
||||
ii.UnitCountBudget = hoursBudget;
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
|
||||
while (index < lines.Length)
|
||||
{
|
||||
var datumTa = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
||||
var datumTa = LvrAvisTextAbschnittReader.LeseBisDatum(lines, index, false);
|
||||
if (datumTa.Success)
|
||||
{
|
||||
index = datumTa.ZeilenIndex;
|
||||
@@ -47,7 +47,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
|
||||
StringBuilder textBereich = new StringBuilder();
|
||||
|
||||
var monatTa = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Monat:");
|
||||
var monatTa = LvrAvisTextAbschnittReader.LeseBisText(lines, index, "Monat:");
|
||||
if (monatTa.Success)
|
||||
{
|
||||
textBereich.Append(monatTa.Text);
|
||||
@@ -79,11 +79,11 @@ namespace BeWo.Service.Import.AvisImport
|
||||
int index = 0;
|
||||
|
||||
|
||||
var ta = LvrAvisTextAbschnitt.LeseBisText(lines, index, Aktenzeichen);
|
||||
var ta = LvrAvisTextAbschnittReader.LeseBisText(lines, index, Aktenzeichen);
|
||||
index = ta.ZeilenIndex;
|
||||
//Prüfe ob zuerst der Sachbearbeiter oder der Klientenname im Text steht. Der Sachbearbeiter beginnt mit dem Text "Sachbearbeiter:", der Klient endet mit dem Text "Aktenzeichen"
|
||||
var sbTest = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Sachbearbeiter");
|
||||
var azTest = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Aktenzeichen");
|
||||
var sbTest = LvrAvisTextAbschnittReader.LeseBisText(lines, index, "Sachbearbeiter");
|
||||
var azTest = LvrAvisTextAbschnittReader.LeseBisText(lines, index, "Aktenzeichen");
|
||||
|
||||
if (sbTest.Success && azTest.Success)
|
||||
{
|
||||
@@ -96,7 +96,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
klientenZeile = azTest.Text;
|
||||
|
||||
//Sachbearbeiter steht hinter Klient
|
||||
ta = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
||||
ta = LvrAvisTextAbschnittReader.LeseBisDatum(lines, index, false);
|
||||
sbZeile = ta.Text;
|
||||
}
|
||||
else
|
||||
@@ -104,7 +104,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
index = sbTest.ZeilenIndex + 1;
|
||||
sbZeile = sbTest.Text;
|
||||
//Suche Klient hinter Sachbearbeiter
|
||||
ta = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
||||
ta = LvrAvisTextAbschnittReader.LeseBisDatum(lines, index, false);
|
||||
klientenZeile = ta.Text;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,9 +39,9 @@ namespace BeWo.Service.Import.AvisImport
|
||||
|
||||
//Suche Rechnungspositionen anhand des Euro Zeichens
|
||||
//Prüfe ob ein neues Datum, eine Rechnungsposition oder die Gesamtsumme als nächstes kommt
|
||||
var datumTa = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, true);
|
||||
var betragTa = LvrAvisTextAbschnitt.LeseBisText(lines, datumTa.ZeilenIndex, "€");
|
||||
var gesamtTa = LvrAvisTextAbschnitt.LeseBisText(lines, betragTa.ZeilenIndex, "Gesamtsumme");
|
||||
var datumTa = LvrAvisTextAbschnittReader.LeseBisDatum(lines, index, true);
|
||||
var betragTa = LvrAvisTextAbschnittReader.LeseBisText(lines, datumTa.ZeilenIndex, "€");
|
||||
var gesamtTa = LvrAvisTextAbschnittReader.LeseBisText(lines, betragTa.ZeilenIndex, "Gesamtsumme");
|
||||
|
||||
if (datumTa.Success)
|
||||
{
|
||||
@@ -54,7 +54,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
while (betragTa.Success && betragTa.ZeilenIndex < gesamtTa.ZeilenIndex && index < lines.Length)
|
||||
{
|
||||
var line = lines[betragTa.ZeilenIndex];
|
||||
decimal? betrag = LvrAvisTextAbschnitt.LeseBetrag(line);
|
||||
decimal? betrag = LvrAvisTextAbschnittReader.LeseBetrag(line);
|
||||
if (betrag.HasValue)
|
||||
{
|
||||
var neuerAvis = new Avis();
|
||||
@@ -78,7 +78,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
letzterAvis.Verwendungszweck = String.Format("{0}\n{1}", letzterAvis.Verwendungszweck, line);
|
||||
}
|
||||
|
||||
betragTa = LvrAvisTextAbschnitt.LeseBisText(lines, betragTa.ZeilenIndex + 1, "€");
|
||||
betragTa = LvrAvisTextAbschnittReader.LeseBisText(lines, betragTa.ZeilenIndex + 1, "€");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using DevExpress.Pdf;
|
||||
using BeWo.Service.Import;
|
||||
using DevExpress.Pdf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
@@ -9,42 +10,18 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BeWo.Service.Import.AvisImport
|
||||
{
|
||||
public class LvrAvisTextAbschnitt
|
||||
public class LvrAvisTextAbschnittReader
|
||||
{
|
||||
public String Text { get; set; }
|
||||
|
||||
public int ZeilenIndex { get; set; }
|
||||
|
||||
public bool Success { get; set; }
|
||||
|
||||
public static LvrAvisTextAbschnitt LeseBisText(string[] lines, int index, String suchText)
|
||||
public static TextAbschnitt LeseBisText(string[] lines, int zeilenIndex, string suchText)
|
||||
{
|
||||
var ta = new LvrAvisTextAbschnitt();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ta.ZeilenIndex = index;
|
||||
while (index < lines.Length)
|
||||
{
|
||||
String line = lines[index];
|
||||
sb.AppendLine(line);
|
||||
|
||||
if (line.Contains(suchText))
|
||||
{
|
||||
ta.Success = true;
|
||||
ta.ZeilenIndex = index;
|
||||
ta.Text = sb.ToString();
|
||||
|
||||
return ta;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
return ta;
|
||||
return TextAbschnittReader.LeseBisText(lines, zeilenIndex, suchText, false, true, false);
|
||||
}
|
||||
|
||||
public static LvrAvisTextAbschnitt LeseBisDatum(string[] lines, int index, bool addDatumsZeile)
|
||||
public static TextAbschnitt LeseBisDatum(string[] lines, int index, bool addDatumsZeile)
|
||||
{
|
||||
var ta = new LvrAvisTextAbschnitt();
|
||||
var ta = new TextAbschnitt();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
while (index < lines.Length)
|
||||
@@ -89,6 +66,7 @@ namespace BeWo.Service.Import.AvisImport
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,51 +17,230 @@ namespace BeWo.Service.Import.Perseh
|
||||
HilfeplanImportDC result = new HilfeplanImportDC();
|
||||
result.Gruppen = new List<HilfeplanImportItemDC>();
|
||||
|
||||
var gruppe1 = new HilfeplanImportItemDC { Label = "Leistungssuchende oder leistungsberechtigte Person", Items = new List<HilfeplanImportItemDC>() };
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
|
||||
//var gruppe1 = new HilfeplanImportItemDC { Label = "Leistungssuchende oder leistungsberechtigte Person", Items = new List<HilfeplanImportItemDC>() };
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
|
||||
|
||||
result.Gruppen.Add(gruppe1);
|
||||
//result.Gruppen.Add(gruppe1);
|
||||
|
||||
gruppe1 = new HilfeplanImportItemDC { Label = "Gruppe 2", Items = new List<HilfeplanImportItemDC>() };
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
|
||||
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
|
||||
//gruppe1 = new HilfeplanImportItemDC { Label = "Gruppe 2", Items = new List<HilfeplanImportItemDC>() };
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Bäurle", FieldName = "LastName" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Vorname", Content = "Christian", FieldName = "FirstName" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "08.04.1972", FieldName = "Birthdate" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Nationalität", Content = "deutsch" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Beruf", Content = "Wirt" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "73.20-2100009313-01" });
|
||||
//gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Erstellt von der\nleistungssuchenden oder\nleistungsberechtigten Person\nmit Behinderung unter", Content = "Max Mustermann (Bezugsbetreuer)\nMaria Musterfrau (Sozialarbeiterin)" });
|
||||
|
||||
result.Gruppen.Add(gruppe1);
|
||||
//result.Gruppen.Add(gruppe1);
|
||||
|
||||
|
||||
|
||||
result.Ziele = new List<HilfeplanImportZielDC>();
|
||||
|
||||
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
|
||||
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
|
||||
//result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
|
||||
//result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Lernen und Wissensanwendung", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
|
||||
|
||||
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
|
||||
result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
|
||||
//result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 1", ZielBeschreibung = "Herr Sowieso hat eine seinen Bedürfnissen entsprechende und ihn stabilisierende Tagesstruktur mit einer regelmäßigen, genesungsfördernden Beschäftigung(z.B.Ergotherapie) entwickelt." });
|
||||
//result.Ziele.Add(new HilfeplanImportZielDC { Bereich = "Allgemeine Aufgaben und Anforderungen", ZielName = "Ziel 2", ZielBeschreibung = "Herr Sowieso hat Angstbewältigungsstrategien sowie Stabilisierungstechniken erlernt und kann diese in Alltagssituationen anwenden" });
|
||||
|
||||
//using (var processor = new PdfDocumentProcessor())
|
||||
//{
|
||||
// using (var ms = new MemoryStream(daten))
|
||||
// {
|
||||
// processor.LoadDocument(ms);
|
||||
using (var processor = new PdfDocumentProcessor())
|
||||
{
|
||||
using (var ms = new MemoryStream(daten))
|
||||
{
|
||||
processor.LoadDocument(ms);
|
||||
|
||||
// var pdfText = processor.Text;
|
||||
var pdfText = processor.Text;
|
||||
|
||||
|
||||
// }
|
||||
//}
|
||||
var customerGruppe = ErstelleKlientenStammdatenGruppe(pdfText);
|
||||
|
||||
if (customerGruppe != null)
|
||||
{
|
||||
result.Gruppen.Add(customerGruppe);
|
||||
}
|
||||
|
||||
|
||||
result.Ziele = ErstelleAlleZiele(pdfText);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private IList<HilfeplanImportZielDC> ErstelleAlleZiele(string pdfText)
|
||||
{
|
||||
var ziele = new List<HilfeplanImportZielDC>();
|
||||
//Suche Zeile "Zielplanung". So beginnt hinten im Dokument der Bereich mit der Zusammenfassung der Ziele
|
||||
|
||||
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var startIdx = -1;
|
||||
var endIdx = -1;
|
||||
StringBuilder gesamtTextMitZielen = new StringBuilder();
|
||||
|
||||
for (int i = zeilen.Length - 1; i >= 0; i--)
|
||||
{
|
||||
var z = zeilen[i];
|
||||
|
||||
if (z == "Zielplanung")
|
||||
{
|
||||
startIdx = i;
|
||||
}
|
||||
if (z.StartsWith("Übersicht der Leistungsplanung "))
|
||||
{
|
||||
endIdx = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (startIdx >= 0)
|
||||
{
|
||||
for (int i = startIdx; i < endIdx; i++)
|
||||
{
|
||||
gesamtTextMitZielen.AppendLine(zeilen[i]);
|
||||
}
|
||||
zeilen = gesamtTextMitZielen.ToString().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
startIdx = 0;
|
||||
while (startIdx >= 0)
|
||||
{
|
||||
var ta = TextAbschnittReader.LeseBisText(zeilen, startIdx, "Lebensbereich ", true, false, false);
|
||||
if (ta.Success)
|
||||
{
|
||||
ziele.AddRange(ErstelleBereichMitZielen(zeilen, ta));
|
||||
startIdx = ta.ZeilenIndex + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
startIdx = -1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return ziele;
|
||||
|
||||
}
|
||||
|
||||
private IList<HilfeplanImportZielDC> ErstelleBereichMitZielen(string[] zeilen, TextAbschnitt ta)
|
||||
{
|
||||
var ziele = new List<HilfeplanImportZielDC>();
|
||||
|
||||
String bereich = zeilen[ta.ZeilenIndex];
|
||||
int idxBereichStart = ta.ZeilenIndex + 1;
|
||||
int idxBereichtEnde = zeilen.Length;
|
||||
|
||||
var taEnde = TextAbschnittReader.LeseBisText(zeilen, ta.ZeilenIndex + 1, "Lebensbereich ", true, false, false);
|
||||
if (taEnde.Success)
|
||||
{
|
||||
idxBereichtEnde = taEnde.ZeilenIndex;
|
||||
}
|
||||
|
||||
HilfeplanImportZielDC ziel = null;
|
||||
for (int i = idxBereichStart; i < idxBereichtEnde; i++)
|
||||
{
|
||||
String zeile = zeilen[i];
|
||||
if (zeile.StartsWith("Ziele • ") || zeile.StartsWith("• "))
|
||||
{
|
||||
ziel = new HilfeplanImportZielDC();
|
||||
ziel.Bereich = bereich;
|
||||
ziel.ZielName = zeile.Replace("Ziele • ", "").Replace("• ", "").Trim();
|
||||
|
||||
ziele.Add(ziel);
|
||||
}
|
||||
else if (ziel != null)
|
||||
{
|
||||
if (!IgnoriereZeile(zeile))
|
||||
{
|
||||
ziel.ZielName += " " + zeile.Trim();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return ziele;
|
||||
}
|
||||
|
||||
private bool IgnoriereZeile(string zeile)
|
||||
{
|
||||
if (zeile.StartsWith("(c) Landschaftsverband") || zeile.StartsWith("Gesprächsleitfaden - "))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (zeile.StartsWith("V1") || zeile.StartsWith("V2") || zeile.StartsWith("V3"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private HilfeplanImportItemDC ErstelleKlientenStammdatenGruppe(string pdfText)
|
||||
{
|
||||
if (pdfText.Contains("Individuelle Bedarfsermittlung - Element Basisdaten"))
|
||||
{
|
||||
var customerGruppe = new HilfeplanImportItemDC { Label = "Stammdaten", Items = new List<HilfeplanImportItemDC>() };
|
||||
customerGruppe.Items = LeseKlientenStammdaten(pdfText);
|
||||
|
||||
return customerGruppe;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<HilfeplanImportItemDC> LeseKlientenStammdaten(string pdfText)
|
||||
{
|
||||
var liste = new List<HilfeplanImportItemDC>();
|
||||
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
var ta = TextAbschnittReader.LeseBisText(zeilen, 0, "BEI_NRW für den Zeitraum vom ", true, false, false);
|
||||
|
||||
if (ta.Success)
|
||||
{
|
||||
var idx = ta.ZeilenIndex;
|
||||
liste.Add(ErstelleStammdatenFeld("BEI_NRW für den Zeitraum vom", "ApprovalPeriod", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("GP-Nummer/Az", "CustomerReferenceNumber", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Name", "Lastname", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Vorname", "Firstname", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Titel", "Titel", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Geburtsdatum", "Birthdate", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Geschlecht", "Sex", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Nationalität", "Nationality", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Beruf", "Job", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Familienstand", "FamilyStatus", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Anzahl und Alter der Kinder", "Children", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("PLZ", "PostalCode", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Ort", "Town", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Straße", "Street", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Telefon", "Phone", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("Fax", "Fax", zeilen, idx, out idx));
|
||||
liste.Add(ErstelleStammdatenFeld("E-Mail", "EMail", zeilen, idx, out idx));
|
||||
}
|
||||
|
||||
|
||||
|
||||
return liste;
|
||||
}
|
||||
|
||||
private HilfeplanImportItemDC ErstelleStammdatenFeld(string label, string fieldname, string[] zeilen, int startIndex, out int foundIdx)
|
||||
{
|
||||
var item = new HilfeplanImportItemDC { Label = label, FieldName = fieldname };
|
||||
|
||||
var ta = TextAbschnittReader.LeseBisText(zeilen, startIndex, label, true, false, false);
|
||||
foundIdx = 0;
|
||||
if (ta.Success)
|
||||
{
|
||||
item.Content = zeilen[ta.ZeilenIndex].Replace(label, "").Trim();
|
||||
if (item.Label.Contains("_"))
|
||||
{
|
||||
item.Label = label.Replace("_", "__");
|
||||
}
|
||||
foundIdx = ta.ZeilenIndex;
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
23
Service/Import/TextAbschnitt.cs
Normal file
23
Service/Import/TextAbschnitt.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using DevExpress.Pdf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BeWo.Service.Import
|
||||
{
|
||||
public class TextAbschnitt
|
||||
{
|
||||
public String Text { get; set; }
|
||||
|
||||
public int ZeilenIndex { get; set; }
|
||||
|
||||
public bool Success { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
42
Service/Import/TextAbschnittReader.cs
Normal file
42
Service/Import/TextAbschnittReader.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using DevExpress.Pdf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BeWo.Service.Import
|
||||
{
|
||||
public class TextAbschnittReader
|
||||
{
|
||||
|
||||
public static TextAbschnitt LeseBisText(string[] lines, int index, String suchText, bool sucheAmZeilenAnfang, bool sucheInnerhalbDerZeile, bool sucheAmZeilenEnde)
|
||||
{
|
||||
var ta = new TextAbschnitt();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
ta.ZeilenIndex = index;
|
||||
while (index < lines.Length)
|
||||
{
|
||||
String line = lines[index];
|
||||
sb.AppendLine(line);
|
||||
|
||||
if ((sucheAmZeilenAnfang && line.StartsWith(suchText)) || (sucheInnerhalbDerZeile && line.Contains(suchText)) || (sucheAmZeilenEnde && line.EndsWith(suchText)))
|
||||
{
|
||||
ta.Success = true;
|
||||
ta.ZeilenIndex = index;
|
||||
ta.Text = sb.ToString();
|
||||
|
||||
return ta;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
return ta;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -102,8 +102,8 @@ namespace BeWo.Service.Invoicing
|
||||
//decimal flmCleared = 0;
|
||||
|
||||
records = records.OrderBy<ServiceRecord, DateTime>(sr => sr.Start.HasValue ? sr.Start.Value : DateTime.MinValue).ToList<ServiceRecord>();
|
||||
decimal maxApprovedMinutes = ((si.ApprovedFLS ?? 0) * 60) / rf;
|
||||
decimal totalMinutes = 0;
|
||||
decimal maxApprovedMinutes = (si.ApprovedFLS ?? 0) * 60;
|
||||
decimal totalMinutesGeleistet = 0;
|
||||
foreach (var iRecord in records)
|
||||
{
|
||||
if (iRecord.ServiceDescription.ServiceCategory.IsBillable)
|
||||
@@ -159,14 +159,16 @@ namespace BeWo.Service.Invoicing
|
||||
|
||||
if (ap != null)
|
||||
{
|
||||
//Christian wars:-)
|
||||
if (SchneideBeiErreichenDesBudgetsAb)
|
||||
//Christian wars:-)
|
||||
var dauerBudgetMitRf = dauerBudget * ((ap.RateFactor ?? 0) + 100) / 100;
|
||||
if (SchneideBeiErreichenDesBudgetsAb)
|
||||
{
|
||||
|
||||
if (totalMinutes + dauerBudget > maxApprovedMinutes)
|
||||
if (totalMinutesGeleistet + dauerBudgetMitRf > maxApprovedMinutes)
|
||||
{
|
||||
dauerBudget = maxApprovedMinutes - totalMinutes;
|
||||
if (dauerBudget < 0)
|
||||
dauerBudget = maxApprovedMinutes - totalMinutesGeleistet;
|
||||
dauerBudget /= ((ap.RateFactor ?? 0) + 100) / 100;
|
||||
|
||||
if (dauerBudget < 0)
|
||||
{
|
||||
dauerBudget = 0;
|
||||
}
|
||||
@@ -175,8 +177,12 @@ namespace BeWo.Service.Invoicing
|
||||
dauerAbrechenbar = dauerBudget;
|
||||
}
|
||||
}
|
||||
}
|
||||
totalMinutes += dauerBudget;
|
||||
|
||||
|
||||
}
|
||||
|
||||
totalMinutesGeleistet += dauerBudgetMitRf;
|
||||
|
||||
ap.RecordedMinutes += dauerAbrechenbar;
|
||||
ap.BudgetMinutes += dauerBudget;
|
||||
}
|
||||
@@ -190,7 +196,8 @@ namespace BeWo.Service.Invoicing
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
si.RecordedMinutesTotal = totalMinutesGeleistet;
|
||||
|
||||
//decimal? maxAmount = CalculateMaxAmount(si, apList);
|
||||
var gesamtListe = new List<ApprovalPeriod>();
|
||||
gesamtListe.AddRange(apListFLS.Where(a => a.RecordedMinutes > 0));
|
||||
|
||||
@@ -484,9 +484,9 @@ namespace BeWo.Service.Invoicing
|
||||
}
|
||||
}
|
||||
|
||||
si.ApprovedFLSWithActualHourlyRate = Math.Round(si.ApprovedFLSWithActualHourlyRate, 4, MidpointRounding.AwayFromZero);
|
||||
si.ApprovedFLSWithHourlyRate3 = Math.Round(si.ApprovedFLSWithHourlyRate3, 4, MidpointRounding.AwayFromZero);
|
||||
si.ApprovedFLSWithOldHourlyRate = Math.Round(si.ApprovedFLSWithOldHourlyRate, 4, MidpointRounding.AwayFromZero);
|
||||
si.ApprovedFLSWithActualHourlyRate = Math.Round(si.ApprovedFLSWithActualHourlyRate, 2, MidpointRounding.AwayFromZero);
|
||||
si.ApprovedFLSWithHourlyRate3 = Math.Round(si.ApprovedFLSWithHourlyRate3, 2, MidpointRounding.AwayFromZero);
|
||||
si.ApprovedFLSWithOldHourlyRate = Math.Round(si.ApprovedFLSWithOldHourlyRate, 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
decimal rf = 1;
|
||||
if (si.RateFactor.HasValue && si.RateFactor.Value != 0)
|
||||
@@ -903,17 +903,19 @@ namespace BeWo.Service.Invoicing
|
||||
{
|
||||
if (ii.UnitCount.HasValue)
|
||||
{
|
||||
var unitCountBudget = Math.Round(ii.UnitCountBudget ?? ii.UnitCount ?? 0, 2, MidpointRounding.AwayFromZero);
|
||||
var unitCountBudget = Math.Round(ii.UnitCountBudget ?? ii.UnitCount ?? 0, 2, MidpointRounding.AwayFromZero);
|
||||
if (maxApprovedFls < unitCountBudget)
|
||||
unitCountBudget = maxApprovedFls;
|
||||
|
||||
maxApprovedFls -= unitCountBudget;
|
||||
|
||||
|
||||
ii.UnitCount = Math.Round(ii.UnitCount.Value, 2, MidpointRounding.AwayFromZero);
|
||||
//if (unitCountBudget < ii.UnitCount)
|
||||
//{
|
||||
// ii.UnitCount = unitCountBudget;
|
||||
//}
|
||||
if (ii.AmountPerUnit.HasValue)
|
||||
if (ii.AmountPerUnit.HasValue)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(ii.ItemDescription) && ii.ItemDescription == "Fehlkontakte" && ii.ProzentAbrechenbar.HasValue)
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "9098141768"; // Fib e.V. Marburg
|
||||
//t = "1505148718"; // VSD Hamm
|
||||
//t = "5926081834"; // Spektrum
|
||||
//t = "1378137009"; // BeWo Direkt+
|
||||
//t = "1378137009"; // BeWo Direkt
|
||||
//t = "3010479871"; // Aachener Verein
|
||||
//t = "3849764093"; // Club 74
|
||||
//t = "5805202339"; // Wegweiser Betreuungsdienst
|
||||
@@ -51,7 +51,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "4950382346"; // Holsinger
|
||||
//t = "5973016645"; // Verein Lebensgestaltung Hanau
|
||||
//t = "7375324044"; // Diakonie KK Kleve
|
||||
t = "1441747891"; // BeWo Mobil Köln
|
||||
//t = "1441747891"; // BeWo Mobil Köln
|
||||
//t = "5120047701"; // Trialog
|
||||
//t = "3629696651"; // Soziale Dienste Niederrhein (SDN)
|
||||
//t = "9893557471"; // Caritas Frankfurt
|
||||
@@ -390,7 +390,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "8735029937"; // Caritas Ostvest
|
||||
//t = "7653029063"; // SkF Leverkusen JuHi
|
||||
//t = "5000000000";
|
||||
|
||||
t = "2663321234";
|
||||
return t;
|
||||
#else
|
||||
if (MultitenancyOperationContextExt.Current != null)
|
||||
|
||||
@@ -386,11 +386,13 @@
|
||||
<Compile Include="Import\AvisImport\AviseImporter.cs" />
|
||||
<Compile Include="Import\AvisImport\HilfeplanInfo.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisTextReader.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisTextAbschnitt.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisTextAbschnittReader.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisMonatGesamt.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisKlientGesamt.cs" />
|
||||
<Compile Include="Import\AvisImport\LvrAvisPdfReader.cs" />
|
||||
<Compile Include="Import\AvisImport\Avis.cs" />
|
||||
<Compile Include="Import\TextAbschnittReader.cs" />
|
||||
<Compile Include="Import\TextAbschnitt.cs" />
|
||||
<Compile Include="Import\Perseh\PersehReader.cs" />
|
||||
<Compile Include="Invoicing\ApprovalPeriod.cs" />
|
||||
<Compile Include="Invoicing\GeneralInvoiceCreation.cs" />
|
||||
|
||||
@@ -168,6 +168,9 @@ namespace BS.Shared.DataContracts
|
||||
[DataMember]
|
||||
public decimal RecordedBillableFLSNetto { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public decimal RecordedMinutesTotal { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public decimal RecordedBillableFLSNotBillableCustomerAbsent { get; set; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user