Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -831,6 +831,7 @@
|
||||
<Compile Include="Converter\DeleteForGoodRight2VisibilityConverter.cs" />
|
||||
<Compile Include="Converter\EnumToDescriptionConverter.cs" />
|
||||
<Compile Include="Converter\FileAttachmentTypeConverter.cs" />
|
||||
<Compile Include="Converter\GkvState2StringConverter.cs" />
|
||||
<Compile Include="Converter\IndividualGoalMassnahmeUncheckPreventConverter.cs" />
|
||||
<Compile Include="Converter\Int2DecimalConverter.cs" />
|
||||
<Compile Include="Converter\AssessmentSheetHeaderToForegroundConverter.cs" />
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<conv:CollectionCountToVisibilityConverter x:Key="CollectionCountToVisibilityConverter" />
|
||||
<conv:DeleteForGoodRight2VisibilityConverter x:Key="DeleteForGoodRight2VisibilityConverter" />
|
||||
<conv:AnonymizationRight2VisibilityConverter x:Key="AnonymizationRight2VisibilityConverter" />
|
||||
|
||||
<conv:GkvState2StringConverter x:Key="GkvState2StringConverter" />
|
||||
|
||||
<Style x:Key="SupportConceptDetailStyle" TargetType="{x:Type ListBoxItem}">
|
||||
<Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type ItemsControl}, Mode=FindAncestor}}" />
|
||||
|
||||
@@ -600,7 +600,7 @@ namespace BeWo
|
||||
AppSettings.ZeiterfassungsSchwellwert = zeiterfassungsSchwellwert;
|
||||
AppSettings.TimeRecordingMenuName = timeRecordingMenuName;
|
||||
AppSettings.ShowDistanceFields = showServiceRecordsDistanceFields;
|
||||
AppSettings.ShowBetrag = showBetrag;
|
||||
AppSettings.ShowBetrag = showBetrag;
|
||||
AppSettings.ShowHilfeplanBezeichnung = showHilfeplanBezeichnung;
|
||||
AppSettings.ShowArbeitszeiten = showArbeitszeiten;
|
||||
AppSettings.ShowSignatures = showSignatures;
|
||||
|
||||
39
BeWo/Converter/GkvState2StringConverter.cs
Normal file
39
BeWo/Converter/GkvState2StringConverter.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using BS.Shared;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BeWo.Converter
|
||||
{
|
||||
public class GkvState2StringConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var state = value as GkvState?;
|
||||
|
||||
if (state is null)
|
||||
return null;
|
||||
|
||||
switch (state.Value)
|
||||
{
|
||||
case GkvState.NoSend: return "Erstellt";
|
||||
case GkvState.Waiting: return "Gesendet";
|
||||
case GkvState.Error: return "Fehler";
|
||||
case GkvState.ErrorFatal: return "Fataler Fehler";
|
||||
case GkvState.Paid: return "Bezahlt";
|
||||
case GkvState.OldAndNoFeedback: return "Keine Antwort";
|
||||
}
|
||||
|
||||
return state.ToString();
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,68 +44,21 @@
|
||||
</Grid.RowDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Margin="3" Content="Gkv Oid:"/>
|
||||
<TextBox Grid.Row="0" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding GkvAbrechnungOid}"/>
|
||||
<Label Grid.Row="1" Grid.Column="0" Margin="3" Content="IK Leistungserbringer:"/>
|
||||
<TextBox Grid.Row="1" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding IKLeistungserbringer}"/>
|
||||
<Label Grid.Row="2" Grid.Column="0" Margin="3" Content="IK Krankenkasse:"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding IKVersichertenKarte}"/>
|
||||
<Label Grid.Row="3" Grid.Column="0" Margin="3" Content="IK Kostenträger:"/>
|
||||
<TextBox Grid.Row="3" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding IKKostenträger}"/>
|
||||
<Label Grid.Row="4" Grid.Column="0" Margin="3" Content="IK Datenannahmestelle:"/>
|
||||
<TextBox Grid.Row="4" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding IKDatenannahmestelle}"/>
|
||||
<Label Grid.Row="5" Grid.Column="0" Margin="3" Content="Abrechnungsbeginn:"/>
|
||||
<TextBox Grid.Row="5" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding AbrechnungsZeitraumStart}"/>
|
||||
<Label Grid.Row="6" Grid.Column="0" Margin="3" Content="Abrechnungsende:"/>
|
||||
<TextBox Grid.Row="6" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding AbrechnungsZeitraumEnde}"/>
|
||||
<Label Grid.Row="7" Grid.Column="0" Margin="3" Content="Transfername:"/>
|
||||
<TextBox Grid.Row="7" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Transfername}"/>
|
||||
<Label Grid.Row="8" Grid.Column="0" Margin="3" Content="Datenaustauschreferenz:"/>
|
||||
<TextBox Grid.Row="8" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Datenaustauschreferenz}"/>
|
||||
<Label Grid.Row="9" Grid.Column="0" Margin="3" Content="Erstellt am:"/>
|
||||
<TextBox Grid.Row="9" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding ErstelltAm}"/>
|
||||
<Label Grid.Row="10" Grid.Column="0" Margin="3" Content="Dateigröße:"/>
|
||||
<TextBox Grid.Row="10" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding DateigrößeDisplayname}"/>
|
||||
<Label Grid.Row="14" Grid.Column="0" Margin="3" Content="Betrag:"/>
|
||||
<TextBox Grid.Row="14" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Betrag, StringFormat={}{0:0.00 €}}"/>
|
||||
<Label Grid.Row="15" Grid.Column="0" Margin="3" Content="Bezahlt:"/>
|
||||
<CheckBox Grid.Row="15" Grid.Column="2" Margin="3" HorizontalAlignment="Left" x:Name="Checkbox_Bezahlt" IsChecked="{Binding Bezahlt}"/>
|
||||
<!--<TextBox Grid.Row="15" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Bezahlt}"/>-->
|
||||
<Label Grid.Row="16" Grid.Column="0" Margin="3" Content="Bemerkung:"/>
|
||||
<TextBox Grid.Row="16" Grid.Column="2" Margin="3" Text="{Binding Notice}" x:Name="Textbox_Notice" />
|
||||
<TextBox Grid.Row="16" Grid.Column="2" Margin="3" Text="{Binding Notice}" x:Name="Textbox_Notice" MaxLength="1024" TextWrapping="Wrap" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" AcceptsReturn="True"/>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Protokoll">
|
||||
<dxg:GridControl Margin="3" x:Name="datagrid_transfer" DataSource="{Binding TransferProtokolle}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateiname" Header="Dateiname"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="PruftDatum" Header="Geprüft am">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="PruftFehler" Header="Prüffehler"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="VerschlusseltDatum" Header="Verschlüsselt am">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="VerschlusseltFehler" Header="Verschlüsselungsfehler"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="UbertragDatum" Header="Übertragen am">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="UbertragFehler" Header="Übertragungsfehler"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbsenderBezeichnung" Header="Absender Bezeichnung"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="EmpfangerBezeichnung" Header="Empfänger Bezeichnung"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateityp" Header="Dateityp"></dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" BestFitMode="Smart"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True"
|
||||
Margin="3,22,3,3"/>
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</TabItem>
|
||||
<TabItem x:Name="tabitem_rechnungen" Header="Enthaltene Rechnungen">
|
||||
<dxg:GridControl Margin="3" x:Name="datagrid_invoices" DataSource="{Binding InvoiceBases2}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl.Columns>
|
||||
@@ -148,11 +101,43 @@
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</TabItem>
|
||||
<TabItem Header="Nutzdatendatei">
|
||||
<local:TextViewer Text="{Binding Nutzdatendatei, Mode=OneWay}"/>
|
||||
</TabItem>
|
||||
<TabItem Header="Auftragsdatei">
|
||||
<local:TextViewer Text="{Binding Auftragsdatei, Mode=OneWay}"/>
|
||||
<TabItem Header="Protokoll">
|
||||
<dxg:GridControl Margin="3" x:Name="datagrid_transfer" DataSource="{Binding TransferProtokolle}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvTransferProtokollOid" Header="Protokoll Oid" Tag="Debug"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvTransferProtokollVersion" Header="Protokoll Version" Tag="Debug"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbsenderBezeichnung" Header="Absender Bezeichnung"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="EmpfangerBezeichnung" Header="Empfanger Bezeichnung"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKLeistungserbringer" Header="IK Leistungserbringer"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKKrankenkasse" Header="IK Krankenkasse"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKKostentrager" Header="IK Kostentrager"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Rechnungsnummer" Header="Rechnungsnummer"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Datenaustauschreferenz" Header="Datenaustauschreferenz"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfernummer" Header="Transfernummer"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfername" Header="Transfername"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstellt">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateityp" Header="Dateityp"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateiname" Header="Dateiname"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateigrosse" Header="Dateigrosse"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlertitel" Header="Fehlertitel"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlerdatum" Header="Fehlerdatum">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlernachricht" Header="Fehlernachricht"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlerlevel" Header="Fehlerlevel"></dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" BestFitMode="Smart"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True"
|
||||
Margin="3,22,3,3"/>
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Grid>
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
<localView:YearMonthFilter Margin="3 0 0 3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Grid.Column="0" x:Name="yearMonthFilter" FilterSpanChanged="YearMonthFilter_FilterSpanChanged" />
|
||||
<StackPanel Orientation="Vertical" Grid.Column="1" Margin="12,5,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||
<RadioButton x:Name="radioFilterByInvoiceDate" Content="Nach Erstelldatum filtern" IsChecked="True" Click="radioFilterByInvoiceDate_Click"/>
|
||||
<RadioButton x:Name="radioFilterByAccountingDate" Content="Nach Abrechnungszeitraum filtern" Click="radioFilterByInvoiceDate_Click"/>
|
||||
<RadioButton x:Name="radioFilterByInvoiceDate" Content="Nach Erstelldatum filtern" IsChecked="True" Click="radioFilterByInvoiceDate_Click" ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Erstelldatum"/>
|
||||
<RadioButton x:Name="radioFilterByAccountingDate" Content="Nach Abrechnungszeitraum filtern" Click="radioFilterByInvoiceDate_Click" ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. Jahr beinhalten."/>
|
||||
</StackPanel>
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -35,75 +35,64 @@
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button x:Name="button_new" Grid.Column="2" Content="Neue Abrechnung" Margin="3" Click="NewButton_OnClick" Height="24" VerticalAlignment="Bottom" />
|
||||
<Button x:Name="button_reload" Grid.Column="1" Content="Aktualisieren" Margin="3" Click="ReloadButton_OnClick" Height="24" VerticalAlignment="Bottom" Width="80" />
|
||||
<Button x:Name="button_new" Grid.Column="2" Content="Neue Abrechnung" Margin="3" Click="NewButton_OnClick" Height="24" VerticalAlignment="Bottom" ToolTip="Neue GKV-Abrechnung erstellen" />
|
||||
<Button x:Name="button_reload" Grid.Column="1" Content="Aktualisieren" Margin="3" Click="ReloadButton_OnClick" Height="24" VerticalAlignment="Bottom" Width="80" ToolTip="Aktualisiere die Liste aller GKV-Abrechnungen"/>
|
||||
</Grid>
|
||||
|
||||
<dxg:GridControl Margin="3" Grid.ColumnSpan="3" Grid.Row="1" DataSource="{Binding VMList}" x:Name="datagrid_gkvAbrechnungen" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl Margin="3" Grid.ColumnSpan="3" Grid.Row="1" DataSource="{Binding VMList}" x:Name="datagrid_gkvAbrechnungen" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Visibility="Collapsed">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn x:Name="ColumnChecked" FieldName="IsChecked" Header=" " MinWidth="30" Width="120" Visible="False"></dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" Width="70" FieldName="ReportLink" Header=" ">
|
||||
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" Width="Auto" FieldName="ReportLink" Header=" ">
|
||||
<dxg:GridColumn.DisplayTemplate>
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal" Margin="1">
|
||||
<Button Click="btn_details_Click" Content="¥" Padding="0" Margin="1" ToolTip="Details anzeigen" Foreground="#FFFFFF" FontSize="11" FontFamily="Webdings" x:Name="btn_details" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
<!--<Button Click="btn_nutz_Click" Content="¥" Padding="0" Margin="1" ToolTip="Nutzdatendatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_nutz" Height="17" Width="20" VerticalAlignment="Center" />
|
||||
<Button Click="btn_auf_Click" Content="¥" Padding="0" Margin="1" ToolTip="Auftragsdatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_auf" Height="17" Width="20" VerticalAlignment="Center" />-->
|
||||
<Button Click="btn_send_Click" Content="*" Padding="0" Margin="1" ToolTip="Senden" Foreground="#FFFF00" FontSize="11" FontFamily="Wingdings" x:Name="btn_send" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
<Button Click="btn_send_Click" Content="*" Padding="0" Margin="1" ToolTip="Senden" Foreground="#ffffff" FontSize="11" FontFamily="Wingdings" x:Name="btn_send" Height="18" Width="20" VerticalAlignment="Center"/>
|
||||
<Button Click="btn_force_send_Click" Content="r" Padding="0" Margin="1" ToolTip="DEBUG: Protokolle Löschen" Foreground="#FFFF00" FontSize="11" FontFamily="Wingdings" x:Name="btn_force_send" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
<Button Click="btn_delete_Click" Content="r" Padding="0" Margin="1" ToolTip="Löschen" Foreground="#FF0000" FontSize="11" FontFamily="Webdings" x:Name="btn_delete" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</dxg:GridColumn.DisplayTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Width="177" Header="{markup:Translate EmpfängerSingular}" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbrechnungsZeitraumStart" Header="Abrechnungsbeginn" Width="116">
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbrechnungsZeitraum" Header="Abrechnungszeitraum" Width="Auto"/>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstelldatum" Width="Auto">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d" HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbrechnungsZeitraumEnde" Header="Abrechnungsende" Width="107" >
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvState" Header="Status" Width="Auto">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayTextConverter="{StaticResource GkvState2StringConverter}"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="LastTransferDateTime" Header="Gesendet Am" Width="Auto">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d" HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfername" Header="Transfername" Width="84" >
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Datenaustauschreferenz" Header="Referenz" Width="58" >
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="DateigrößeDisplayname" Header="Dateigröße" Width="100" >
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstelldatum" Width="120">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings HorizontalContentAlignment="Right"/>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Betrag" Header="Betrag" MinWidth="74">
|
||||
<dxg:GridColumn x:Name="FehlermeldungColumn" FieldName="Fehlermeldung" Header="Fehlermeldung" Width="*"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Betrag" Header="Betrag">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric" HorizontalContentAlignment="Right"></dxe:TextEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Notice" Header="Bemerkung" MinWidth="200" >
|
||||
<dxg:GridColumn x:Name="PaidColumn" FieldName="Bezahlt" Header="Bezahlt" Width="Auto"></dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Notice" Header="Bemerkung" MinWidth="200" Width="3*" Tag="1024">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings TextWrapping="Wrap" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="PaidColumn" FieldName="Bezahlt" Header="Bezahlt" Width="50"></dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" Loaded="gridView_Loaded" x:Name="gridView" BestFitMode="Smart"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True" ShownEditor="gridView_ShownEditor"
|
||||
CellValueChanging="gridView_CellValueChanged"
|
||||
CustomRowAppearance="TableView_OnCustomRowAppearance"
|
||||
Margin="3,22,3,3" CellValueChanged="gridView_CellValueChanged_1" RowMinHeight="24"/>
|
||||
Margin="3,22,3,3" CellValueChanged="gridView_CellValueChanged_1" RowMinHeight="24"
|
||||
/>
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</Grid>
|
||||
|
||||
@@ -57,8 +57,6 @@ namespace BeWo.View.Detail.Accounting
|
||||
CheckRights();
|
||||
|
||||
RefreshGkvAbrechnungenList();
|
||||
|
||||
UpdateDataGridFilter();
|
||||
}
|
||||
|
||||
public DownloadLinkEngine DownloadLinkEngine { get; set; }
|
||||
@@ -82,8 +80,7 @@ namespace BeWo.View.Detail.Accounting
|
||||
private void UpdateDataGridFilter()
|
||||
{
|
||||
datagrid_gkvAbrechnungen.FixedFilter = null;
|
||||
gridView.BestFitColumns();
|
||||
|
||||
|
||||
if (ShowAllInvoices)
|
||||
{
|
||||
datagrid_gkvAbrechnungen.FixedFilter = null;
|
||||
@@ -118,8 +115,16 @@ namespace BeWo.View.Detail.Accounting
|
||||
(Action)delegate
|
||||
{
|
||||
_Viewmodel.UpdateList(dcList);
|
||||
|
||||
if (datagrid_gkvAbrechnungen.Visibility != Visibility.Visible)
|
||||
datagrid_gkvAbrechnungen.Visibility = Visibility.Visible;
|
||||
|
||||
UpdateDataGridFilter();
|
||||
|
||||
gridView.BestFitColumns();
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void NewGkvAbrechnungPopUpViewCancelButtonClicked(object sender, EventArgs e)
|
||||
@@ -196,54 +201,58 @@ namespace BeWo.View.Detail.Accounting
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_force_send_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
|
||||
|
||||
if(vm.TransferProtokolle is object && vm.TransferProtokolle.Any())
|
||||
{
|
||||
vm.TransferProtokolle.Clear();
|
||||
|
||||
var result_dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(vm.CommitToDataContract()));
|
||||
|
||||
vm.TransferProtokolle = result_dc.TransferProtokolle?.ToList();
|
||||
vm.GkvAbrechnungVersion = result_dc.GkvAbrechnungVersion;
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_send_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
|
||||
|
||||
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
|
||||
var dc = vm.CommitToDataContract();
|
||||
|
||||
var state = dc.GetState();
|
||||
|
||||
var can_send = state == GkvState.NoSend || state == GkvState.Error;
|
||||
|
||||
if (vm.TransferProtokolle != null && vm.TransferProtokolle.Any())
|
||||
if (!can_send)
|
||||
{
|
||||
var last = vm.TransferProtokolle.Last();
|
||||
|
||||
var state = last.GetState();
|
||||
|
||||
if(state == 6)
|
||||
{
|
||||
text = "Die gewählte GKV-Abrechnung wurde bereits erfolgreich gesendet. Möchten Sie sie erneut senden?";
|
||||
}
|
||||
string error;
|
||||
if (state == GkvState.Waiting)
|
||||
error = "Es wurde bereits übertragen ohne direkte Fehler.";
|
||||
else if (state == GkvState.ErrorFatal)
|
||||
error = "GKV-Abrechnung enthält schwere Fehler. Erstellen Sie die Rechnung erneut.";
|
||||
else if (state == GkvState.Paid)
|
||||
error = "GKV-Abrechnung ist bereits als bezahlt markiert.";
|
||||
else if (state == GkvState.OldAndNoFeedback)
|
||||
error = "GKV-Abrechnung ist älter als 28 Tage und als nicht bezahlt markiert. Wenden Sie sich bitte an Ihre Krankenkasse";
|
||||
else
|
||||
{
|
||||
text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich gesendet. Möchten Sie sie erneut senden?";
|
||||
}
|
||||
error = "def";
|
||||
|
||||
MessageBox.Show(error, "Übertragung nicht möglich");
|
||||
return;
|
||||
}
|
||||
|
||||
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
|
||||
|
||||
if (state == GkvState.Error)
|
||||
text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich an die Krankenkasse übertragen. Möchten Sie sie erneut senden?";
|
||||
|
||||
if (MessageBox.Show(text, "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
||||
{
|
||||
var req = new GkvAbrechnungSendRequestDC();
|
||||
|
||||
req.GkvAbrechnungDC = vm.CommitToDataContract();
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
|
||||
cb =>
|
||||
{
|
||||
Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() =>
|
||||
{
|
||||
if(cb.Successful)
|
||||
{
|
||||
var dc = cb.GkvAbrechnungDC;
|
||||
|
||||
vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
|
||||
vm.UpdateGkvTransferProtokoll(dc.TransferProtokolle.ToList());
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(cb.Message);
|
||||
}
|
||||
}));
|
||||
}, false);
|
||||
vm.SendGkvAbrechnung();
|
||||
}
|
||||
}
|
||||
private void btn_delete_Click(object sender, RoutedEventArgs e)
|
||||
@@ -276,7 +285,7 @@ namespace BeWo.View.Detail.Accounting
|
||||
|
||||
private void gridView_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//this.gridView.BestFitColumns();
|
||||
this.gridView.BestFitColumns();
|
||||
}
|
||||
private void gridView_ShownEditor(object sender, EditorEventArgs e)
|
||||
{
|
||||
@@ -285,6 +294,10 @@ namespace BeWo.View.Detail.Accounting
|
||||
var ed = (CheckEdit)e.Editor;
|
||||
ed.Tag = e.Row;
|
||||
}
|
||||
else if (int.TryParse(datagrid_gkvAbrechnungen.CurrentColumn.Tag.ToString(), out int tag) && gridView.ActiveEditor is TextEdit)
|
||||
{
|
||||
((TextEdit)gridView.ActiveEditor).SetPropertyValue("MaxLength", tag);
|
||||
}
|
||||
}
|
||||
private void gridView_CellValueChanged(object sender, CellValueChangedEventArgs e)
|
||||
{
|
||||
@@ -301,13 +314,15 @@ namespace BeWo.View.Detail.Accounting
|
||||
if (e.Property != null && e.Property.Name == "Background")
|
||||
{
|
||||
var gkvAbrechnungVM = datagrid_gkvAbrechnungen.GetRow(e.RowHandle) as GkvAbrechnungVM;
|
||||
/*
|
||||
if (gkvAbrechnungVM != null && !String.IsNullOrEmpty(gkvAbrechnungVM.BackgroundColor))
|
||||
|
||||
if (gkvAbrechnungVM is null)
|
||||
return;
|
||||
|
||||
if (!gkvAbrechnungVM.Bezahlt && DateTime.Now - gkvAbrechnungVM.ErstelltAm > TimeSpan.FromDays(28))
|
||||
{
|
||||
e.Result = new SolidColorBrush((Color)ColorConverter.ConvertFromString(gkvAbrechnungVM.BackgroundColor));
|
||||
e.Result = Brushes.Orange;
|
||||
e.Handled = true;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -136,10 +136,6 @@ namespace BeWo.View.Detail.Accounting
|
||||
popup_organisation.IsOpen = false;
|
||||
gkvsearchview.ItemSelected -= gkvsearchview_OrganisationSelected;
|
||||
|
||||
ViewModel.IKKostenträger = e.Data.IKKostentrager;
|
||||
ViewModel.IKVersichertenKarte = e.Data.IKKrankenkasse;
|
||||
ViewModel.IKDatenannahmestelle = e.Data.IKDatenannahmestelle;
|
||||
|
||||
popupedit_GkvSearch.Text = e.Data.ToString();
|
||||
popupedit_GkvSearch.Focus();
|
||||
|
||||
|
||||
@@ -2,11 +2,16 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.Validation;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.DataContracts.GkvAbrechnung;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.Xpf.Core;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
@@ -32,38 +37,21 @@ AntwortEntschluesseltAm
|
||||
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
|
||||
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
|
||||
|
||||
public static string PropertyName_Nutzdatendatei = "Nutzdatendatei";
|
||||
public static string PropertyName_Auftragsdatei = "Auftragsdatei";
|
||||
public static string PropertyName_Transfername = "Transfername";
|
||||
|
||||
public static string PropertyName_ErstelltAm = "ErstelltAm";
|
||||
|
||||
private long? _GkvAbrechnungOid;
|
||||
private long? _GkvAbrechnungVersion;
|
||||
private string _Notice;
|
||||
|
||||
private string _IKLeistungserbringer;
|
||||
private string _IKVersichertenKarte;
|
||||
private string _IKKostenträger;
|
||||
private string _IKDatenannahmestelle;
|
||||
|
||||
private DateTime? _AbrechnungsZeitraumStart;
|
||||
private DateTime? _AbrechnungsZeitraumEnde;
|
||||
|
||||
private string _Nutzdatendatei;
|
||||
private string _Auftragsdatei;
|
||||
private string _Transfername;
|
||||
private int _Dateigröße;
|
||||
private int _Datenaustauschreferenz;
|
||||
|
||||
private DateTime? _ErstelltAm;
|
||||
private DateTime _ErstelltAm;
|
||||
|
||||
private decimal _Betrag;
|
||||
private bool _Bezahlt;
|
||||
|
||||
internal bool _IsChecked;
|
||||
internal bool _IsSendingRequestCurrently;
|
||||
internal bool _SendAndFailed;
|
||||
|
||||
private List<InvoiceBaseVM> _InvoiceBases2;
|
||||
private BindingList<InvoiceBaseVM> _InvoiceBases;
|
||||
@@ -77,68 +65,6 @@ AntwortEntschluesseltAm
|
||||
}
|
||||
|
||||
#region
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string IKVersichertenKarte
|
||||
{
|
||||
get { return this._IKVersichertenKarte; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._IKVersichertenKarte, value))
|
||||
{
|
||||
this._IKVersichertenKarte = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKVersichertenKarte, value), nameof(IKVersichertenKarte));
|
||||
this.FirePropertyChanged(nameof(IKVersichertenKarte));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string IKKostenträger
|
||||
{
|
||||
get { return this._IKKostenträger; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._IKKostenträger, value))
|
||||
{
|
||||
this._IKKostenträger = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKKostenträger, value), nameof(IKKostenträger));
|
||||
this.FirePropertyChanged(nameof(IKKostenträger));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string IKDatenannahmestelle
|
||||
{
|
||||
get { return this._IKDatenannahmestelle; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._IKDatenannahmestelle, value))
|
||||
{
|
||||
this._IKDatenannahmestelle = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKDatenannahmestelle, value), nameof(IKDatenannahmestelle));
|
||||
this.FirePropertyChanged(nameof(IKDatenannahmestelle));
|
||||
}
|
||||
}
|
||||
}
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string IKLeistungserbringer
|
||||
{
|
||||
get { return this._IKLeistungserbringer; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._IKLeistungserbringer, value))
|
||||
{
|
||||
this._IKLeistungserbringer = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.IKLeistungserbringer, value), nameof(IKLeistungserbringer));
|
||||
this.FirePropertyChanged(nameof(IKLeistungserbringer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
|
||||
|
||||
@@ -178,99 +104,8 @@ AntwortEntschluesseltAm
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Nutzdatendatei
|
||||
{
|
||||
get { return this._Nutzdatendatei; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Nutzdatendatei, value))
|
||||
{
|
||||
this._Nutzdatendatei = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Nutzdatendatei, value), PropertyName_Nutzdatendatei);
|
||||
this.FirePropertyChanged(PropertyName_Nutzdatendatei);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Auftragsdatei
|
||||
{
|
||||
get { return this._Auftragsdatei; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Auftragsdatei, value))
|
||||
{
|
||||
this._Auftragsdatei = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Auftragsdatei, value), PropertyName_Auftragsdatei);
|
||||
this.FirePropertyChanged(PropertyName_Auftragsdatei);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Transfername
|
||||
{
|
||||
get { return this._Transfername; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Transfername, value))
|
||||
{
|
||||
this._Transfername = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Transfername, value), PropertyName_Transfername);
|
||||
this.FirePropertyChanged(PropertyName_Transfername);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public int Datenaustauschreferenz
|
||||
{
|
||||
get { return this._Datenaustauschreferenz; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Datenaustauschreferenz, value))
|
||||
{
|
||||
this._Datenaustauschreferenz = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Datenaustauschreferenz, value), nameof(Datenaustauschreferenz));
|
||||
this.FirePropertyChanged(nameof(Datenaustauschreferenz));
|
||||
}
|
||||
}
|
||||
}
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public int Dateigröße
|
||||
{
|
||||
get { return this._Dateigröße; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Dateigröße, value))
|
||||
{
|
||||
this._Dateigröße = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Dateigröße, value), nameof(Dateigröße));
|
||||
this.FirePropertyChanged(nameof(Dateigröße));
|
||||
FirePropertyChanged(nameof(DateigrößeDisplayname));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string DateigrößeDisplayname {
|
||||
get
|
||||
{
|
||||
return Utils.SizeSuffix(Dateigröße, 0);
|
||||
}
|
||||
set
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? ErstelltAm
|
||||
public DateTime ErstelltAm
|
||||
{
|
||||
get { return this._ErstelltAm; }
|
||||
|
||||
@@ -285,24 +120,6 @@ AntwortEntschluesseltAm
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//public string GesendetDisplay
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (IsSendingRequestCurrently)
|
||||
// return "Sendet";
|
||||
|
||||
// if (SendAndFailed)
|
||||
// return "Fehlgeschlagen";
|
||||
|
||||
// if (GesendetAm.HasValue)
|
||||
// return GesendetAm.Value.ToString();
|
||||
// else
|
||||
// return "-";
|
||||
// }
|
||||
//}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungOid
|
||||
{
|
||||
@@ -369,19 +186,27 @@ AntwortEntschluesseltAm
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public bool Bezahlt
|
||||
{
|
||||
get { return this._Bezahlt; }
|
||||
get { return _Bezahlt; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Bezahlt, value))
|
||||
if (AreDifferent(this._Bezahlt, value))
|
||||
{
|
||||
this._Bezahlt = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Bezahlt, value), nameof(Bezahlt));
|
||||
this.FirePropertyChanged(nameof(Bezahlt));
|
||||
_Bezahlt = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.Bezahlt, value), nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public GkvState GkvState
|
||||
{
|
||||
get { return GetState(this); }
|
||||
}
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
get { return _IsChecked; }
|
||||
@@ -411,13 +236,14 @@ AntwortEntschluesseltAm
|
||||
public List<GkvTransferProtokollDC> TransferProtokolle
|
||||
{
|
||||
get { return _TransferProtokolle; }
|
||||
set { _TransferProtokolle = value; }
|
||||
}
|
||||
|
||||
public void UpdateGkvTransferProtokoll(List<GkvTransferProtokollDC> list)
|
||||
{
|
||||
_TransferProtokolle = list;
|
||||
FirePropertyChanged(nameof(TransferProtokolle));
|
||||
set
|
||||
{
|
||||
_TransferProtokolle = value;
|
||||
FirePropertyChanged(nameof(TransferProtokolle));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
FirePropertyChanged(nameof(LastTransferDateTime));
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
@@ -450,23 +276,57 @@ AntwortEntschluesseltAm
|
||||
}
|
||||
}
|
||||
|
||||
public string Fehlermeldung
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null || string.IsNullOrWhiteSpace(last.Fehlernachricht))
|
||||
return null;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(last.Fehlertitel))
|
||||
return last.Fehlernachricht;
|
||||
|
||||
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime? LastTransferDateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null)
|
||||
return null;
|
||||
|
||||
return last.ErstelltAm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static GkvState GetState(GkvAbrechnungVM vm)
|
||||
{
|
||||
return GkvAbrechnungExtensions.GetState(
|
||||
vm,
|
||||
() => vm.Bezahlt,
|
||||
() => vm.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
|
||||
protected override void InitByDataContract(GkvAbrechnungDC pDataContract)
|
||||
{
|
||||
_IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
||||
_IKKostenträger = pDataContract.IKKostenträger;
|
||||
_IKLeistungserbringer = pDataContract.IKLeistungserbringer;
|
||||
_IKVersichertenKarte = pDataContract.IKVersichertenKarte;
|
||||
_AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
|
||||
_AbrechnungsZeitraumEnde = pDataContract.AbrechnungsZeitraumEnde;
|
||||
_Nutzdatendatei = pDataContract.Nutzdatendatei;
|
||||
_Auftragsdatei = pDataContract.Auftragsdatei;
|
||||
_Transfername = pDataContract.Transfername;
|
||||
|
||||
_ErstelltAm = pDataContract.ErstelltAm;
|
||||
_Datenaustauschreferenz = pDataContract.Datenaustauschreferenz;
|
||||
_Dateigröße = pDataContract.Dateigröße;
|
||||
|
||||
_GkvAbrechnungOid = pDataContract.GkvAbrechnungOid;
|
||||
_GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
|
||||
|
||||
_Notice = pDataContract.Notice;
|
||||
|
||||
_Betrag = pDataContract.Betrag;
|
||||
@@ -487,26 +347,17 @@ AntwortEntschluesseltAm
|
||||
}
|
||||
protected override GkvAbrechnungDC MapToDataContract(GkvAbrechnungDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.IKDatenannahmestelle = _IKDatenannahmestelle;
|
||||
pDataContract.IKVersichertenKarte = _IKVersichertenKarte;
|
||||
pDataContract.IKKostenträger = _IKKostenträger;
|
||||
pDataContract.IKLeistungserbringer = _IKLeistungserbringer;
|
||||
pDataContract.AbrechnungsZeitraumStart = _AbrechnungsZeitraumStart;
|
||||
pDataContract.AbrechnungsZeitraumEnde = _AbrechnungsZeitraumEnde;
|
||||
pDataContract.Nutzdatendatei = _Nutzdatendatei;
|
||||
pDataContract.Auftragsdatei = _Auftragsdatei;
|
||||
pDataContract.Transfername = _Transfername;
|
||||
|
||||
pDataContract.ErstelltAm = _ErstelltAm;
|
||||
|
||||
pDataContract.GkvAbrechnungOid = _GkvAbrechnungOid;
|
||||
pDataContract.GkvAbrechnungVersion = _GkvAbrechnungVersion;
|
||||
pDataContract.Dateigröße = _Dateigröße;
|
||||
|
||||
pDataContract.Notice = _Notice;
|
||||
pDataContract.Betrag = _Betrag;
|
||||
pDataContract.Bezahlt = _Bezahlt;
|
||||
pDataContract.Datenaustauschreferenz = _Datenaustauschreferenz;
|
||||
|
||||
if (_InvoiceBases != null && _InvoiceBases.Any())
|
||||
pDataContract.InvoiceBases = _InvoiceBases.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
|
||||
@@ -518,5 +369,27 @@ AntwortEntschluesseltAm
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public void SendGkvAbrechnung()
|
||||
{
|
||||
var req = new GkvAbrechnungSendRequestDC();
|
||||
|
||||
req.GkvAbrechnungOid = GkvAbrechnungOid.Value;
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
|
||||
cb => Application.Current.Dispatch(delegate
|
||||
{
|
||||
if (cb.GkvAbrechnungDC is GkvAbrechnungDC dc)
|
||||
{
|
||||
GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
|
||||
TransferProtokolle = dc.TransferProtokolle.ToList();
|
||||
}
|
||||
|
||||
if (cb.Message is object)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, cb.Message);
|
||||
}
|
||||
}), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ namespace Dakota
|
||||
/// <summary>
|
||||
/// Validiert in erster Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
|
||||
/// </summary>
|
||||
public static void ValidateFirstStep(MandatorDC mandatordc, GkvAbrechnungRequestDC request)
|
||||
public static void ValidateFirstStep(MandatorDC mandatordc)
|
||||
{
|
||||
if (mandatordc == null)
|
||||
throw new DakotaException("Mandator ist null");
|
||||
|
||||
@@ -61,10 +61,8 @@ namespace Dakota.Logic
|
||||
|
||||
return info;
|
||||
}
|
||||
internal InfoDateiAuftrags GetEmptyInfoAuftragsdatei(string empfang, string logischerDateiname, string verfahrenkennung, int datenaustauschreferenz)
|
||||
internal InfoDateiAuftrags GetEmptyInfoAuftragsdatei(string empfang, string logischerDateiname, string verfahrenkennung, int transfernummer)
|
||||
{
|
||||
var transfernummer = datenaustauschreferenz % 1000;
|
||||
|
||||
var info = new InfoDateiAuftrags();
|
||||
|
||||
info.Identifikator = 500000;
|
||||
@@ -199,7 +197,7 @@ namespace Dakota.Logic
|
||||
|
||||
info.Rechnungsnummer = infoParameter.InvoiceBase.InvoiceNumber;
|
||||
info.Rechnungsdatum = infoParameter.InvoiceBase.InvoiceDate.Value;
|
||||
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
|
||||
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungÜberAbrechnungsstelleOhneInkassovollmacht;
|
||||
|
||||
info.Name1 = infoParameter.Mandator.Name;
|
||||
info.Name2 = "Rene Evertz";
|
||||
@@ -220,7 +218,7 @@ namespace Dakota.Logic
|
||||
|
||||
info.Rechnungsnummer = infoParameter.InvoiceBase.InvoiceNumber;
|
||||
info.Rechnungsdatum = infoParameter.InvoiceBase.InvoiceDate.Value;
|
||||
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
|
||||
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungÜberAbrechnungsstelleOhneInkassovollmacht;
|
||||
|
||||
info.Abrechnungsfalle = new List<InfoAbrechnungsfall>();
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Dakota.Logic
|
||||
IsSammelrechnung = isSammelrechnung;
|
||||
}
|
||||
|
||||
public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator, int datenaustauschreferenz)
|
||||
public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator, int datenaustauschreferenz, int transfernummer)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -58,7 +58,7 @@ namespace Dakota.Logic
|
||||
var logischer_dateiname = DakotaConfig.GetLogischerDateiname(Month).Trim();
|
||||
|
||||
var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, logischer_dateiname, datenaustauschreferenz);
|
||||
var info_auf_add = DakotaInfoCreator.GetEmptyInfoAuftragsdatei(organisation.IKDatenannahmestelle, logischer_dateiname, verfahrenkennung, datenaustauschreferenz);
|
||||
var info_auf_add = DakotaInfoCreator.GetEmptyInfoAuftragsdatei(organisation.IKDatenannahmestelle, logischer_dateiname, verfahrenkennung, transfernummer);
|
||||
|
||||
DakotaInfoNutzDict.Add(ik_datenannahmestelle, info_nutz_add);
|
||||
DakotaInfoAufDict.Add(ik_datenannahmestelle, info_auf_add);
|
||||
|
||||
@@ -9,7 +9,13 @@ namespace Dakota.Models
|
||||
{
|
||||
public class DakotaException : ArgumentException
|
||||
{
|
||||
public string Message { get; set; }
|
||||
public string Title { get; set; }
|
||||
public new string Message { get; set; }
|
||||
|
||||
public DakotaException(string message, string title) : this(message)
|
||||
{
|
||||
Title = title;
|
||||
}
|
||||
|
||||
public DakotaException(string message) : this()
|
||||
{
|
||||
|
||||
@@ -86,5 +86,10 @@ namespace Dakota
|
||||
{
|
||||
return Nutzdatendatei.BlockKostenträger.Count;
|
||||
}
|
||||
|
||||
public string GetRechnungsnummer()
|
||||
{
|
||||
return Nutzdatendatei.BlockKostenträger.First().BlockKrankenkasse.First().NachrichtSLGA.SegmentREC.Rechnungsnummer.GetValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Dakota.Models.Schlüssels
|
||||
|
||||
public static SchlüsselRechnungsart DerzeitNichtBelegt => new SchlüsselRechnungsart("0");
|
||||
public static SchlüsselRechnungsart AbrechnungVonLeistungserbringer => new SchlüsselRechnungsart("1");
|
||||
public static SchlüsselRechnungsart AbrechnungÜberAbrechnungsstelleOhnInkassovollmacht => new SchlüsselRechnungsart("2");
|
||||
public static SchlüsselRechnungsart AbrechnungÜberAbrechnungsstelleOhneInkassovollmacht => new SchlüsselRechnungsart("2");
|
||||
public static SchlüsselRechnungsart AbrechnungÜberAbrechnungsstelleMitInkassovollmacht => new SchlüsselRechnungsart("3");
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
@@ -12,36 +13,23 @@ namespace BeWo.Data.Entities
|
||||
this._Tid = TableID.GkvAbrechnung;
|
||||
}
|
||||
|
||||
public virtual string IKLeistungserbringer { get; set; }
|
||||
|
||||
public virtual string IKVersichertenKarte { get; set; }
|
||||
|
||||
public virtual string IKKostentrager { get; set; }
|
||||
|
||||
public virtual string IKDatenannahmestelle { get; set; }
|
||||
public virtual DateTime ErstelltAm { get; set; }
|
||||
|
||||
public virtual DateTime? AbrechnungsZeitraumStart { get; set; }
|
||||
|
||||
public virtual DateTime? AbrechnungsZeitraumEnde { get; set; }
|
||||
|
||||
public virtual string Nutzdatendatei { get; set; }
|
||||
|
||||
public virtual string Auftragsdatei { get; set; }
|
||||
|
||||
public virtual int Dateigrosse { get; set; }
|
||||
|
||||
public virtual string Transfername { get; set; }
|
||||
|
||||
public virtual int Datenaustauschreferenz { get; set; }
|
||||
|
||||
public virtual DateTime? ErstelltAm { get; set; }
|
||||
|
||||
public virtual decimal Betrag { get; set; }
|
||||
|
||||
public virtual bool Bezahlt { get; set; }
|
||||
|
||||
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
|
||||
|
||||
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
|
||||
|
||||
public static GkvState GetState(GkvAbrechnung entity) =>
|
||||
GkvAbrechnungExtensions.GetState(
|
||||
entity,
|
||||
() => entity.Bezahlt,
|
||||
() => entity.GkvTransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
}
|
||||
@@ -13,15 +13,32 @@ namespace BeWo.Data.Entities
|
||||
}
|
||||
|
||||
public virtual long GkvAbrechnungOid { get; set; }
|
||||
|
||||
public virtual string AbsenderBezeichnung { get; set; }
|
||||
public virtual string EmpfangerBezeichnung { get; set; }
|
||||
|
||||
public virtual string IKLeistungserbringer { get; set; }
|
||||
public virtual string IKKrankenkasse { get; set; }
|
||||
public virtual string IKKostentrager { get; set; }
|
||||
public virtual string IKDatenannahmestelle { get; set; }
|
||||
|
||||
public virtual string Rechnungsnummer { get; set; }
|
||||
public virtual int Datenaustauschreferenz { get; set; }
|
||||
public virtual int Transfernummer { get; set; }
|
||||
public virtual string Transfername { get; set; }
|
||||
|
||||
public virtual DateTime? ErstelltAm { get; set; }
|
||||
|
||||
public virtual string Dateityp { get; set; }
|
||||
public virtual string Dateiname { get; set; }
|
||||
public virtual DateTime? PruftDatum { get; set; }
|
||||
public virtual string PruftFehler { get; set; }
|
||||
public virtual DateTime? VerschlusseltDatum { get; set; }
|
||||
public virtual string VerschlusseltFehler { get; set; }
|
||||
public virtual DateTime? UbertragDatum { get; set; }
|
||||
public virtual string UbertragFehler { get; set; }
|
||||
public virtual int Dateigrosse { get; set; }
|
||||
|
||||
public virtual string Nutzdatendatei { get; set; }
|
||||
public virtual string Auftragsdatei { get; set; }
|
||||
|
||||
public virtual string Fehlertitel { get; set; }
|
||||
public virtual DateTime? Fehlerdatum { get; set; }
|
||||
public virtual string Fehlernachricht { get; set; }
|
||||
public virtual GkvTransferFehlerlevel Fehlerlevel { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,40 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
|
||||
<class name="BeWo.Data.Entities.GkvAbrechnung, BeWo.Data" table="GkvAbrechnung">
|
||||
<id name="Oid" column="Oid" type="Int64" unsaved-value="null">
|
||||
<generator class="identity" />
|
||||
</id>
|
||||
<version type="Int64" column="Version" name="Version" />
|
||||
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
|
||||
<property column="IKLeistungserbringer" type="string" name="IKLeistungserbringer" />
|
||||
<property column="IKVersichertenKarte" type="string" name="IKVersichertenKarte" />
|
||||
<property column="IKKostentrager" type="string" name="IKKostentrager" />
|
||||
<property column="IKDatenannahmestelle" type="string" name="IKDatenannahmestelle" />
|
||||
<property column="AbrechnungsZeitraumStart" type="DateTime" name="AbrechnungsZeitraumStart" />
|
||||
<property column="AbrechnungsZeitraumEnde" type="DateTime" name="AbrechnungsZeitraumEnde" />
|
||||
<property column="Nutzdatendatei" type="string" name="Nutzdatendatei" />
|
||||
<property column="Auftragsdatei" type="string" name="Auftragsdatei" />
|
||||
<property column="Transfername" type="string" name="Transfername" />
|
||||
<property column="Dateigrosse" type="int" name="Dateigrosse" />
|
||||
<property column="Datenaustauschreferenz" type="int" name="Datenaustauschreferenz" />
|
||||
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
|
||||
<property column="Notice" type="String" name="Notice" length="1024" />
|
||||
<property column="InsTs" type="DateTime" name="InsTs" />
|
||||
<property column="InsUser" type="String" name="InsUser" length="256" />
|
||||
<property column="UdpUser" type="String" name="UdpUser" length="256" />
|
||||
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
|
||||
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
|
||||
<property column="Betrag" type="decimal" name="Betrag" />
|
||||
<property column="Bezahlt" type="bool" name="Bezahlt" />
|
||||
<class name="BeWo.Data.Entities.GkvAbrechnung, BeWo.Data" table="GkvAbrechnung">
|
||||
<id name="Oid" column="Oid" type="Int64" unsaved-value="null">
|
||||
<generator class="identity" />
|
||||
</id>
|
||||
<version type="Int64" column="Version" name="Version" />
|
||||
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
|
||||
|
||||
<bag name="InvoiceBases" table="gkvabrechnung2invoicebase" generic="true" cascade="none" batch-size="250">
|
||||
<key column="gkvabrechnungoid" />
|
||||
<many-to-many column="invoicebaseoid" class="BeWo.Data.Entities.InvoiceBase, BeWo.Data" />
|
||||
</bag>
|
||||
<bag name="GkvTransferProtokolle" table="gkvtransferprotokoll" generic="true" cascade="all-delete-orphan" batch-size="250">
|
||||
<key column="gkvabrechnungoid" />
|
||||
<one-to-many class="BeWo.Data.Entities.GkvTransferProtokoll, BeWo.Data" />
|
||||
</bag>
|
||||
</class>
|
||||
<property column="AbrechnungsZeitraumStart" type="DateTime" name="AbrechnungsZeitraumStart" />
|
||||
<property column="AbrechnungsZeitraumEnde" type="DateTime" name="AbrechnungsZeitraumEnde" />
|
||||
|
||||
<property column="Notice" type="String" name="Notice" length="1024" />
|
||||
<property column="InsTs" type="DateTime" name="InsTs" />
|
||||
<property column="InsUser" type="String" name="InsUser" length="256" />
|
||||
<property column="UdpUser" type="String" name="UdpUser" length="256" />
|
||||
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
|
||||
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
|
||||
|
||||
<property column="Betrag" type="decimal" name="Betrag" />
|
||||
<property column="Bezahlt" type="bool" name="Bezahlt" />
|
||||
|
||||
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
|
||||
|
||||
<bag name="InvoiceBases" table="gkvabrechnung2invoicebase" generic="true" cascade="none" batch-size="250">
|
||||
<key column="gkvabrechnungoid" />
|
||||
<many-to-many column="invoicebaseoid" class="BeWo.Data.Entities.InvoiceBase, BeWo.Data" />
|
||||
</bag>
|
||||
<bag name="GkvTransferProtokolle" table="gkvtransferprotokoll" generic="true" cascade="all-delete-orphan" batch-size="250">
|
||||
<key column="gkvabrechnungoid" />
|
||||
<one-to-many class="BeWo.Data.Entities.GkvTransferProtokoll, BeWo.Data" />
|
||||
</bag>
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
||||
@@ -18,11 +18,24 @@
|
||||
<property column="EmpfangerBezeichnung" type="string" name="EmpfangerBezeichnung" />
|
||||
<property column="Dateityp" type="string" name="Dateityp" />
|
||||
<property column="Dateiname" type="string" name="Dateiname" />
|
||||
<property column="PruftDatum" type="DateTime" name="PruftDatum" />
|
||||
<property column="PruftFehler" type="string" name="PruftFehler" />
|
||||
<property column="VerschlusseltDatum" type="DateTime" name="VerschlusseltDatum" />
|
||||
<property column="VerschlusseltFehler" type="string" name="VerschlusseltFehler" />
|
||||
<property column="UbertragDatum" type="DateTime" name="UbertragDatum" />
|
||||
<property column="UbertragFehler" type="string" name="UbertragFehler" />
|
||||
|
||||
<property column="IKLeistungserbringer" type="string" name="IKLeistungserbringer" />
|
||||
<property column="IKKrankenkasse" type="string" name="IKKrankenkasse" />
|
||||
<property column="IKKostentrager" type="string" name="IKKostentrager" />
|
||||
<property column="IKDatenannahmestelle" type="string" name="IKDatenannahmestelle" />
|
||||
|
||||
<property column="Rechnungsnummer" type="string" name="Rechnungsnummer" />
|
||||
<property column="Nutzdatendatei" type="string" name="Nutzdatendatei" />
|
||||
<property column="Auftragsdatei" type="string" name="Auftragsdatei" />
|
||||
<property column="Transfername" type="string" name="Transfername" />
|
||||
<property column="Dateigrosse" type="int" name="Dateigrosse" />
|
||||
<property column="Datenaustauschreferenz" type="int" name="Datenaustauschreferenz" />
|
||||
<property column="Transfernummer" type="int" name="Transfernummer" />
|
||||
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
|
||||
|
||||
<property column="Fehlertitel" type="string" name="Fehlertitel" />
|
||||
<property column="Fehlerdatum" type="DateTime" name="Fehlerdatum" />
|
||||
<property column="Fehlernachricht" type="string" name="Fehlernachricht" />
|
||||
<property column="Fehlerlevel" type="BS.Shared.GkvTransferFehlerlevel, BS.Shared" name="Fehlerlevel" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
||||
@@ -26,6 +26,10 @@ using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Data.Entities;
|
||||
using BS.Shared.Extensions;
|
||||
using System.Threading;
|
||||
using System.Configuration;
|
||||
using Dakota.Models;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Host
|
||||
{
|
||||
@@ -34,6 +38,10 @@ namespace Host
|
||||
private string GETSERVER_URL = "https://support.bewoplaner.de/api/getserver.php?k={0}&t=0";
|
||||
private string LOGINSERVER_URL = "{0}/Host/Login.aspx";
|
||||
|
||||
private string GKVRESULT_FORMAT = "{0}/{1}/result.xml";
|
||||
|
||||
private string GkvAbrechnungResultFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath");
|
||||
|
||||
public GkvApp8Request GkvRequest { get; set; }
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
@@ -73,13 +81,13 @@ namespace Host
|
||||
|
||||
SendErrorResponse("Unbekannter Fehler");
|
||||
}
|
||||
catch(ThreadAbortException eee)
|
||||
catch (ThreadAbortException eee)
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var ex_text = ex.Message + "\n\n" + ex.StackTrace;
|
||||
var ex_text = ex.Message + "\n" + ex.StackTrace;
|
||||
SendErrorResponse(ex_text);
|
||||
return;
|
||||
}
|
||||
@@ -150,34 +158,30 @@ namespace Host
|
||||
|
||||
private void SendNew(GkvApp8SendNewRequest req)
|
||||
{
|
||||
var debug_mode = true;
|
||||
var debug_mode = false;
|
||||
|
||||
// Save File
|
||||
SaveFileInFileSystem(req, debug_mode);
|
||||
|
||||
// Make DB Entry
|
||||
//var entry = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntity(req.GkvAbrechnung);
|
||||
|
||||
//entry.Kundennummer = req.Tenant;
|
||||
|
||||
// DAOFactory.GenericDAO.Insert(entry);
|
||||
|
||||
// Dakota Send
|
||||
#if DEBUG
|
||||
debug_mode = true;
|
||||
#endif
|
||||
|
||||
// Response
|
||||
var response = new GkvApp8SendNewResponse();
|
||||
var response = new GkvApp8SendNewResponse(false);
|
||||
|
||||
response.Success = true;
|
||||
response.GkvTransferProtokollDC = new GkvTransferProtokollDC()
|
||||
try
|
||||
{
|
||||
AbsenderBezeichnung = "Absender",
|
||||
Dateiname = req.GkvAbrechnung.Transfername,
|
||||
Dateityp = "Nutzdatendatei",
|
||||
EmpfangerBezeichnung = "Empfang",
|
||||
GkvAbrechnungOid = req.GkvAbrechnung.GkvAbrechnungOid.Value,
|
||||
PruftFehler = "Manueller Insert",
|
||||
PruftDatum = DateTime.Now
|
||||
};
|
||||
// Save File
|
||||
SaveFileInFileSystem(req, debug_mode);
|
||||
|
||||
// Dakota Send
|
||||
|
||||
response.Success = true;
|
||||
|
||||
response.GkvTransferProtokollDC = req.GkvTransferProtokoll;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
response.Message = e.Message;
|
||||
}
|
||||
|
||||
SendResponse(response);
|
||||
}
|
||||
@@ -188,65 +192,62 @@ namespace Host
|
||||
if (debug_mode)
|
||||
{
|
||||
root_path = $@"C:\GkvAbrechnung\";
|
||||
file_path = $@"{req.Tenant}-{req.GkvAbrechnung.IKDatenannahmestelle}-{req.GkvAbrechnung.Transfername}";
|
||||
file_path = $@"{req.Tenant}-{req.GkvTransferProtokoll.IKDatenannahmestelle}-{req.GkvTransferProtokoll.Transfername}";
|
||||
}
|
||||
else
|
||||
{
|
||||
root_path = $@"C:\GkvAbrechnung\{req.Tenant}\{req.GkvAbrechnung.IKDatenannahmestelle}\";
|
||||
file_path = $@"{req.GkvAbrechnung.Transfername}";
|
||||
root_path = $@"C:\GkvAbrechnung\{req.Tenant}\{req.GkvTransferProtokoll.IKDatenannahmestelle}\";
|
||||
file_path = $@"{req.GkvTransferProtokoll.Transfername}";
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(root_path);
|
||||
|
||||
var finalpath = root_path + file_path;
|
||||
|
||||
File.WriteAllText(finalpath, req.GkvAbrechnung.Nutzdatendatei);
|
||||
File.WriteAllText(finalpath, req.GkvTransferProtokoll.Nutzdatendatei);
|
||||
|
||||
var auftragsdatei2 = Encoding.GetEncoding("ISO-8859-1").GetBytes(req.GkvTransferProtokoll.Auftragsdatei);
|
||||
|
||||
var auftragsdatei2 = Encoding.GetEncoding("ISO-8859-1").GetBytes(req.GkvAbrechnung.Auftragsdatei);
|
||||
|
||||
File.WriteAllBytes(finalpath + ".auf", auftragsdatei2);
|
||||
}
|
||||
|
||||
private void GetStatus(GkvApp8GetStatusRequest req)
|
||||
{
|
||||
// Get Keys
|
||||
//var gkv_oid = req.GkvAbrechnungDC.GkvAbrechnungOid;
|
||||
//var kundennummer = req.GkvAbrechnungDC.Kundennummer;
|
||||
var response = new GkvApp8GetStatusResponse(false);
|
||||
|
||||
// Get Entry
|
||||
var entries = DAOFactory.GenericDAO.GetAllActive<GkvAbrechnung>();
|
||||
var tuple_count = req.Oids.Length;
|
||||
|
||||
var tuples = req.Tuples;
|
||||
var tuples_len = tuples.Length;
|
||||
response.Fehler = new GkvApp8FehlerDC[tuple_count];
|
||||
|
||||
var response_tuples = new Tuple<bool, GkvAbrechnungDC>[tuples_len];
|
||||
|
||||
for (int i = 0; i < tuples_len; i++)
|
||||
try
|
||||
{
|
||||
var tuple = tuples[i];
|
||||
var gkv_abrechnung = tuple.Item1;
|
||||
var gkv_abrechnung_oid = tuple.Item2;
|
||||
// Load XML Info
|
||||
var results = GetResultFile(req.Tenant);
|
||||
|
||||
var app8_gkv_abrechnung = entries.First(x => x.Oid == gkv_abrechnung_oid);
|
||||
var app8_gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(app8_gkv_abrechnung);
|
||||
for (int i = 0; i < tuple_count; i++)
|
||||
{
|
||||
var gkv_transfer_oid = req.Oids[i];
|
||||
|
||||
if (gkv_abrechnung.IsUpToDate(app8_gkv_abrechnung_dc))
|
||||
{
|
||||
response_tuples[i] = new Tuple<bool, GkvAbrechnungDC>(true, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
response_tuples[i] = new Tuple<bool, GkvAbrechnungDC>(false, app8_gkv_abrechnung_dc);
|
||||
if (results.TryGetValue(gkv_transfer_oid, out var fehlerDC))
|
||||
{
|
||||
response.Fehler[i] = fehlerDC;
|
||||
}
|
||||
}
|
||||
|
||||
response.Success = true;
|
||||
}
|
||||
catch (DakotaException e)
|
||||
{
|
||||
response.Message = e.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
response.Message = e.ToString();
|
||||
}
|
||||
|
||||
// Response
|
||||
var response = new GkvApp8GetStatusResponse();
|
||||
|
||||
response.Success = true;
|
||||
response.Tuples = response_tuples;
|
||||
|
||||
SendResponse(response);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
private void GetIK(GkvApp8GetIKRequest req)
|
||||
@@ -284,5 +285,43 @@ namespace Host
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<long, GkvApp8FehlerDC> GetResultFile(string tenant)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(GkvAbrechnungResultFolderPath))
|
||||
throw new DakotaException("Config GkvAbrechnungResultFolderPath is empty or whitespace");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(tenant))
|
||||
throw new DakotaException("Tenant is empty or whitespace");
|
||||
|
||||
var path = GkvAbrechnungResultFolderPath;
|
||||
|
||||
var folder = Path.Combine(path, tenant);
|
||||
var location = Path.Combine(folder, "results.xml");
|
||||
|
||||
if (!File.Exists(location))
|
||||
{
|
||||
Directory.CreateDirectory(folder);
|
||||
using (File.Create(location)) { };
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
var doc = XDocument.Load(location);
|
||||
|
||||
var list = doc.Root.Elements("Fehler")
|
||||
.Select(GkvApp8FehlerXml.Parse)
|
||||
.Select(GkvApp8FehlerXml.ToDC)
|
||||
.ToList();
|
||||
|
||||
return list.ToDictionary(dc => dc.Oid);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new DakotaException("App8 Server Error: " + e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -315,6 +315,10 @@
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Dakota\Dakota.csproj">
|
||||
<Project>{47331732-DD96-4075-869F-83AA9F3F9937}</Project>
|
||||
<Name>Dakota</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Data\Data.csproj">
|
||||
<Project>{b0d73e3d-4ae7-4024-93a6-db1f46d7ccee}</Project>
|
||||
<Name>Data</Name>
|
||||
|
||||
@@ -236,6 +236,7 @@
|
||||
<add key="OpenrouteServiceApiUrl" value="https://api.openrouteservice.org/v2/matrix/driving-car" />
|
||||
<add key="OpenrouteServiceApiUrlGeocode" value="https://api.openrouteservice.org/geocode/search" />
|
||||
<add key="OpenrouteServiceApiKey" value="5b3ce3597851110001cf62484b0917529e9a4008acda819dc06e47e8" />
|
||||
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
|
||||
</appSettings>
|
||||
<devExpress>
|
||||
<themes enableThemesAssembly="true" styleSheetTheme="" theme="" />
|
||||
|
||||
@@ -8,20 +8,11 @@ CREATE TABLE `gkvabrechnung` (
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
`IKLeistungserbringer` varchar(256) DEFAULT NULL,
|
||||
`IKVersichertenKarte` varchar(256) DEFAULT NULL,
|
||||
`IKKostentrager` varchar(256) DEFAULT NULL,
|
||||
`IKDatenannahmestelle` varchar(256) DEFAULT NULL,
|
||||
`AbrechnungsZeitraumStart` datetime DEFAULT NULL,
|
||||
`AbrechnungsZeitraumEnde` datetime DEFAULT NULL,
|
||||
`Nutzdatendatei` text,
|
||||
`Auftragsdatei` varchar(1024) DEFAULT NULL,
|
||||
`Transfername` varchar(256) DEFAULT NULL,
|
||||
`Dateigrosse` int DEFAULT NULL,
|
||||
`Datenaustauschreferenz` int DEFAULT NULL,
|
||||
`ErstelltAm` datetime DEFAULT NULL,
|
||||
`Betrag` decimal(18,10) DEFAULT NULL,
|
||||
`Bezahlt` tinyint DEFAULT NULL,
|
||||
`ErstelltAm` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`Oid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
|
||||
|
||||
@@ -47,14 +38,24 @@ CREATE TABLE `gkvtransferprotokoll` (
|
||||
`GkvAbrechnungOid` bigint DEFAULT NULL,
|
||||
`AbsenderBezeichnung` varchar(4096) DEFAULT NULL,
|
||||
`EmpfangerBezeichnung` varchar(4096) DEFAULT NULL,
|
||||
`IKLeistungserbringer` varchar(256) DEFAULT NULL,
|
||||
`IKKrankenkasse` varchar(256) DEFAULT NULL,
|
||||
`IKKostentrager` varchar(256) DEFAULT NULL,
|
||||
`IKDatenannahmestelle` varchar(256) DEFAULT NULL,
|
||||
`Rechnungsnummer` varchar(64) DEFAULT NULL,
|
||||
`Datenaustauschreferenz` int DEFAULT NULL,
|
||||
`Transfernummer` int DEFAULT NULL,
|
||||
`Transfername` varchar(256) DEFAULT NULL,
|
||||
`ErstelltAm` datetime DEFAULT NULL,
|
||||
`Dateityp` varchar(4096) DEFAULT NULL,
|
||||
`Dateiname` varchar(4096) DEFAULT NULL,
|
||||
`PruftDatum` datetime DEFAULT NULL,
|
||||
`PruftFehler` varchar(4096) DEFAULT NULL,
|
||||
`VerschlusseltDatum` datetime DEFAULT NULL,
|
||||
`VerschlusseltFehler` varchar(4096) DEFAULT NULL,
|
||||
`UbertragDatum` datetime DEFAULT NULL,
|
||||
`UbertragFehler` varchar(4096) DEFAULT NULL,
|
||||
`Dateigrosse` int DEFAULT NULL,
|
||||
`Nutzdatendatei` text,
|
||||
`Auftragsdatei` varchar(1024) DEFAULT NULL,
|
||||
`Fehlertitel` varchar(256) DEFAULT NULL,
|
||||
`Fehlerdatum` datetime DEFAULT NULL,
|
||||
`Fehlernachricht` varchar(4096) DEFAULT NULL,
|
||||
`Fehlerlevel` int DEFAULT NULL,
|
||||
PRIMARY KEY (`Oid`),
|
||||
KEY `FK_GKVTRANSFERPROTOKOLL_GKVABRECHNUNG` (`GkvAbrechnungOid`),
|
||||
CONSTRAINT `FK_GKVTRANSFERPROTOKOLL_GKVABRECHNUNG` FOREIGN KEY (`GkvAbrechnungOid`) REFERENCES `gkvabrechnung` (`Oid`)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
@@ -1,120 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -44,13 +44,22 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
|
||||
}
|
||||
else if (item.ServiceDescription.Name.ToLower().Contains("kurzurlaub"))
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
// keine zweite Rechnung aufmachen, deshalb zu Reisen
|
||||
=======
|
||||
// keine neue Rechnung für Kurzurlaub aufmachen, zu Reisen
|
||||
>>>>>>> master
|
||||
serviceRecordsReise.Add(item);
|
||||
}
|
||||
else if (item.ServiceDescription.Name.ToLower().Contains("tagesfahrt"))
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
// keine zweite Rechnung aufmachen, deshalb zu Reisen
|
||||
serviceRecordsReise.Add(item);
|
||||
=======
|
||||
// keine neue Rechnung für Tagesfahrt aufmachen, zu sonstigen
|
||||
serviceRecordsNichtUrlaubUndReise.Add(item);
|
||||
>>>>>>> master
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
496
ReportImp/LebensWert/RechnungHI.Designer.cs
generated
496
ReportImp/LebensWert/RechnungHI.Designer.cs
generated
@@ -50,12 +50,6 @@ namespace LebensWert
|
||||
this.lblZeitraum = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.Detail3 = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrTable6 = new DevExpress.XtraReports.UI.XRTable();
|
||||
@@ -64,20 +58,26 @@ namespace LebensWert
|
||||
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblAbschluss = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblAbschluss = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText5)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText4)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
@@ -91,14 +91,15 @@ namespace LebensWert
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrRichText5});
|
||||
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
|
||||
this.ReportHeader.HeightF = 70.88824F;
|
||||
this.ReportHeader.Name = "ReportHeader";
|
||||
this.ReportHeader.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText5
|
||||
//
|
||||
this.xrRichText5.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrRichText5.Font = new DevExpress.Drawing.DXFont("Calibri", 9F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrRichText5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrRichText5.Name = "xrRichText5";
|
||||
this.xrRichText5.SerializableRtfString = resources.GetString("xrRichText5.SerializableRtfString");
|
||||
@@ -125,6 +126,7 @@ namespace LebensWert
|
||||
// Page1
|
||||
//
|
||||
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable5,
|
||||
this.xrLabel2,
|
||||
this.lblAnrede,
|
||||
this.xrLabel15,
|
||||
@@ -136,8 +138,8 @@ namespace LebensWert
|
||||
this.xrLabel7,
|
||||
this.xrLabel3,
|
||||
this.lblZeitraum});
|
||||
this.Page1.Font = new System.Drawing.Font("Calibri", 11F);
|
||||
this.Page1.HeightF = 519.6049F;
|
||||
this.Page1.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
|
||||
this.Page1.HeightF = 558.3333F;
|
||||
this.Page1.Name = "Page1";
|
||||
this.Page1.StylePriority.UseFont = false;
|
||||
//
|
||||
@@ -145,7 +147,8 @@ namespace LebensWert
|
||||
//
|
||||
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel2.CanShrink = true;
|
||||
this.xrLabel2.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 466.2716F);
|
||||
this.xrLabel2.Name = "xrLabel2";
|
||||
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -159,7 +162,8 @@ namespace LebensWert
|
||||
//
|
||||
this.lblAnrede.BackColor = System.Drawing.Color.Transparent;
|
||||
this.lblAnrede.CanShrink = true;
|
||||
this.lblAnrede.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblAnrede.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 416.2717F);
|
||||
this.lblAnrede.Name = "lblAnrede";
|
||||
this.lblAnrede.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -173,7 +177,7 @@ namespace LebensWert
|
||||
//
|
||||
this.xrLabel15.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel15.CanShrink = true;
|
||||
this.xrLabel15.Font = new System.Drawing.Font("Times New Roman", 9.75F);
|
||||
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F);
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(412.028F, 248.5416F);
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -189,7 +193,8 @@ namespace LebensWert
|
||||
this.xrLabel17.CanShrink = true;
|
||||
this.xrLabel17.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceBase.InvoiceDate", "{0:dd.MM.yyyy}")});
|
||||
this.xrLabel17.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel17.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(464.5832F, 248.5416F);
|
||||
this.xrLabel17.Name = "xrLabel17";
|
||||
this.xrLabel17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -200,7 +205,7 @@ namespace LebensWert
|
||||
//
|
||||
// xrRichText4
|
||||
//
|
||||
this.xrRichText4.Font = new System.Drawing.Font("Arial", 8F);
|
||||
this.xrRichText4.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrRichText4.LocationFloat = new DevExpress.Utils.PointFloat(412.028F, 21.45834F);
|
||||
this.xrRichText4.Name = "xrRichText4";
|
||||
this.xrRichText4.SerializableRtfString = resources.GetString("xrRichText4.SerializableRtfString");
|
||||
@@ -212,7 +217,8 @@ namespace LebensWert
|
||||
//
|
||||
this.xrLabel12.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel12.CanShrink = true;
|
||||
this.xrLabel12.Font = new System.Drawing.Font("Times New Roman", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel12.Font = new DevExpress.Drawing.DXFont("Times New Roman", 12F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(0F, 379.4183F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -228,7 +234,8 @@ namespace LebensWert
|
||||
this.xrLabel11.CanShrink = true;
|
||||
this.xrLabel11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceNumber")});
|
||||
this.xrLabel11.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel11.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(537.4999F, 268.5416F);
|
||||
this.xrLabel11.Name = "xrLabel11";
|
||||
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -239,7 +246,7 @@ namespace LebensWert
|
||||
//
|
||||
// xrLabel6
|
||||
//
|
||||
this.xrLabel6.Font = new System.Drawing.Font("Times New Roman", 9.75F);
|
||||
this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F);
|
||||
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 38.12501F);
|
||||
this.xrLabel6.Name = "xrLabel6";
|
||||
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -249,7 +256,8 @@ namespace LebensWert
|
||||
//
|
||||
// xrLabel7
|
||||
//
|
||||
this.xrLabel7.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 68.12499F);
|
||||
this.xrLabel7.Multiline = true;
|
||||
this.xrLabel7.Name = "xrLabel7";
|
||||
@@ -263,7 +271,7 @@ namespace LebensWert
|
||||
//
|
||||
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel3.CanShrink = true;
|
||||
this.xrLabel3.Font = new System.Drawing.Font("Times New Roman", 9.75F);
|
||||
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Times New Roman", 9.75F);
|
||||
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(412.028F, 268.5416F);
|
||||
this.xrLabel3.Name = "xrLabel3";
|
||||
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -275,7 +283,8 @@ namespace LebensWert
|
||||
//
|
||||
// lblZeitraum
|
||||
//
|
||||
this.lblZeitraum.Font = new System.Drawing.Font("Times New Roman", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblZeitraum.Font = new DevExpress.Drawing.DXFont("Times New Roman", 12F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.lblZeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 362.4183F);
|
||||
this.lblZeitraum.Name = "lblZeitraum";
|
||||
this.lblZeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -295,15 +304,123 @@ namespace LebensWert
|
||||
//
|
||||
// Detail1
|
||||
//
|
||||
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable5});
|
||||
this.Detail1.HeightF = 25F;
|
||||
this.Detail1.HeightF = 0F;
|
||||
this.Detail1.Name = "Detail1";
|
||||
//
|
||||
// DetailReport2
|
||||
//
|
||||
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
this.Detail3});
|
||||
this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
|
||||
this.DetailReport2.DataSource = this.bindingSource1;
|
||||
this.DetailReport2.Level = 0;
|
||||
this.DetailReport2.Name = "DetailReport2";
|
||||
//
|
||||
// Detail3
|
||||
//
|
||||
this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable6});
|
||||
this.Detail3.HeightF = 25F;
|
||||
this.Detail3.Name = "Detail3";
|
||||
//
|
||||
// xrTable6
|
||||
//
|
||||
this.xrTable6.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
|
||||
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable6.Name = "xrTable6";
|
||||
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow25});
|
||||
this.xrTable6.SizeF = new System.Drawing.SizeF(677.0001F, 25F);
|
||||
this.xrTable6.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrTableRow25
|
||||
//
|
||||
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell42,
|
||||
this.xrTableCell43,
|
||||
this.xrTableCell44,
|
||||
this.xrTableCell47});
|
||||
this.xrTableRow25.Name = "xrTableRow25";
|
||||
this.xrTableRow25.Weight = 1D;
|
||||
//
|
||||
// xrTableCell42
|
||||
//
|
||||
this.xrTableCell42.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
|
||||
this.xrTableCell42.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell42.Name = "xrTableCell42";
|
||||
this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell42.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell42.StylePriority.UseBorders = false;
|
||||
this.xrTableCell42.StylePriority.UseFont = false;
|
||||
this.xrTableCell42.StylePriority.UsePadding = false;
|
||||
this.xrTableCell42.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell42.Weight = 1.3847857790213918D;
|
||||
//
|
||||
// xrTableCell43
|
||||
//
|
||||
this.xrTableCell43.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCountString", "{0:0.00}")});
|
||||
this.xrTableCell43.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell43.Name = "xrTableCell43";
|
||||
this.xrTableCell43.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell43.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell43.StylePriority.UseBorders = false;
|
||||
this.xrTableCell43.StylePriority.UseFont = false;
|
||||
this.xrTableCell43.StylePriority.UsePadding = false;
|
||||
this.xrTableCell43.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell43.Text = "xrTableCell43";
|
||||
this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell43.Weight = 0.32791712229997105D;
|
||||
//
|
||||
// xrTableCell44
|
||||
//
|
||||
this.xrTableCell44.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell44.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AmountPerUnit", "{0:c} ")});
|
||||
this.xrTableCell44.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell44.Name = "xrTableCell44";
|
||||
this.xrTableCell44.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell44.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell44.StylePriority.UseBorders = false;
|
||||
this.xrTableCell44.StylePriority.UseFont = false;
|
||||
this.xrTableCell44.StylePriority.UsePadding = false;
|
||||
this.xrTableCell44.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell44.Weight = 0.82607164969433422D;
|
||||
//
|
||||
// xrTableCell47
|
||||
//
|
||||
this.xrTableCell47.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
|
||||
this.xrTableCell47.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell47.Name = "xrTableCell47";
|
||||
this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 2, 2, 100F);
|
||||
this.xrTableCell47.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell47.StylePriority.UseBorders = false;
|
||||
this.xrTableCell47.StylePriority.UseFont = false;
|
||||
this.xrTableCell47.StylePriority.UsePadding = false;
|
||||
this.xrTableCell47.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell47.Weight = 0.46122587742123339D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
|
||||
//
|
||||
// xrTable5
|
||||
//
|
||||
this.xrTable5.Font = new System.Drawing.Font("Calibri", 11F);
|
||||
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable5.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
|
||||
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 533.3333F);
|
||||
this.xrTable5.Name = "xrTable5";
|
||||
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow23});
|
||||
@@ -328,7 +445,7 @@ namespace LebensWert
|
||||
this.xrTableCell37.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell37.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell37.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell37.Name = "xrTableCell37";
|
||||
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell37.StylePriority.UseBackColor = false;
|
||||
@@ -347,7 +464,7 @@ namespace LebensWert
|
||||
this.xrTableCell35.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell35.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell35.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell35.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell35.Name = "xrTableCell35";
|
||||
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell35.StylePriority.UseBackColor = false;
|
||||
@@ -366,7 +483,7 @@ namespace LebensWert
|
||||
this.xrTableCell33.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell33.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell33.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell33.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell33.Name = "xrTableCell33";
|
||||
this.xrTableCell33.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell33.StylePriority.UseBackColor = false;
|
||||
@@ -386,7 +503,7 @@ namespace LebensWert
|
||||
this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell34.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell34.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F);
|
||||
this.xrTableCell34.Name = "xrTableCell34";
|
||||
this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 2, 2, 100F);
|
||||
this.xrTableCell34.StylePriority.UseBackColor = false;
|
||||
@@ -399,176 +516,56 @@ namespace LebensWert
|
||||
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell34.Weight = 0.46122568052246343D;
|
||||
//
|
||||
// DetailReport2
|
||||
// ReportFooter
|
||||
//
|
||||
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
this.Detail3,
|
||||
this.GroupFooter1});
|
||||
this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
|
||||
this.DetailReport2.DataSource = this.bindingSource1;
|
||||
this.DetailReport2.Level = 0;
|
||||
this.DetailReport2.Name = "DetailReport2";
|
||||
this.DetailReport2.PageBreak = DevExpress.XtraReports.UI.PageBreak.AfterBand;
|
||||
//
|
||||
// Detail3
|
||||
//
|
||||
this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable6});
|
||||
this.Detail3.HeightF = 25F;
|
||||
this.Detail3.Name = "Detail3";
|
||||
//
|
||||
// xrTable6
|
||||
//
|
||||
this.xrTable6.Font = new System.Drawing.Font("Calibri", 11F);
|
||||
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable6.Name = "xrTable6";
|
||||
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow25});
|
||||
this.xrTable6.SizeF = new System.Drawing.SizeF(677.0001F, 25F);
|
||||
this.xrTable6.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrTableRow25
|
||||
//
|
||||
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell42,
|
||||
this.xrTableCell43,
|
||||
this.xrTableCell44,
|
||||
this.xrTableCell47});
|
||||
this.xrTableRow25.Name = "xrTableRow25";
|
||||
this.xrTableRow25.Weight = 1D;
|
||||
//
|
||||
// xrTableCell42
|
||||
//
|
||||
this.xrTableCell42.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
|
||||
this.xrTableCell42.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell42.Name = "xrTableCell42";
|
||||
this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell42.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell42.StylePriority.UseBorders = false;
|
||||
this.xrTableCell42.StylePriority.UseFont = false;
|
||||
this.xrTableCell42.StylePriority.UsePadding = false;
|
||||
this.xrTableCell42.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell42.Weight = 1.3847857790213918D;
|
||||
//
|
||||
// xrTableCell43
|
||||
//
|
||||
this.xrTableCell43.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCountString", "{0:0.00}")});
|
||||
this.xrTableCell43.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell43.Name = "xrTableCell43";
|
||||
this.xrTableCell43.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell43.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell43.StylePriority.UseBorders = false;
|
||||
this.xrTableCell43.StylePriority.UseFont = false;
|
||||
this.xrTableCell43.StylePriority.UsePadding = false;
|
||||
this.xrTableCell43.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell43.Text = "xrTableCell43";
|
||||
this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell43.Weight = 0.32791712229997105D;
|
||||
//
|
||||
// xrTableCell44
|
||||
//
|
||||
this.xrTableCell44.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell44.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AmountPerUnit", "{0:c} ")});
|
||||
this.xrTableCell44.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell44.Name = "xrTableCell44";
|
||||
this.xrTableCell44.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
|
||||
this.xrTableCell44.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell44.StylePriority.UseBorders = false;
|
||||
this.xrTableCell44.StylePriority.UseFont = false;
|
||||
this.xrTableCell44.StylePriority.UsePadding = false;
|
||||
this.xrTableCell44.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell44.Weight = 0.82607164969433422D;
|
||||
//
|
||||
// xrTableCell47
|
||||
//
|
||||
this.xrTableCell47.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
|
||||
this.xrTableCell47.Font = new System.Drawing.Font("Times New Roman", 11.25F);
|
||||
this.xrTableCell47.Name = "xrTableCell47";
|
||||
this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 2, 2, 100F);
|
||||
this.xrTableCell47.StylePriority.UseBorderColor = false;
|
||||
this.xrTableCell47.StylePriority.UseBorders = false;
|
||||
this.xrTableCell47.StylePriority.UseFont = false;
|
||||
this.xrTableCell47.StylePriority.UsePadding = false;
|
||||
this.xrTableCell47.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell47.Weight = 0.46122587742123339D;
|
||||
//
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel8,
|
||||
this.xrLabel4,
|
||||
this.xrLabel14,
|
||||
this.lblAbschluss,
|
||||
this.xrLabel5,
|
||||
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel9,
|
||||
this.xrLabel1,
|
||||
this.xrLabel9});
|
||||
this.GroupFooter1.HeightF = 278.632F;
|
||||
this.GroupFooter1.Name = "GroupFooter1";
|
||||
this.xrLabel5,
|
||||
this.lblAbschluss,
|
||||
this.xrLabel14,
|
||||
this.xrLabel4,
|
||||
this.xrLabel8});
|
||||
this.ReportFooter.HeightF = 253.6319F;
|
||||
this.ReportFooter.Name = "ReportFooter";
|
||||
//
|
||||
// xrLabel8
|
||||
// xrLabel9
|
||||
//
|
||||
this.xrLabel8.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(9.536743E-05F, 83.54422F);
|
||||
this.xrLabel8.Name = "xrLabel8";
|
||||
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel8.SizeF = new System.Drawing.SizeF(666.9999F, 40.71032F);
|
||||
this.xrLabel8.StylePriority.UseFont = false;
|
||||
this.xrLabel8.Text = "Ein Nachweis über die geleisteten Stunden ist in der Anlage beigefügt. Für evtl. " +
|
||||
"Rückfragen stehe ich Ihnen gerne zur Verfügung.";
|
||||
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 142.1519F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(250F, 17F);
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
this.xrLabel9.Text = "Mit freundlichen Grüßen";
|
||||
//
|
||||
// xrLabel4
|
||||
// xrLabel1
|
||||
//
|
||||
this.xrLabel4.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 221.6717F);
|
||||
this.xrLabel4.Name = "xrLabel4";
|
||||
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel4.SizeF = new System.Drawing.SizeF(131.5832F, 21.96034F);
|
||||
this.xrLabel4.StylePriority.UseFont = false;
|
||||
this.xrLabel4.Text = "Kai Lippel";
|
||||
//
|
||||
// xrLabel14
|
||||
//
|
||||
this.xrLabel14.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(572.9167F, 231.6716F);
|
||||
this.xrLabel14.Name = "xrLabel14";
|
||||
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel14.SizeF = new System.Drawing.SizeF(72.20821F, 21.96034F);
|
||||
this.xrLabel14.StylePriority.UseFont = false;
|
||||
this.xrLabel14.Text = "Anlage";
|
||||
//
|
||||
// lblAbschluss
|
||||
//
|
||||
this.lblAbschluss.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblAbschluss.LocationFloat = new DevExpress.Utils.PointFloat(0F, 47.50595F);
|
||||
this.lblAbschluss.Name = "lblAbschluss";
|
||||
this.lblAbschluss.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblAbschluss.SizeF = new System.Drawing.SizeF(666.9999F, 36.03821F);
|
||||
this.lblAbschluss.StylePriority.UseFont = false;
|
||||
this.lblAbschluss.Text = "Den Rechnungsbetrag, in Höhe von [GrossClaim], bitte ich sofort nach Erhalt der R" +
|
||||
"echnung, unter Angabe der Rechnungsnummer, auf das oben angegebene Konto zu über" +
|
||||
"weisen.";
|
||||
this.xrLabel1.BackColor = System.Drawing.Color.LightGray;
|
||||
this.xrLabel1.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel1.BorderWidth = 1F;
|
||||
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
|
||||
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(332.9583F, 0F);
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(344.0417F, 21.46428F);
|
||||
this.xrLabel1.StylePriority.UseBackColor = false;
|
||||
this.xrLabel1.StylePriority.UseBorders = false;
|
||||
this.xrLabel1.StylePriority.UseBorderWidth = false;
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.StylePriority.UsePadding = false;
|
||||
this.xrLabel1.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
|
||||
//
|
||||
// xrLabel5
|
||||
//
|
||||
this.xrLabel5.BackColor = System.Drawing.Color.LightGray;
|
||||
this.xrLabel5.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel5.BorderWidth = 1F;
|
||||
this.xrLabel5.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Bold);
|
||||
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrLabel5.Name = "xrLabel5";
|
||||
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 2, 0, 0, 100F);
|
||||
@@ -582,39 +579,52 @@ namespace LebensWert
|
||||
this.xrLabel5.Text = "Rechnungsbetrag";
|
||||
this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrLabel1
|
||||
// lblAbschluss
|
||||
//
|
||||
this.xrLabel1.BackColor = System.Drawing.Color.LightGray;
|
||||
this.xrLabel1.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel1.BorderWidth = 1F;
|
||||
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
|
||||
this.xrLabel1.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(332.9583F, 0F);
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(344.0417F, 21.46428F);
|
||||
this.xrLabel1.StylePriority.UseBackColor = false;
|
||||
this.xrLabel1.StylePriority.UseBorders = false;
|
||||
this.xrLabel1.StylePriority.UseBorderWidth = false;
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.StylePriority.UsePadding = false;
|
||||
this.xrLabel1.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
|
||||
this.lblAbschluss.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.lblAbschluss.LocationFloat = new DevExpress.Utils.PointFloat(0F, 47.50595F);
|
||||
this.lblAbschluss.Name = "lblAbschluss";
|
||||
this.lblAbschluss.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblAbschluss.SizeF = new System.Drawing.SizeF(666.9999F, 36.03821F);
|
||||
this.lblAbschluss.StylePriority.UseFont = false;
|
||||
this.lblAbschluss.Text = "Den Rechnungsbetrag, in Höhe von [GrossClaim], bitte ich sofort nach Erhalt der R" +
|
||||
"echnung, unter Angabe der Rechnungsnummer, auf das oben angegebene Konto zu über" +
|
||||
"weisen.";
|
||||
//
|
||||
// xrLabel9
|
||||
// xrLabel14
|
||||
//
|
||||
this.xrLabel9.Font = new System.Drawing.Font("Times New Roman", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 142.1519F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(250F, 17F);
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
this.xrLabel9.Text = "Mit freundlichen Grüßen";
|
||||
this.xrLabel14.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(572.9167F, 231.6716F);
|
||||
this.xrLabel14.Name = "xrLabel14";
|
||||
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel14.SizeF = new System.Drawing.SizeF(72.20821F, 21.96034F);
|
||||
this.xrLabel14.StylePriority.UseFont = false;
|
||||
this.xrLabel14.Text = "Anlage";
|
||||
//
|
||||
// bindingSource1
|
||||
// xrLabel4
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
|
||||
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 221.6717F);
|
||||
this.xrLabel4.Name = "xrLabel4";
|
||||
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel4.SizeF = new System.Drawing.SizeF(131.5832F, 21.96034F);
|
||||
this.xrLabel4.StylePriority.UseFont = false;
|
||||
this.xrLabel4.Text = "Kai Lippel";
|
||||
//
|
||||
// xrLabel8
|
||||
//
|
||||
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Times New Roman", 11.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(9.536743E-05F, 83.54422F);
|
||||
this.xrLabel8.Name = "xrLabel8";
|
||||
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel8.SizeF = new System.Drawing.SizeF(666.9999F, 40.71032F);
|
||||
this.xrLabel8.StylePriority.UseFont = false;
|
||||
this.xrLabel8.Text = "Ein Nachweis über die geleisteten Stunden ist in der Anlage beigefügt. Für evtl. " +
|
||||
"Rückfragen stehe ich Ihnen gerne zur Verfügung.";
|
||||
//
|
||||
// RechnungHI
|
||||
//
|
||||
@@ -624,22 +634,24 @@ namespace LebensWert
|
||||
this.topMarginBand1,
|
||||
this.bottomMarginBand1,
|
||||
this.Page1,
|
||||
this.DetailReport});
|
||||
this.DetailReport,
|
||||
this.ReportFooter});
|
||||
this.DataSource = this.bindingSource1;
|
||||
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
|
||||
this.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
|
||||
this.ruleRateFactorNull});
|
||||
this.Margins = new System.Drawing.Printing.Margins(75, 75, 60, 22);
|
||||
this.Margins = new DevExpress.Drawing.DXMargins(75F, 75F, 60F, 21.96034F);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
|
||||
this.Version = "17.1";
|
||||
this.Version = "23.2";
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText5)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText4)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
@@ -656,12 +668,6 @@ namespace LebensWert
|
||||
private DevExpress.XtraReports.UI.XRLabel lblZeitraum;
|
||||
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
|
||||
private DevExpress.XtraReports.UI.DetailBand Detail1;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable5;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
|
||||
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
|
||||
private DevExpress.XtraReports.UI.DetailBand Detail3;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable6;
|
||||
@@ -671,21 +677,27 @@ namespace LebensWert
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
|
||||
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblAbschluss;
|
||||
private DevExpress.XtraReports.UI.XRRichText xrRichText4;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
|
||||
private DevExpress.XtraReports.UI.XRRichText xrRichText5;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel17;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblAnrede;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable5;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
|
||||
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblAbschluss;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,7 @@
|
||||
using BeWo.Service.Plugins;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared.DataContracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -14,6 +17,11 @@ namespace LebensWert.Service
|
||||
public override SupportConceptStatisticsDC CreateSupportConceptStatisticsImpl(long costBearer2SupportConceptOid, DateTime statisticsDate, long? ignoreServiceRecordOid)
|
||||
{
|
||||
var stats = base.CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate, ignoreServiceRecordOid);
|
||||
|
||||
var cb = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(DAOFactory.GenericDAO.GetByID<CostBearer2SupportConcept>(costBearer2SupportConceptOid));
|
||||
if (!cb.CostBearer.Name.ToLower().Contains("neu"))
|
||||
return stats;
|
||||
|
||||
decimal factor = 1.2m;
|
||||
|
||||
stats.ApprovedMinutesTillNow *= factor;
|
||||
@@ -21,8 +29,6 @@ namespace LebensWert.Service
|
||||
stats.MinutesApprovedPerMonth *= factor;
|
||||
stats.MinutesApprovedPerWeek *= factor;
|
||||
stats.MinutesApprovedTotal *= factor;
|
||||
stats.MinutesFreePerMonthAverage *= factor;
|
||||
stats.MinutesFreePerWeekAverage *= factor;
|
||||
stats.MinutesOutOfApprovedPeriod *= factor;
|
||||
stats.MinutesProvidedPerMonthAverage *= factor;
|
||||
stats.MinutesProvidedPerWeekAverage *= factor;
|
||||
@@ -32,6 +38,11 @@ namespace LebensWert.Service
|
||||
stats.MinutesProvidedTotalRounded *= factor;
|
||||
stats.SollTotalUntilThisMonth *= factor;
|
||||
|
||||
|
||||
|
||||
stats.MinutesFreePerMonthAverage *= factor;
|
||||
stats.MinutesFreePerWeekAverage *= factor;
|
||||
|
||||
foreach (var s in stats.PeriodStatistics)
|
||||
{
|
||||
s.AmountConsumedThisInterval *= factor;
|
||||
@@ -41,14 +52,41 @@ namespace LebensWert.Service
|
||||
s.MinutesApprovedPerMonth *= factor;
|
||||
s.MinutesApprovedPerWeek *= factor;
|
||||
s.MinutesApprovedTotal *= factor;
|
||||
s.MinutesFreePerWeek *= factor;
|
||||
s.MinutesOutOfApprovedPeriod *= factor;
|
||||
s.MinutesProvidedThisMonth *= factor;
|
||||
s.MinutesProvidedThisWeek *= factor;
|
||||
s.MinutesProvidedTotal *= factor;
|
||||
s.MinutesProvidedTotalRounded *= factor;
|
||||
s.SollTotalUntilThisMonth *= factor;
|
||||
|
||||
DateTime dtPeriod = statisticsDate.Date;
|
||||
if (s.SupportConceptApprovalPeriod.StartDate.HasValue && s.SupportConceptApprovalPeriod.StartDate > dtPeriod)
|
||||
{
|
||||
dtPeriod = s.SupportConceptApprovalPeriod.StartDate.Value;
|
||||
}
|
||||
|
||||
TimeSpan tsPeriod = s.SupportConceptApprovalPeriod.EndDate.Value.Subtract(dtPeriod);
|
||||
int daysPeriod = tsPeriod.Days + 1;
|
||||
if (daysPeriod < 0)
|
||||
daysPeriod = 0;
|
||||
|
||||
if (daysPeriod != 0)
|
||||
{
|
||||
s.MinutesFreePerWeek = (s.MinutesApprovedTotal - s.MinutesProvidedTotalRounded) / (daysPeriod / 7m);
|
||||
}
|
||||
else
|
||||
{
|
||||
s.MinutesFreePerWeek = s.MinutesApprovedTotal - s.MinutesProvidedTotalRounded;
|
||||
}
|
||||
|
||||
//s.MinutesFreePerWeek *= factor;
|
||||
|
||||
}
|
||||
decimal freeTotal = stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded;
|
||||
if (stats.MinutesFreePerWeekAverage > freeTotal)
|
||||
stats.MinutesFreePerWeekAverage = freeTotal;
|
||||
if (stats.MinutesFreePerWeekAverage < 0)
|
||||
stats.MinutesFreePerWeekAverage = 0;
|
||||
|
||||
return stats;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -77,15 +77,19 @@ namespace PerspektiveSL
|
||||
ro.Stellvertretung2 = vertretung2.Employee.Person.LastNameFirstName;
|
||||
ro.Stellvertretung2Oid = vertretung2.EmployeeOid.Value;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
result.DetailList.Add(ro);
|
||||
=======
|
||||
|
||||
if (eghFachkraft == null && vertretung == null && vertretung2 == null)
|
||||
{
|
||||
// Klienten ohne Betreuung herausfiltern
|
||||
}
|
||||
else
|
||||
{
|
||||
result.DetailList.Add(ro);
|
||||
if (eghFachkraft == null && vertretung == null && vertretung2 == null)
|
||||
{
|
||||
// Klienten ohne Betreuung herausfiltern
|
||||
}
|
||||
else
|
||||
{
|
||||
result.DetailList.Add(ro);
|
||||
}
|
||||
>>>>>>> master
|
||||
}
|
||||
|
||||
foreach (var pair in empOidDict)
|
||||
|
||||
@@ -1,120 +1,242 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<<<<<<< HEAD
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
=======
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
>>>>>>> master
|
||||
</root>
|
||||
@@ -61,7 +61,10 @@
|
||||
<Compile Include="CustomMitarbeiterstundenkontoBerechnungMonate.cs" />
|
||||
<Compile Include="Invoicing\CustomBeWo67InvoiceCreation.cs" />
|
||||
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<Compile Include="Invoicing\CustomInvoiceNumberGenerator.cs" />
|
||||
>>>>>>> master
|
||||
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
|
||||
<Compile Include="Mitarbeiterarbeitszeitkonto.cs">
|
||||
<SubType>Component</SubType>
|
||||
|
||||
@@ -238,7 +238,11 @@ namespace VkmHamm
|
||||
if (item.ServiceDescription != null &&
|
||||
item.ServiceDescription.ServiceCategory != null)
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
|
||||
=======
|
||||
if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && !IsUrlaubAbsenceServiceRecord(item) && !IsKrankAbsenceServiceRecord(item))
|
||||
>>>>>>> master
|
||||
{
|
||||
arbeitszeit += duration;
|
||||
}
|
||||
@@ -274,6 +278,55 @@ namespace VkmHamm
|
||||
= 1 * (1 + 5/40)
|
||||
*/
|
||||
public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
|
||||
<<<<<<< HEAD
|
||||
{
|
||||
base.CreateEmployeeDetails(ro);
|
||||
|
||||
if (ro.ReportStartDate >= new DateTime(2024, 02, 01) && ro.EmployeeDetailList.Count > 0)
|
||||
{
|
||||
foreach (var ed in ro.EmployeeDetailList)
|
||||
{
|
||||
// Da deren Abwesenheiten ServiceRecords (Arbeitszeit) sind und die trotzdem vom Soll abgezogen werden, hat man die Stunden von der Abwesenheit doppelt.
|
||||
// Daher muss nochmal die Anzahl Stunden von Abweseneheiten von den Überstunden abgezogen werden..
|
||||
if (ed.TageKrankheit.HasValue)
|
||||
{
|
||||
ed.Ueberstunden -= ed.TageKrankheit.Value * ed.SollProTag;
|
||||
ed.UeberstundenGesamt -= ed.TageKrankheit.Value * ed.SollProTag;
|
||||
}
|
||||
if (ed.TageUrlaub.HasValue)
|
||||
{
|
||||
ed.Ueberstunden -= ed.TageUrlaub.Value * ed.SollProTag;
|
||||
ed.UeberstundenGesamt -= ed.TageUrlaub.Value * ed.SollProTag;
|
||||
}
|
||||
|
||||
var contract = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate);
|
||||
if (contract != null)
|
||||
{
|
||||
var toleranzstundenVorFaktor = contract.ProbationPeriod2;
|
||||
|
||||
if (toleranzstundenVorFaktor.HasValue && toleranzstundenVorFaktor > 0)
|
||||
{
|
||||
if (ed.Ueberstunden > toleranzstundenVorFaktor.Value)
|
||||
{
|
||||
var ueberstundenFuerFaktor = ed.Ueberstunden.Value - toleranzstundenVorFaktor.Value;
|
||||
ed.Custom15 = ueberstundenFuerFaktor * 1.25m; // Auf Stunden, die den Korridor überschritten haben, kommt der Faktor 1,25 drauf
|
||||
|
||||
ed.Ueberstunden = toleranzstundenVorFaktor; // Überstunden werden dann auf die Korridorstunden gesetzt, da die Stunden mit Faktor extra dargestellt werden
|
||||
ed.UeberstundenGesamt += (ed.Ueberstunden + ed.Custom15) - (ed.Ueberstunden + ueberstundenFuerFaktor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override decimal? BerechneUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
|
||||
{
|
||||
if (start < new DateTime(2024, 02, 01))
|
||||
return ueberstundenStd;
|
||||
|
||||
=======
|
||||
{
|
||||
base.CreateEmployeeDetails(ro);
|
||||
|
||||
@@ -325,12 +378,17 @@ namespace VkmHamm
|
||||
if (start >= new DateTime(2024, 04, 01))
|
||||
{ };
|
||||
|
||||
>>>>>>> master
|
||||
if (ed.UeberstundenVormonat == null)
|
||||
ed.UeberstundenVormonat = 0;
|
||||
if (ed.UeberstundenGesamt == null)
|
||||
ed.UeberstundenGesamt = 0;
|
||||
|
||||
<<<<<<< HEAD
|
||||
var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat - (ed.StundenSollMax - ed.StundenSollOhneUrlaubKrankheit);
|
||||
=======
|
||||
var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat;
|
||||
>>>>>>> master
|
||||
|
||||
if (contract.ProbationPeriod2.HasValue && contract.ProbationPeriod2.Value > 0 && ueberstunden > contract.ProbationPeriod2.Value)
|
||||
{
|
||||
|
||||
@@ -23,24 +23,12 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.GkvAbrechnungVersion = pEntity.Version;
|
||||
pDataContract.Notice = pEntity.Notice;
|
||||
|
||||
pDataContract.IKDatenannahmestelle = pEntity.IKDatenannahmestelle;
|
||||
pDataContract.IKVersichertenKarte = pEntity.IKVersichertenKarte;
|
||||
pDataContract.IKLeistungserbringer = pEntity.IKLeistungserbringer;
|
||||
pDataContract.IKKostenträger = pEntity.IKKostentrager;
|
||||
|
||||
pDataContract.AbrechnungsZeitraumStart = pEntity.AbrechnungsZeitraumStart;
|
||||
pDataContract.AbrechnungsZeitraumEnde = pEntity.AbrechnungsZeitraumEnde;
|
||||
|
||||
pDataContract.Nutzdatendatei = pEntity.Nutzdatendatei;
|
||||
pDataContract.Auftragsdatei = pEntity.Auftragsdatei;
|
||||
pDataContract.Transfername = pEntity.Transfername;
|
||||
pDataContract.Dateigröße = pEntity.Dateigrosse;
|
||||
pDataContract.Datenaustauschreferenz = pEntity.Datenaustauschreferenz;
|
||||
|
||||
pDataContract.ErstelltAm = pEntity.ErstelltAm;
|
||||
|
||||
pDataContract.Betrag = pEntity.Betrag;
|
||||
pDataContract.Bezahlt = pEntity.Bezahlt;
|
||||
pDataContract.ErstelltAm = pEntity.ErstelltAm;
|
||||
|
||||
pDataContract.InvoiceBases = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDCs(pEntity.InvoiceBases);
|
||||
|
||||
@@ -59,25 +47,14 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pEntity.Version = pDataContract.GkvAbrechnungVersion;
|
||||
pEntity.Notice = pDataContract.Notice;
|
||||
|
||||
pEntity.IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
||||
pEntity.IKVersichertenKarte = pDataContract.IKVersichertenKarte;
|
||||
pEntity.IKLeistungserbringer = pDataContract.IKLeistungserbringer;
|
||||
pEntity.IKKostentrager = pDataContract.IKKostenträger;
|
||||
|
||||
pEntity.AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
|
||||
pEntity.AbrechnungsZeitraumEnde = pDataContract.AbrechnungsZeitraumEnde;
|
||||
|
||||
pEntity.Nutzdatendatei = pDataContract.Nutzdatendatei;
|
||||
pEntity.Auftragsdatei = pDataContract.Auftragsdatei;
|
||||
pEntity.Transfername = pDataContract.Transfername;
|
||||
pEntity.Dateigrosse = pDataContract.Dateigröße;
|
||||
pEntity.Datenaustauschreferenz = pDataContract.Datenaustauschreferenz;
|
||||
|
||||
pEntity.ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
pEntity.Betrag = pDataContract.Betrag;
|
||||
pEntity.Bezahlt = pDataContract.Bezahlt;
|
||||
|
||||
pEntity.ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
if (pEntity.GkvTransferProtokolle is null)
|
||||
pEntity.GkvTransferProtokolle = new List<GkvTransferProtokoll>();
|
||||
|
||||
|
||||
@@ -13,6 +13,11 @@ namespace BeWo.Service.DCEntityMapper
|
||||
{
|
||||
public override GkvTransferProtokollDC MergeWithDC(GkvTransferProtokoll pEntity, GkvTransferProtokollDC pDataContract)
|
||||
{
|
||||
pDataContract.IKDatenannahmestelle = pEntity.IKDatenannahmestelle;
|
||||
pDataContract.IKKrankenkasse = pEntity.IKKrankenkasse;
|
||||
pDataContract.IKLeistungserbringer = pEntity.IKLeistungserbringer;
|
||||
pDataContract.IKKostentrager = pEntity.IKKostentrager;
|
||||
|
||||
pDataContract.AbsenderBezeichnung = pEntity.AbsenderBezeichnung;
|
||||
pDataContract.Dateiname = pEntity.Dateiname;
|
||||
pDataContract.Dateityp = pEntity.Dateityp;
|
||||
@@ -21,12 +26,21 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.GkvTransferProtokollOid = pEntity.Oid;
|
||||
pDataContract.GkvTransferProtokollVersion = pEntity.Version;
|
||||
pDataContract.Notice = pEntity.Notice;
|
||||
pDataContract.PruftDatum = pEntity.PruftDatum;
|
||||
pDataContract.PruftFehler = pEntity.PruftFehler;
|
||||
pDataContract.UbertragDatum = pEntity.UbertragDatum;
|
||||
pDataContract.UbertragFehler = pEntity.UbertragFehler;
|
||||
pDataContract.VerschlusseltDatum = pEntity.VerschlusseltDatum;
|
||||
pDataContract.VerschlusseltFehler = pEntity.VerschlusseltFehler;
|
||||
|
||||
pDataContract.Rechnungsnummer = pEntity.Rechnungsnummer;
|
||||
pDataContract.Nutzdatendatei = pEntity.Nutzdatendatei;
|
||||
pDataContract.Auftragsdatei = pEntity.Auftragsdatei;
|
||||
pDataContract.Transfername = pEntity.Transfername;
|
||||
pDataContract.Transfernummer = pEntity.Transfernummer;
|
||||
pDataContract.Dateigrosse = pEntity.Dateigrosse;
|
||||
pDataContract.Datenaustauschreferenz = pEntity.Datenaustauschreferenz;
|
||||
|
||||
pDataContract.ErstelltAm = pEntity.ErstelltAm;
|
||||
|
||||
pDataContract.Fehlerdatum = pEntity.Fehlerdatum;
|
||||
pDataContract.Fehlerlevel = pEntity.Fehlerlevel;
|
||||
pDataContract.Fehlernachricht = pEntity.Fehlernachricht;
|
||||
pDataContract.Fehlertitel = pEntity.Fehlertitel;
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
@@ -43,12 +57,26 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pEntity.Oid = pDataContract.GkvTransferProtokollOid;
|
||||
pEntity.Version = pDataContract.GkvTransferProtokollVersion;
|
||||
pEntity.Notice = pDataContract.Notice;
|
||||
pEntity.PruftDatum = pDataContract.PruftDatum;
|
||||
pEntity.PruftFehler = pDataContract.PruftFehler;
|
||||
pEntity.UbertragDatum = pDataContract.UbertragDatum;
|
||||
pEntity.UbertragFehler = pDataContract.UbertragFehler;
|
||||
pEntity.VerschlusseltDatum = pDataContract.VerschlusseltDatum;
|
||||
pEntity.VerschlusseltFehler = pDataContract.VerschlusseltFehler;
|
||||
|
||||
pEntity.IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
||||
pEntity.IKKrankenkasse = pDataContract.IKKrankenkasse;
|
||||
pEntity.IKLeistungserbringer = pDataContract.IKLeistungserbringer;
|
||||
pEntity.IKKostentrager = pDataContract.IKKostentrager;
|
||||
|
||||
pEntity.Rechnungsnummer = pDataContract.Rechnungsnummer;
|
||||
pEntity.Nutzdatendatei = pDataContract.Nutzdatendatei;
|
||||
pEntity.Auftragsdatei = pDataContract.Auftragsdatei;
|
||||
pEntity.Transfername = pDataContract.Transfername;
|
||||
pEntity.Transfernummer = pDataContract.Transfernummer;
|
||||
pEntity.Dateigrosse = pDataContract.Dateigrosse;
|
||||
pEntity.Datenaustauschreferenz = pDataContract.Datenaustauschreferenz;
|
||||
|
||||
pEntity.ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
pEntity.Fehlerdatum = pDataContract.Fehlerdatum;
|
||||
pEntity.Fehlerlevel = pDataContract.Fehlerlevel;
|
||||
pEntity.Fehlernachricht = pDataContract.Fehlernachricht;
|
||||
pEntity.Fehlertitel = pDataContract.Fehlertitel;
|
||||
|
||||
return pEntity;
|
||||
}
|
||||
|
||||
@@ -137,10 +137,6 @@ namespace BeWo.Service.ServiceContracts
|
||||
[OperationContract]
|
||||
void StorniereInvoiceBases(List<InvoiceBaseDC> invoices);
|
||||
|
||||
[FaultContract(typeof(BeWoFault))]
|
||||
[OperationContract]
|
||||
List<long> InsertNewGkvAbrechnungen(List<GkvAbrechnungDC> dc);
|
||||
|
||||
[FaultContract(typeof(BeWoFault))]
|
||||
[OperationContract]
|
||||
GkvAbrechnungDC GetGkvAbrechnung(long oid);
|
||||
|
||||
@@ -31,7 +31,6 @@ namespace BeWo.Service.ServiceImplementations
|
||||
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
|
||||
public class AccountingServiceImp : IAccountingService
|
||||
{
|
||||
|
||||
public void DeactivateInvoiceBases(List<InvoiceBaseDC> invoices)
|
||||
{
|
||||
try
|
||||
@@ -677,6 +676,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
}
|
||||
|
||||
#region GKV
|
||||
public GkvAbrechnungDC GetGkvAbrechnung(long oid)
|
||||
{
|
||||
try
|
||||
@@ -724,9 +724,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var dcs = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDCs(entries);
|
||||
|
||||
var updateables = dcs.Where(x => x.GetState() != 5 && x.GetState() != 1
|
||||
//&& x.GesendetAm.HasValue
|
||||
).ToArray();
|
||||
var updateables = dcs.Where(x => x.IsWaiting()).ToArray();
|
||||
|
||||
if (!updateables.Any())
|
||||
return dcs;
|
||||
@@ -748,93 +746,20 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="updateables"></param>
|
||||
/// <param name="loginName"></param>
|
||||
/// <param name="hashed_password"></param>
|
||||
/// <returns>Returns true, if the states are all up to date. False otherwise.</returns>
|
||||
private bool SendApp8GetStatusRequest(GkvAbrechnungDC[] updateables, string loginName, string hashed_password)
|
||||
{
|
||||
var updateables_len = updateables.Count();
|
||||
|
||||
var url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
|
||||
|
||||
#if DEBUG
|
||||
url = "http://localhost:3777/Host/GkvAbrechnungView.aspx";
|
||||
#endif
|
||||
|
||||
var request = new GkvApp8GetStatusRequest
|
||||
{
|
||||
Username = loginName,
|
||||
Password = hashed_password,
|
||||
Tenant = MultitenancyOperationContextExt.Current.Tenant,
|
||||
Tuples = new Tuple<GkvAbrechnungDC, long>[updateables_len]
|
||||
};
|
||||
|
||||
for (int id = 0; id < updateables_len; id++)
|
||||
{
|
||||
var gkv_abrechnung = updateables[id];
|
||||
var gkv_abrechnung_oid = gkv_abrechnung.GkvAbrechnungOid.Value;
|
||||
|
||||
request.Tuples[id] = new Tuple<GkvAbrechnungDC, long>(gkv_abrechnung, gkv_abrechnung_oid);
|
||||
}
|
||||
|
||||
var response_app8_str = SendApp8Request(url, JsonConvert.SerializeObject(request));
|
||||
|
||||
var response_app8 = JsonConvert.DeserializeObject<GkvApp8GetStatusResponse>(response_app8_str);
|
||||
|
||||
if (!response_app8.Success)
|
||||
{
|
||||
return true;
|
||||
throw new NotImplementedException("App 8 Anfrage nicht erfolgreich");
|
||||
}
|
||||
|
||||
bool allAreUpToDate = true;
|
||||
for (int id = 0; id < updateables_len; id++)
|
||||
{
|
||||
var gkv_abrechnung = updateables[id];
|
||||
var app8_tuple = response_app8.Tuples[id];
|
||||
|
||||
var app8_isUpToDate = app8_tuple.Item1;
|
||||
var app8_gkv_abrechnunng = app8_tuple.Item2;
|
||||
|
||||
if (app8_isUpToDate)
|
||||
continue;
|
||||
|
||||
allAreUpToDate = false;
|
||||
|
||||
var gkv_abrechnung_entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(gkv_abrechnung.GkvAbrechnungOid.Value);
|
||||
|
||||
var gkv_abrechnung_new_entity = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MergeWithEntity(gkv_abrechnung, gkv_abrechnung_entity);
|
||||
|
||||
DAOFactory.GenericDAO.Update(gkv_abrechnung_new_entity);
|
||||
}
|
||||
|
||||
return allAreUpToDate;
|
||||
}
|
||||
|
||||
public GkvAbrechnungResponseDC CreateNewGkvAbrechnung(GkvAbrechnungRequestDC request)
|
||||
{
|
||||
var response = new GkvAbrechnungResponseDC();
|
||||
|
||||
try
|
||||
{
|
||||
var gkv_abrechnung_dc = request.GkvAbrechnungDC;
|
||||
var gkv_abrechnung = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntity(request.GkvAbrechnungDC);
|
||||
|
||||
if(gkv_abrechnung_dc.AbrechnungsZeitraumEnde.Value.Hour == 0)
|
||||
if (gkv_abrechnung.AbrechnungsZeitraumEnde.Value.Hour == 0)
|
||||
{
|
||||
gkv_abrechnung_dc.AbrechnungsZeitraumEnde = gkv_abrechnung_dc.AbrechnungsZeitraumEnde.Value.Date.AddDays(1).AddMilliseconds(-1);
|
||||
gkv_abrechnung.AbrechnungsZeitraumEnde = gkv_abrechnung.AbrechnungsZeitraumEnde.Value.Date.AddDays(1).AddMilliseconds(-1);
|
||||
}
|
||||
|
||||
var manager = new DakotaManager();
|
||||
var mandatordc = new OperationsServiceImp().GetMandator();
|
||||
var loaded_invoicebases = new List<InvoiceBaseDC>();
|
||||
|
||||
DakotaValidator.ValidateFirstStep(mandatordc, request);
|
||||
|
||||
int? datenaustauschreferenz = null;
|
||||
decimal gesamt = 0;
|
||||
foreach (var invoicebase_oid in request.SelectedInvoiceBases)
|
||||
{
|
||||
var service = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoicebase_oid);
|
||||
@@ -844,64 +769,26 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var invoicebase_dc = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDC(invoicebase);
|
||||
|
||||
if(!datenaustauschreferenz.HasValue)
|
||||
datenaustauschreferenz = DAOFactory.SearchDAO.GetLastDatenaustauschreferenz(orga.IKDatenannahmestelle) + 1;
|
||||
|
||||
loaded_invoicebases.Add(invoicebase_dc);
|
||||
|
||||
var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service);
|
||||
var orgadc = MapperFactory.OrganisationDC_OrganisationMapper.MapToNewDC(orga);
|
||||
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
|
||||
|
||||
DakotaValidator.ValidateSecondStep(orgadc, customerdc);
|
||||
|
||||
manager.Add(servicedc, orgadc, customerdc, mandatordc, datenaustauschreferenz.Value);
|
||||
foreach (var peroid in service.ServiceInvoicePeriodList)
|
||||
{
|
||||
foreach (var invoice in peroid.InvoiceItemList)
|
||||
{
|
||||
gesamt += invoice.AmountTotal.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
manager.Apply();
|
||||
gkv_abrechnung.Betrag = gesamt;
|
||||
gkv_abrechnung.Bezahlt = false;
|
||||
|
||||
if (manager.DakotaFileDict.Count != 1 || manager.DakotaFileDict.First().Value.GetKostenträgerCount() != 1)
|
||||
{
|
||||
throw new DakotaException("Unerwartete Anzahl an Dakota Files berechnet.");
|
||||
}
|
||||
|
||||
var file_from_manager = manager.DakotaFileDict.First().Value;
|
||||
|
||||
var nutzdatendatei = file_from_manager.GetNutzdatendatei();
|
||||
|
||||
// https://dev.mysql.com/doc/refman/8.3/en/string-type-syntax.html
|
||||
// A TEXT column with a maximum length of 65,535 (2^16 − 1) characters.
|
||||
// The effective maximum length is less if the value contains multibyte
|
||||
// characters. Each TEXT value is stored using a 2-byte length prefix
|
||||
// that indicates the number of bytes in the value.
|
||||
if (nutzdatendatei.Length > 65535)
|
||||
{
|
||||
throw new DakotaException($"nutzdatendatei - Länger als 65535: {nutzdatendatei.Length}");
|
||||
}
|
||||
|
||||
gkv_abrechnung_dc.IKDatenannahmestelle = file_from_manager.GetIKDatenannahmestelle();
|
||||
gkv_abrechnung_dc.IKKostenträger = file_from_manager.GetIKKostenträger();
|
||||
gkv_abrechnung_dc.IKLeistungserbringer = file_from_manager.GetIKLeistungserbringer();
|
||||
gkv_abrechnung_dc.IKVersichertenKarte = file_from_manager.GetIKVersichertenKarte();
|
||||
|
||||
gkv_abrechnung_dc.Auftragsdatei = file_from_manager.GetAuftragsdatei();
|
||||
gkv_abrechnung_dc.Nutzdatendatei = file_from_manager.GetNutzdatendatei();
|
||||
gkv_abrechnung_dc.Transfername = file_from_manager.GetTransferName();
|
||||
gkv_abrechnung_dc.Datenaustauschreferenz = file_from_manager.GetDatenaustauschreferenz();
|
||||
gkv_abrechnung_dc.Dateigröße = nutzdatendatei.Length;
|
||||
|
||||
gkv_abrechnung_dc.ErstelltAm = file_from_manager.Created;
|
||||
gkv_abrechnung_dc.Betrag = file_from_manager.GetBetrag();
|
||||
gkv_abrechnung_dc.InvoiceBases = loaded_invoicebases;
|
||||
|
||||
var gkv_abrechnung = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntity(gkv_abrechnung_dc);
|
||||
gkv_abrechnung.ErstelltAm = DateTime.Now;
|
||||
|
||||
DAOFactory.GenericDAO.Insert(gkv_abrechnung);
|
||||
|
||||
var new_gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkv_abrechnung);
|
||||
var gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkv_abrechnung);
|
||||
|
||||
response.Success = true;
|
||||
response.GkvAbrechnungDC = new_gkv_abrechnung_dc;
|
||||
response.GkvAbrechnungDC = gkv_abrechnung_dc;
|
||||
|
||||
return response;
|
||||
}
|
||||
@@ -925,9 +812,6 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MergeWithEntity(abrechnung, entity);
|
||||
|
||||
//entity.Notice = abrechnung.Notice;
|
||||
//entity.Bezahlt = abrechnung.Bezahlt;
|
||||
|
||||
DAOFactory.GenericDAO.Update(entity);
|
||||
|
||||
return MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(entity);
|
||||
@@ -950,25 +834,6 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<long> InsertNewGkvAbrechnungen(List<GkvAbrechnungDC> dcList)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// var newGkvAbrechnungen = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntities(dcList);
|
||||
|
||||
// DAOFactory.GenericDAO.Insert(newGkvAbrechnungen);
|
||||
|
||||
// return newGkvAbrechnungen.Select(i => i.Oid.Value).ToList();
|
||||
//}
|
||||
//catch (Exception e)
|
||||
//{
|
||||
// throw Utils.CreateBeWoFaultException(e);
|
||||
//}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public GkvAbrechnungSendResponseDC SendNewGkvAbrechnung(GkvAbrechnungSendRequestDC req)
|
||||
{
|
||||
var response = new GkvAbrechnungSendResponseDC();
|
||||
@@ -982,54 +847,213 @@ namespace BeWo.Service.ServiceImplementations
|
||||
return response;
|
||||
}
|
||||
|
||||
var oid = req.GkvAbrechnungOid;
|
||||
var entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(oid);
|
||||
|
||||
var protokoll = new GkvTransferProtokoll();
|
||||
|
||||
protokoll.ErstelltAm = DateTime.Now;
|
||||
protokoll.GkvAbrechnungOid = entity.Oid.Value;
|
||||
|
||||
try
|
||||
{
|
||||
var oid = req.GkvAbrechnungDC.GkvAbrechnungOid.Value;
|
||||
var validation_success = CreateGkvTransferProtokoll(entity, protokoll);
|
||||
|
||||
string response_app8_str = SendApp8SendNewRequest(oid, user.LoginName, user.RC2EncryptedHash);
|
||||
if(!validation_success)
|
||||
{
|
||||
response.Message = "Validierung fehlgeschlagen";
|
||||
return response;
|
||||
}
|
||||
|
||||
string response_app8_str = SendApp8SendNewRequest(protokoll, user.LoginName, user.RC2EncryptedHash);
|
||||
|
||||
if (string.IsNullOrEmpty(response_app8_str))
|
||||
{
|
||||
response.Message = "App8 leere Antwort";
|
||||
return response;
|
||||
}
|
||||
throw new DakotaException("Leere Antwort", "App8");
|
||||
|
||||
var response_app8 = JsonConvert.DeserializeObject<GkvApp8SendNewResponse>(response_app8_str);
|
||||
|
||||
response.Successful = response_app8.Success;
|
||||
if (!response_app8.Success)
|
||||
throw new DakotaException(response_app8.Message, "App8 Error");
|
||||
|
||||
if (response_app8.Success)
|
||||
{
|
||||
var entity = DAOFactory.GenericDAO.GetByID<GkvAbrechnung>(req.GkvAbrechnungDC.GkvAbrechnungOid.Value);
|
||||
var app8_protokoll = response_app8.GkvTransferProtokollDC;
|
||||
|
||||
var child_dc = response_app8.GkvTransferProtokollDC;
|
||||
var child = MapperFactory.GkvTransferProtokollDC_GkvTransferprotokoll.MapToNewEntity(child_dc);
|
||||
MapperFactory.GkvTransferProtokollDC_GkvTransferprotokoll.MergeWithEntity(app8_protokoll, protokoll);
|
||||
|
||||
entity.GkvTransferProtokolle.Add(child);
|
||||
|
||||
DAOFactory.GenericDAO.Update(entity);
|
||||
|
||||
response.Message = "Erfolgreich gesendet";
|
||||
response.GkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
response.Message = response_app8.Message;
|
||||
}
|
||||
|
||||
|
||||
return response;
|
||||
response.Successful = true;
|
||||
}
|
||||
catch (DakotaException de)
|
||||
{
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Soft;
|
||||
protokoll.Fehlernachricht = de.Message;
|
||||
protokoll.Fehlertitel = de.Title ?? "Default";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw Utils.CreateBeWoFaultException(e);
|
||||
protokoll.Fehlerdatum = DateTime.Now;
|
||||
protokoll.Fehlerlevel = GkvTransferFehlerlevel.Fatal;
|
||||
protokoll.Fehlernachricht = e.ToString();
|
||||
protokoll.Fehlertitel = "Erstellung (kritisch)";
|
||||
}
|
||||
|
||||
if (entity.GkvTransferProtokolle is null)
|
||||
entity.GkvTransferProtokolle = new List<GkvTransferProtokoll>();
|
||||
|
||||
entity.GkvTransferProtokolle.Add(protokoll);
|
||||
|
||||
DAOFactory.GenericDAO.Update(entity);
|
||||
|
||||
response.TransferProtokoll = MapperFactory.GkvTransferProtokollDC_GkvTransferprotokoll.MapToNewDC(protokoll);
|
||||
|
||||
response.GkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(entity);
|
||||
|
||||
if (response.Successful)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
response.Message = $"{protokoll.Fehlertitel} - {protokoll.Fehlernachricht}";
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
private bool CreateGkvTransferProtokoll(GkvAbrechnung gkvAbrechnung, GkvTransferProtokoll protokoll)
|
||||
{
|
||||
try
|
||||
{
|
||||
var gkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkvAbrechnung);
|
||||
var datenannahmestelle = gkvAbrechnungDC.Organisation.IKDatenannahmestelle;
|
||||
|
||||
var state = GkvAbrechnung.GetState(gkvAbrechnung);
|
||||
|
||||
if (state == GkvState.Waiting || state == GkvState.OldAndNoFeedback || state == GkvState.Paid || state == GkvState.ErrorFatal)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var (datenaustauschreferenz, transfernummer) = GetNextDatenaustauschreferenzTransfernummer(gkvAbrechnung, datenannahmestelle);
|
||||
|
||||
var (dat_short, tra_short) = ClearDatenaustauschreferenzTransfernummer(datenaustauschreferenz, transfernummer);
|
||||
|
||||
protokoll.Datenaustauschreferenz = datenaustauschreferenz;
|
||||
protokoll.Transfernummer = transfernummer;
|
||||
|
||||
var manager = new DakotaManager();
|
||||
var mandatordc = new OperationsServiceImp().GetMandator();
|
||||
|
||||
DakotaValidator.ValidateFirstStep(mandatordc);
|
||||
|
||||
foreach (var invoicebase in gkvAbrechnung.InvoiceBases)
|
||||
{
|
||||
var service = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoicebase.Oid.Value);
|
||||
var orga2 = invoicebase.CostBearer2SupportConcept.CostBearer.Organisation;
|
||||
var customer = invoicebase.CostBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
var invoicebase_dc = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDC(invoicebase);
|
||||
|
||||
var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service);
|
||||
var orgadc = MapperFactory.OrganisationDC_OrganisationMapper.MapToNewDC(orga2);
|
||||
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
|
||||
|
||||
DakotaValidator.ValidateSecondStep(orgadc, customerdc);
|
||||
|
||||
manager.Add(servicedc, orgadc, customerdc, mandatordc, dat_short, tra_short);
|
||||
}
|
||||
|
||||
manager.Apply();
|
||||
|
||||
if (manager.DakotaFileDict.Count != 1 || manager.DakotaFileDict.First().Value.GetKostenträgerCount() != 1)
|
||||
{
|
||||
throw new DakotaException("Unerwartete Anzahl an Dakota Files berechnet.");
|
||||
}
|
||||
|
||||
var file_from_manager = manager.DakotaFileDict.First().Value;
|
||||
|
||||
var nutzdatendatei = file_from_manager.GetNutzdatendatei();
|
||||
|
||||
// https://dev.mysql.com/doc/refman/8.3/en/string-type-syntax.html
|
||||
// A TEXT column with a maximum length of 65,535 (2^16 − 1) characters.
|
||||
// The effective maximum length is less if the value contains multibyte
|
||||
// characters. Each TEXT value is stored using a 2-byte length prefix
|
||||
// that indicates the number of bytes in the value.
|
||||
if (nutzdatendatei.Length > 65535)
|
||||
{
|
||||
throw new DakotaException($"nutzdatendatei - Länger als 65535: {nutzdatendatei.Length}");
|
||||
}
|
||||
|
||||
protokoll.IKDatenannahmestelle = file_from_manager.GetIKDatenannahmestelle();
|
||||
protokoll.IKKostentrager = file_from_manager.GetIKKostenträger();
|
||||
protokoll.IKLeistungserbringer = file_from_manager.GetIKLeistungserbringer();
|
||||
protokoll.IKKrankenkasse = file_from_manager.GetIKVersichertenKarte();
|
||||
|
||||
protokoll.Rechnungsnummer = file_from_manager.GetRechnungsnummer();
|
||||
protokoll.Auftragsdatei = file_from_manager.GetAuftragsdatei();
|
||||
protokoll.Nutzdatendatei = nutzdatendatei;
|
||||
protokoll.Transfername = file_from_manager.GetTransferName();
|
||||
protokoll.Dateigrosse = nutzdatendatei.Length;
|
||||
|
||||
protokoll.Dateityp = "Nutzdatendatei";
|
||||
protokoll.Dateiname = protokoll.Transfername;
|
||||
|
||||
protokoll.AbsenderBezeichnung = "TestAbsBez";
|
||||
protokoll.EmpfangerBezeichnung = "TestEmpBez";
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (DakotaException de)
|
||||
{
|
||||
if (string.IsNullOrEmpty(de.Title))
|
||||
de.Title = "Protokoll Erstellung";
|
||||
|
||||
throw de;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new DakotaException(e.Message, "Erstellung");
|
||||
}
|
||||
}
|
||||
private string SendApp8SendNewRequest(long oid, string loginName, string hashed_password)
|
||||
{
|
||||
var entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(oid);
|
||||
|
||||
var gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(entity);
|
||||
private Tuple<int, int> GetNextDatenaustauschreferenzTransfernummer(GkvAbrechnung gkvAbrechnung, string datenannahmestelle)
|
||||
{
|
||||
var datenaustauschref = DAOFactory.SearchDAO.GetNextDatenaustauschreferenz(datenannahmestelle);
|
||||
int transfernummer;
|
||||
|
||||
var state = GkvAbrechnung.GetState(gkvAbrechnung);
|
||||
|
||||
if (state == GkvState.NoSend)
|
||||
{
|
||||
transfernummer = DAOFactory.SearchDAO.GetNextTransfernummer(datenannahmestelle);
|
||||
}
|
||||
else if (state == GkvState.Error)
|
||||
{
|
||||
transfernummer = gkvAbrechnung.GkvTransferProtokolle.Last().Transfernummer;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException("Versucht Datenaustauschref zu laden, invalid state", nameof(state));
|
||||
}
|
||||
|
||||
return new Tuple<int, int>(datenaustauschref, transfernummer);
|
||||
}
|
||||
|
||||
private Tuple<int, int> ClearDatenaustauschreferenzTransfernummer(int datenaustauschreferenz, int transfernummer)
|
||||
{
|
||||
int d = datenaustauschreferenz % 99999;
|
||||
int t = transfernummer % 1000;
|
||||
|
||||
if (d == 0)
|
||||
{
|
||||
d = 99999;
|
||||
}
|
||||
|
||||
return new Tuple<int, int>(d, t);
|
||||
}
|
||||
|
||||
private string SendApp8SendNewRequest(GkvTransferProtokoll protokoll, string loginName, string hashed_password)
|
||||
{
|
||||
var gkv_transfer_dc = MapperFactory.GkvTransferProtokollDC_GkvTransferprotokoll.MapToNewDC(protokoll);
|
||||
|
||||
var url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
|
||||
|
||||
@@ -1039,7 +1063,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var request_app8 = new GkvApp8SendNewRequest
|
||||
{
|
||||
GkvAbrechnung = gkv_abrechnung_dc,
|
||||
GkvTransferProtokoll = gkv_transfer_dc,
|
||||
Username = loginName,
|
||||
Password = hashed_password,
|
||||
Tenant = MultitenancyOperationContextExt.Current.Tenant
|
||||
@@ -1047,6 +1071,74 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
return SendApp8Request(url, request_app8);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="updateables"></param>
|
||||
/// <param name="loginName"></param>
|
||||
/// <param name="hashed_password"></param>
|
||||
/// <returns>Returns true, if the states are all up to date. False otherwise.</returns>
|
||||
private bool SendApp8GetStatusRequest(GkvAbrechnungDC[] updateables, string loginName, string hashed_password)
|
||||
{
|
||||
var updateables_len = updateables.Count();
|
||||
|
||||
var url = "https://app8.bewoplaner.de/service/GkvAbrechnungView.aspx";
|
||||
|
||||
#if DEBUG
|
||||
url = "http://localhost:3777/Host/GkvAbrechnungView.aspx";
|
||||
#endif
|
||||
|
||||
var request = new GkvApp8GetStatusRequest
|
||||
{
|
||||
Username = loginName,
|
||||
Password = hashed_password,
|
||||
Tenant = MultitenancyOperationContextExt.Current.Tenant,
|
||||
Oids = new long[updateables_len]
|
||||
};
|
||||
|
||||
for (int id = 0; id < updateables_len; id++)
|
||||
{
|
||||
var gkv_abrechnung = updateables[id];
|
||||
var gkv_transfer = gkv_abrechnung.TransferProtokolle.Last();
|
||||
|
||||
request.Oids[id] = gkv_transfer.GkvTransferProtokollOid.Value;
|
||||
}
|
||||
|
||||
var response_app8_str = SendApp8Request(url, JsonConvert.SerializeObject(request));
|
||||
|
||||
var response_app8 = JsonConvert.DeserializeObject<GkvApp8GetStatusResponse>(response_app8_str);
|
||||
|
||||
if (!response_app8.Success)
|
||||
{
|
||||
return true;
|
||||
throw new NotImplementedException("App 8 Anfrage nicht erfolgreich");
|
||||
}
|
||||
|
||||
bool allAreUpToDate = true;
|
||||
for (int id = 0; id < updateables_len; id++)
|
||||
{
|
||||
var gkv_abrechnung = updateables[id];
|
||||
var fehler = response_app8.Fehler[id];
|
||||
|
||||
if (fehler is null)
|
||||
continue;
|
||||
|
||||
allAreUpToDate = false;
|
||||
|
||||
var gkv_abrechnung_entity = DAOFactory.GenericDAO.LoadByID<GkvAbrechnung>(gkv_abrechnung.GkvAbrechnungOid.Value);
|
||||
|
||||
var protokoll = gkv_abrechnung_entity.GkvTransferProtokolle.First(x => x.Oid == fehler.Oid);
|
||||
|
||||
protokoll.Fehlerdatum = fehler.Datum;
|
||||
protokoll.Fehlerlevel = fehler.Level;
|
||||
protokoll.Fehlernachricht = fehler.Nachricht;
|
||||
protokoll.Fehlertitel = fehler.Titel;
|
||||
|
||||
DAOFactory.GenericDAO.Update(gkv_abrechnung_entity);
|
||||
}
|
||||
|
||||
return allAreUpToDate;
|
||||
}
|
||||
|
||||
private string SendApp8Request(string url, object request) => SendApp8Request(url, JsonConvert.SerializeObject(request));
|
||||
private string SendApp8Request(string url, string dataString)
|
||||
@@ -1063,5 +1155,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
return response_app8_str;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1235,4 +1235,21 @@ namespace BS.Shared
|
||||
GetStatus,
|
||||
GetIKNumber
|
||||
}
|
||||
|
||||
public enum GkvTransferFehlerlevel
|
||||
{
|
||||
None, // Kein Fehler
|
||||
Soft, // Kann erneut senden
|
||||
Fatal // Kann nicht erneut senden
|
||||
}
|
||||
|
||||
public enum GkvState
|
||||
{
|
||||
NoSend,
|
||||
Waiting,
|
||||
Error,
|
||||
ErrorFatal,
|
||||
Paid,
|
||||
OldAndNoFeedback
|
||||
}
|
||||
}
|
||||
@@ -17,48 +17,21 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember]
|
||||
public string Notice { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKLeistungserbringer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKVersichertenKarte { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKKostenträger { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKDatenannahmestelle { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? AbrechnungsZeitraumStart { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? AbrechnungsZeitraumEnde { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Nutzdatendatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Auftragsdatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Transfername { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Dateigröße { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Datenaustauschreferenz { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public decimal Betrag { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool Bezahlt { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IList<InvoiceBaseDC> InvoiceBases { get; set; }
|
||||
|
||||
|
||||
@@ -11,6 +11,6 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
public class GkvAbrechnungSendRequestDC : IDataContract
|
||||
{
|
||||
[DataMember]
|
||||
public GkvAbrechnungDC GkvAbrechnungDC { get; set; }
|
||||
public long GkvAbrechnungOid { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,5 +18,8 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
|
||||
[DataMember]
|
||||
public GkvAbrechnungDC GkvAbrechnungDC { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferProtokollDC TransferProtokoll { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
29
Shared/DataContracts/GkvAbrechnung/GkvApp8FehlerDC.cs
Normal file
29
Shared/DataContracts/GkvAbrechnung/GkvApp8FehlerDC.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[DataContract]
|
||||
public class GkvApp8FehlerDC
|
||||
{
|
||||
[DataMember]
|
||||
public long Oid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Titel { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? Datum { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Nachricht { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferFehlerlevel Level { get; set; }
|
||||
}
|
||||
}
|
||||
49
Shared/DataContracts/GkvAbrechnung/GkvApp8FehlerXml.cs
Normal file
49
Shared/DataContracts/GkvAbrechnung/GkvApp8FehlerXml.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
[Serializable()]
|
||||
[XmlRoot("Fehler")]
|
||||
public class GkvApp8FehlerXml
|
||||
{
|
||||
[XmlAttribute("Oid")]
|
||||
public long Oid { get; set; }
|
||||
|
||||
[XmlElement("Titel")]
|
||||
public string Titel { get; set; }
|
||||
|
||||
[XmlElement("Datum")]
|
||||
public DateTime? Datum { get; set; }
|
||||
|
||||
[XmlElement("Nachricht")]
|
||||
public string Nachricht { get; set; }
|
||||
|
||||
[XmlElement("Level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
public static GkvApp8FehlerXml Parse(XElement element)
|
||||
{
|
||||
var serializer = new XmlSerializer(typeof(GkvApp8FehlerXml));
|
||||
return (GkvApp8FehlerXml)serializer.Deserialize(element.CreateReader());
|
||||
}
|
||||
|
||||
public static GkvApp8FehlerDC ToDC(GkvApp8FehlerXml fehler)
|
||||
{
|
||||
var dc = new GkvApp8FehlerDC();
|
||||
|
||||
dc.Oid = fehler.Oid;
|
||||
dc.Titel = fehler.Titel;
|
||||
dc.Datum = fehler.Datum;
|
||||
dc.Nachricht = fehler.Nachricht;
|
||||
dc.Level = (GkvTransferFehlerlevel)fehler.Level;
|
||||
|
||||
return dc;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
public class GkvApp8GetStatusRequest : GkvApp8Request
|
||||
{
|
||||
[DataMember]
|
||||
public Tuple<GkvAbrechnungDC, long>[] Tuples { get; set; }
|
||||
public long[] Oids { get; set; }
|
||||
|
||||
public GkvApp8GetStatusRequest()
|
||||
{
|
||||
|
||||
@@ -10,6 +10,16 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
public class GkvApp8GetStatusResponse : GkvApp8Response
|
||||
{
|
||||
[DataMember]
|
||||
public Tuple<bool, GkvAbrechnungDC>[] Tuples { get; set; }
|
||||
public GkvApp8FehlerDC[] Fehler { get; set; }
|
||||
|
||||
public GkvApp8GetStatusResponse()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GkvApp8GetStatusResponse(bool success) : base(success)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,5 +15,15 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
|
||||
[DataMember]
|
||||
public string Message { get; set; }
|
||||
|
||||
public GkvApp8Response()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GkvApp8Response(bool success) : this()
|
||||
{
|
||||
Success = success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember]
|
||||
public GkvAbrechnungDC GkvAbrechnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferProtokollDC GkvTransferProtokoll { get; set; }
|
||||
|
||||
public GkvApp8SendNewRequest()
|
||||
{
|
||||
Type = GkvAbrechnungApp8RequestTypeDC.SendNew;
|
||||
|
||||
@@ -14,7 +14,12 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
|
||||
public GkvApp8SendNewResponse()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GkvApp8SendNewResponse(bool success) : this()
|
||||
{
|
||||
Success = success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,15 +17,42 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember]
|
||||
public string Notice { get; set; }
|
||||
|
||||
[DataMember]
|
||||
[DataMember]
|
||||
public long GkvAbrechnungOid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
[DataMember]
|
||||
public string AbsenderBezeichnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
[DataMember]
|
||||
public string EmpfangerBezeichnung { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKLeistungserbringer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKKrankenkasse { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKKostentrager { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string IKDatenannahmestelle { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Rechnungsnummer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Datenaustauschreferenz { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Transfernummer { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Transfername { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Dateityp { get; set; }
|
||||
|
||||
@@ -33,21 +60,24 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
public string Dateiname { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? PruftDatum { get; set; }
|
||||
public int Dateigrosse { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string PruftFehler { get; set; }
|
||||
public string Nutzdatendatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? VerschlusseltDatum { get; set; }
|
||||
public string Auftragsdatei { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string VerschlusseltFehler { get; set; }
|
||||
public string Fehlertitel { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? UbertragDatum { get; set; }
|
||||
public DateTime? Fehlerdatum { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string UbertragFehler { get; set; }
|
||||
public string Fehlernachricht { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvTransferFehlerlevel Fehlerlevel { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -9,76 +9,64 @@ namespace BS.Shared.Extensions
|
||||
{
|
||||
public static class GkvAbrechnungExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 1 - Übertragung nicht begonnen
|
||||
/// 2 - Prüfung keine Antwort
|
||||
/// 3 - Verschlüsselt keine Antwort
|
||||
/// 4 - Übertragung keine Antwort
|
||||
/// 5 - Fertig (Erfolreich oder Fehler)
|
||||
/// </summary>
|
||||
/// <param name="gkvAbrechnungDC"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetState(this GkvAbrechnungDC gkvAbrechnungDC)
|
||||
public static GkvState GetState(this GkvAbrechnungDC gkvAbrechnungDC) => GetState(
|
||||
gkvAbrechnungDC,
|
||||
() => gkvAbrechnungDC.Bezahlt,
|
||||
() => gkvAbrechnungDC.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
|
||||
public static GkvState GetState<T2>(
|
||||
object gkvAbrechnung,
|
||||
Func<bool> bezahlt,
|
||||
Func<IList<T2>> protokoll,
|
||||
Func<T2, DateTime?> fehlerdatum,
|
||||
Func<T2, GkvTransferFehlerlevel> fehlerlevel,
|
||||
Func<T2, DateTime> created)
|
||||
{
|
||||
if (gkvAbrechnungDC.TransferProtokolle == null || !gkvAbrechnungDC.TransferProtokolle.Any())
|
||||
return 1;
|
||||
if (gkvAbrechnung is null)
|
||||
throw new ArgumentNullException(nameof(gkvAbrechnung));
|
||||
|
||||
var last_protokoll = gkvAbrechnungDC.TransferProtokolle.Last();
|
||||
if (bezahlt())
|
||||
return GkvState.Paid;
|
||||
|
||||
return GetState(last_protokoll);
|
||||
var protokolle = protokoll();
|
||||
if (protokolle is null || !protokolle.Any())
|
||||
return GkvState.NoSend;
|
||||
|
||||
var last_transfer = protokolle.Last();
|
||||
if (fehlerdatum(last_transfer).HasValue)
|
||||
{
|
||||
if (fehlerlevel(last_transfer) == GkvTransferFehlerlevel.Fatal)
|
||||
return GkvState.ErrorFatal;
|
||||
else
|
||||
return GkvState.Error;
|
||||
}
|
||||
|
||||
// Kein Fehler
|
||||
|
||||
if (DateTime.Now - created(last_transfer) > TimeSpan.FromDays(28))
|
||||
{
|
||||
return GkvState.OldAndNoFeedback;
|
||||
}
|
||||
|
||||
return GkvState.Waiting;
|
||||
}
|
||||
|
||||
public static int GetState(this GkvTransferProtokollDC last_protokoll)
|
||||
{
|
||||
if (!last_protokoll.PruftDatum.HasValue)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (last_protokoll.PruftFehler != null)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (!last_protokoll.VerschlusseltDatum.HasValue)
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (last_protokoll.VerschlusseltFehler != null)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (!last_protokoll.UbertragDatum.HasValue)
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (last_protokoll.UbertragFehler != null)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
return 6;
|
||||
}
|
||||
|
||||
public static bool IsStatusComplete(this GkvAbrechnungDC gkvAbrechnungDC)
|
||||
public static bool IsWaiting(this GkvAbrechnungDC gkvAbrechnungDC)
|
||||
{
|
||||
var state = gkvAbrechnungDC.GetState();
|
||||
|
||||
return state == 5 || state == 6;
|
||||
|
||||
//gkvAbrechnungDC.VerschluesseltAm.HasValue
|
||||
//&& gkvAbrechnungDC.UebertragenAm.HasValue
|
||||
//&& gkvAbrechnungDC.AntwortErhaltenAm.HasValue
|
||||
//&& gkvAbrechnungDC.AntwortEntschluesseltAm.HasValue;
|
||||
if (state == GkvState.Waiting || state == GkvState.OldAndNoFeedback)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsSend(this GkvAbrechnungDC gkvAbrechnung)
|
||||
{
|
||||
return gkvAbrechnung.TransferProtokolle is object && gkvAbrechnung.TransferProtokolle.Any();
|
||||
}
|
||||
|
||||
public static bool IsUpToDate(this GkvAbrechnungDC gkvAbrechnungDC, GkvAbrechnungDC compareTo)
|
||||
|
||||
@@ -186,6 +186,8 @@
|
||||
<Compile Include="DataContracts\DokumentvorlageDC.cs" />
|
||||
<Compile Include="DataContracts\AdditionalServiceNoticeDC.cs" />
|
||||
<Compile Include="DataContracts\GeschenkterUrlaubstagDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8FehlerDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8FehlerXml.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8SendNewResponse.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvTransferProtokollDC.cs" />
|
||||
<Compile Include="DataContracts\GkvAbrechnung\GkvApp8GetIKRequest.cs" />
|
||||
|
||||
Reference in New Issue
Block a user