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

# Conflicts:
#	Service/Plugins/PluginLoader.cs
This commit is contained in:
Christian
2021-10-13 14:51:21 +02:00
95 changed files with 17888 additions and 662 deletions

View File

@@ -5034,15 +5034,6 @@ namespace BeWo.ServiceProxy
public interface IOperationsService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConcept", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForSupportConcept();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomer", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForCustomer();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForEmployee", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForEmployee();
@@ -5293,7 +5284,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetAllDienste", ReplyAction="http://tempuri.org/IOperationsService/GetAllDiensteResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetAllDiensteBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.DienstInfoDC> GetAllDienste();
System.Collections.Generic.List<BS.Shared.DataContracts.DienstInfoDC> GetAllDienste(System.Nullable<long> wOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetBemerkungForDienstEintrag", ReplyAction="http://tempuri.org/IOperationsService/GetBemerkungForDienstEintragResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetBemerkungForDienstEintragBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -5434,11 +5425,6 @@ namespace BeWo.ServiceProxy
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeleteCertainDienstEintragOutOfTable(long dienstEintragOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetAbsenceTimeVacationByWohnheim", ReplyAction="http://tempuri.org/IOperationsService/GetAbsenceTimeVacationByWohnheimResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetAbsenceTimeVacationByWohnheimBeWoFaultFa" +
"ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIds", ReplyAction="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetServiceRecordsByIdsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetServiceRecordsByIds(System.Collections.Generic.List<long> serviceRecordOids);
@@ -5488,6 +5474,15 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/InsertTemplateBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.DokumentvorlageDC InsertTemplate(BS.Shared.DataContracts.DokumentvorlageDC dc);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConcept", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForSupportConcept();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomer", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForCustomer();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/CreateNewChatMessagesDC", ReplyAction="http://tempuri.org/IOperationsService/CreateNewChatMessagesDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/CreateNewChatMessagesDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, bool isDeliverd, long teamid, string messageid);
@@ -6388,16 +6383,6 @@ namespace BeWo.ServiceProxy
{
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForSupportConcept()
{
return base.Channel.GetPlatzhalterForSupportConcept();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForCustomer()
{
return base.Channel.GetPlatzhalterForCustomer();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForEmployee()
{
return base.Channel.GetPlatzhalterForEmployee();
@@ -6658,9 +6643,9 @@ namespace BeWo.ServiceProxy
return base.Channel.GetSupportConceptCostBearerRelDCsByOids(supportConcept2CostbearerOids);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.DienstInfoDC> GetAllDienste()
public System.Collections.Generic.List<BS.Shared.DataContracts.DienstInfoDC> GetAllDienste(System.Nullable<long> wOid)
{
return base.Channel.GetAllDienste();
return base.Channel.GetAllDienste(wOid);
}
public string GetBemerkungForDienstEintrag(long empId, long wohnId, int zeile, System.DateTime date)
@@ -6818,11 +6803,6 @@ namespace BeWo.ServiceProxy
base.Channel.DeleteCertainDienstEintragOutOfTable(dienstEintragOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month)
{
return base.Channel.GetAbsenceTimeVacationByWohnheim(wohnId, year, month);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetServiceRecordsByIds(System.Collections.Generic.List<long> serviceRecordOids)
{
return base.Channel.GetServiceRecordsByIds(serviceRecordOids);
@@ -6873,6 +6853,16 @@ namespace BeWo.ServiceProxy
return base.Channel.InsertTemplate(dc);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForSupportConcept()
{
return base.Channel.GetPlatzhalterForSupportConcept();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForCustomer()
{
return base.Channel.GetPlatzhalterForCustomer();
}
public BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, bool isDeliverd, long teamid, string messageid)
{
return base.Channel.CreateNewChatMessagesDC(senderOid, empfängerOid, message, isDeliverd, teamid, messageid);

View File

@@ -33,7 +33,7 @@ namespace BeWo.View.Controls
if (c != null && info != null)
{
if(info.StatusInformation == null)
if (info.StatusInformation == null)
{
var dc = info.DienstInfoDC;
@@ -43,7 +43,7 @@ namespace BeWo.View.Controls
c.Path_Notice.Visibility = info.MarkierungBenoetigt ? Visibility.Visible : Visibility.Collapsed;
c.Border = new Thickness(0, 0, Convert.ToDouble(right), Convert.ToDouble(bottom));
if (!info.IsInContractRange)
{
c.Background = Brushes.Gray;
@@ -51,11 +51,27 @@ namespace BeWo.View.Controls
c.Text = string.Empty;
c.ToolTip = "Kein gültiger Arbeitsvertrag";
}
else if (info.Reason != null && !info.IsFeiertag /*&& info.DayOfWeek != DayOfWeek.Saturday && info.DayOfWeek != DayOfWeek.Sunday*/)
else if (info.AbsenceTime != null && info.Feiertag == null)
{
string additionToTooltip = "";
var start = info.AbsenceTime.Start.Value;
var end = info.AbsenceTime.End.Value;
var startArray = start.ToString().Split(' ');
var endArray = end.ToString().Split(' ');
if (start.Date == end.Date)
{
if (start.TimeOfDay == end.TimeOfDay)
additionToTooltip = " (ganzer Tag)";
else
additionToTooltip = " (halber Tag)";
}
else
additionToTooltip = string.Format(" ({0} - {1})", startArray[0], endArray[0]);
c.Foreground = Brushes.Red;
c.Text = $"{info.Reason.Description[0]}";
c.ToolTip = $"{info.Reason.Description}";
c.Text = $"{info.AbsenceTime.Reason.Description[0]}";
c.ToolTip = $"{info.AbsenceTime.Reason.Description}" + additionToTooltip;
if (info.DayOfWeek == DayOfWeek.Saturday || info.DayOfWeek == DayOfWeek.Sunday)
c.Background = new SolidColorBrush(ColorExtensions.FromHexString("EFEFEF"));
@@ -63,14 +79,19 @@ namespace BeWo.View.Controls
c.Background = Brushes.White;
}
else if (dc != null)
else if (info.OverTime != null)
{
var bg = string.IsNullOrEmpty(dc.Farbe) ? Brushes.White : (SolidColorBrush)new BrushConverter().ConvertFrom(dc.Farbe);
var grey = 0.2989 * bg.Color.R + 0.5870 * bg.Color.G + 0.1140 * bg.Color.B;
c.Foreground = Brushes.Red;
c.Text = "ÜS";
c.ToolTip = (dc == null) ? string.Format("Überstunden:\t{0:0.00}\nAuszahlung:\t{1}\nBemerkung:\t{2}",
info.OverTime.Betrag, info.OverTime.Auszahlungsart.Name, info.OverTime.Notice) : null;
c.Background = bg;
c.Foreground = grey < 70 ? Brushes.White : Brushes.Black;
c.ToolTip = new DPCtrlDienstTooltip(dc, info.Bemerkung, info.Zeiten);
if (info.DayOfWeek == DayOfWeek.Saturday || info.DayOfWeek == DayOfWeek.Sunday)
c.Background = new SolidColorBrush(ColorExtensions.FromHexString("EFEFEF"));
else if (dc != null)
c.Background = (SolidColorBrush)new BrushConverter().ConvertFrom(dc.Farbe);
else
c.Background = Brushes.White;
}
else
{
@@ -87,11 +108,20 @@ namespace BeWo.View.Controls
c.BorderThickness = new Thickness(0, 0, 0, 0);
c.BorderBrush = Brushes.Transparent;
}
var bg = string.IsNullOrEmpty(dc.Farbe) ? Brushes.White : (SolidColorBrush)new BrushConverter().ConvertFrom(dc.Farbe);
var grey = 0.2989 * bg.Color.R + 0.5870 * bg.Color.G + 0.1140 * bg.Color.B;
c.Background = bg;
if (info.OverTime == null && info.AbsenceTime == null)
c.Foreground = grey < 70 ? Brushes.White : Brushes.Black;
else
c.Foreground = Brushes.Red;
c.ToolTip = new DPCtrlDienstTooltip(dc, info.Bemerkung, info.Zeiten, info.OverTime, info.AbsenceTime);
}
else
{
if (info.MarkierungBenoetigt)
Debug.WriteLine("Funktioniert falsch");
c.Path_Notice.Visibility = Visibility.Collapsed;
c.BorderThickness = new Thickness(0, 0, 0, 0);
c.BorderBrush = Brushes.Transparent;
@@ -127,10 +157,10 @@ namespace BeWo.View.Controls
}
}
if (info.IsFeiertag)
if (info.Feiertag != null)
{
c.Background = Brushes.LightPink;
c.ToolTip = "Gesetzl. Feiertag";
c.ToolTip = info.Feiertag.Name + " (gesetzl. Feiertag)";
}
}
}));
@@ -185,7 +215,8 @@ namespace BeWo.View.Controls
public class DPCtrlDayInformation
{
public DienstInfoDC DienstInfoDC { get; set; }
public AbsenceReasonDC Reason { get; set; }
public AbsenceTimeDC AbsenceTime { get; set; }
public OvertimeDC OverTime { get; set; }
public bool IsInContractRange { get; set; }
public bool IsLastRow { get; set; }
public bool IsLastColumn { get; set; }
@@ -193,7 +224,7 @@ namespace BeWo.View.Controls
public StatusInformation StatusInformation { get; set; }
public string Bemerkung { get; set; }
public string[] Zeiten { get; set; }
public bool IsFeiertag { get; set; }
public FeiertagDC Feiertag { get; set; }
public bool MarkierungBenoetigt { get; set; }
}

View File

@@ -13,13 +13,20 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Dienst:"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Start:"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Pausendauer:"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Ende:"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Bemerkung:"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Pausendauer:"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Bemerkung:"/>
<TextBlock x:Name="lblUeberstunden" Grid.Row="8" Grid.Column="0" Text="Überstunden:" Visibility="Collapsed" />
<TextBlock x:Name="lblAuszahlungsart" Grid.Row="9" Grid.Column="0" Text="Auszahlung:" Visibility="Collapsed" />
<TextBlock x:Name="lblUrlaub" Grid.Row="11" Grid.Column="0" Text="Urlaub:" Visibility="Collapsed" />
<Separator Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3"/>
@@ -28,10 +35,15 @@
<TextBlock Grid.Row="4" Grid.Column="2" x:Name="TxtPausendauer"/>
<TextBlock Grid.Row="3" Grid.Column="2" x:Name="TxtEnde"/>
<TextBlock Grid.Row="6" Grid.Column="2" x:Name="TxtBemerkung" MaxWidth="275" TextWrapping="Wrap"/>
<TextBlock Grid.Row="8" Grid.Column="2" x:Name="TxtUeberstunden" Visibility="Collapsed" />
<TextBlock Grid.Row="9" Grid.Column="2" x:Name="TxtAuszahlungsart" Visibility="Collapsed" />
<TextBlock Grid.Row="11" Grid.Column="2" x:Name="TxtUrlaub" Visibility="Collapsed" />
<Separator Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="3"/>
</Grid>
<Separator Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="3"/>
<Separator x:Name="sepUeberstunden" Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="3" Visibility="Collapsed"/>
<Separator x:Name="sepUrlaub" Grid.Row="10" Grid.Column="0" Grid.ColumnSpan="3" Visibility="Collapsed"/>
</Grid>
</UserControl>

View File

@@ -16,7 +16,7 @@ namespace BeWo.View.Controls
/// </summary>
public partial class DPCtrlDienstTooltip : UserControl
{
public DPCtrlDienstTooltip(DienstInfoDC dienst, string bemerkung, string[] zeiten)
public DPCtrlDienstTooltip(DienstInfoDC dienst, string bemerkung, string[] zeiten, OvertimeDC overtime, AbsenceTimeDC absence)
{
InitializeComponent();
@@ -27,6 +27,42 @@ namespace BeWo.View.Controls
TxtStart.Text = zeiten[0];
TxtStart.Foreground = dienst.Start.ToString("HH:mm").Equals(zeiten[0]) ? TxtDienst.Foreground : Brushes.CornflowerBlue;
TxtBemerkung.Text = bemerkung;
if (overtime != null)
{
TxtUeberstunden.Text = string.Format("{0:0.00}", overtime.Betrag);
TxtAuszahlungsart.Text = overtime.Auszahlungsart.Name;
TxtUeberstunden.Visibility = Visibility.Visible;
TxtAuszahlungsart.Visibility = Visibility.Visible;
lblUeberstunden.Visibility = Visibility.Visible;
lblAuszahlungsart.Visibility = Visibility.Visible;
sepUeberstunden.Visibility = Visibility.Visible;
}
if (absence != null)
{
string tooltipString = "";
var start = absence.Start.Value;
var end = absence.End.Value;
var startArray = start.ToString().Split(' ');
var endArray = end.ToString().Split(' ');
if (start.Date == end.Date)
{
if (start.TimeOfDay == end.TimeOfDay)
tooltipString = "ganzer Tag";
else
tooltipString = "halber Tag";
}
else
tooltipString = string.Format("{0} - {1}", startArray[0], endArray[0]);
TxtUrlaub.Text = tooltipString;
lblUrlaub.Visibility = Visibility.Visible;
TxtUrlaub.Visibility = Visibility.Visible;
sepUrlaub.Visibility = Visibility.Visible;
}
}
}
}

View File

@@ -54,7 +54,7 @@ namespace BeWo.View.Controls
if(information.Row == 0 && !information.Statuszeile)
{
ctrl.Text = string.Format("{0:0}", information.SummeTage);
ctrl.Text = string.Format("{0:0.00}", information.SummeTage);
ctrl.ToolTip = "Abwesenheiten an Wochenend- und Feiertagen werden nicht mitgezählt.";
}
}

View File

@@ -1,15 +1,26 @@
<UserControl x:Class="BeWo.View.Controls.DienstplanerControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Border x:Name="boLight" IsHitTestVisible="True" Background="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderThickness="0 0 1 1" BorderBrush="#FFBFBFBF" />
<Border x:Name="bo" IsHitTestVisible="True" Background="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderThickness="0 0 0 0" BorderBrush="#FF000000" />
<Border x:Name="bo" IsHitTestVisible="True" Background="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderThickness="0 0 0 0" BorderBrush="#FF000000" >
<Rectangle x:Name="Path_Notice" Visibility="Collapsed" Fill="Black" Margin="15,-50,-8,-15" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-45"/>
<TranslateTransform/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
</Border>
<TextBlock Name="txt" FontSize="15" Margin="3" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Path
<!--<Path
x:Name="Path_Notice"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="DarkOrange"
Fill="Black"
Data="M 22,1 L 27,1 L 27,5" Margin="21.031,0,0.804,20.416" Stretch="Fill" Width="6" Height="6"
Visibility="Collapsed"
/>
/>-->
</Grid>
</UserControl>

View File

@@ -46,6 +46,7 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
@@ -67,6 +68,8 @@
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
<ComboBox x:Name="_WohnheimeCombobox" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Column="5" Height="23" Margin="3" ItemsSource="{Binding Path=AllWohnheime, Mode=OneWay}" Width="200">
</ComboBox>
</Grid>
<!--Zweite Zeile-->
<Grid Grid.Column="0" Grid.Row="1">
@@ -131,7 +134,19 @@
</dxg:GridColumn.DisplayTemplate>
<dxg:GridColumn.EditTemplate>
<ControlTemplate>
<Button x:Name="Part_Editor" BorderThickness="0" Style="{x:Null}" Background="{Binding EditValue}" Foreground="{Binding EditValue}" Height="21" HorizontalAlignment="Stretch" Click="Part_Editor_Click"></Button>
<Button x:Name="Part_Editor" BorderThickness="0" Style="{x:Null}" Background="{Binding EditValue}" Foreground="{Binding EditValue}" Height="21" HorizontalAlignment="Stretch" Click="Part_Editor_Click" />
</ControlTemplate>
</dxg:GridColumn.EditTemplate>
</dxg:GridColumn>
<dxg:GridColumn x:Name="_ColumnWohnheim" FieldName="Wohnheim" Header="Wohnheim" Width="100">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<Label Content="{Binding Value}" />
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
<dxg:GridColumn.EditTemplate>
<ControlTemplate>
<Button x:Name="Button_WohnheimPicker" BorderThickness="0" Style="{x:Null}" Height="21" HorizontalAlignment="Stretch" Click="Button_WohnheimPicker_Click" />
</ControlTemplate>
</dxg:GridColumn.EditTemplate>
</dxg:GridColumn>
@@ -155,6 +170,10 @@
</ListBox.ItemContainerStyle>
</ListBox>
</Popup>
<Popup x:Name="_PopupWohnheimPicker" StaysOpen="false" Placement="MousePoint" Width="200">
<ComboBox x:Name="_Combobox_Wohnheimpicker" BorderThickness="0" Loaded="Listbox_Wohnheimpicker_Loaded" SelectionChanged="Combobox_Wohnheimpicker_SelectionChanged" Height="20"/>
</Popup>
</Grid>
</GroupBox>
</localView:BeWoView>

View File

@@ -16,16 +16,20 @@ using DevExpress.Xpf.Editors.Settings;
using DevExpress.Xpf.Grid;
using System.Windows.Controls;
using System.Windows.Media;
using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Editors;
namespace BeWo.View.Detail
{
public partial class DienstView : BeWoView
{
private DienstInfoListVM _ViewModel;
private List<CompactWohnheimDC> WohnheimListe;
public DienstView(DienstInfoListVM listVM)
{
InitializeComponent();
WohnheimListe = ServiceFacade.DoCustomerServiceSync(x => x.GetAllActiveWohnheimeCompact());
_FarbeComboBox.ItemTemplateSelector = new ComboBoxTemplateSelector(_FarbeComboBox);
ViewModel = listVM;
}
@@ -84,6 +88,9 @@ namespace BeWo.View.Detail
{
if (ViewModel.NewVM.StartDT.Year != 2000)
ViewModel.NewVM.StartDT = new DateTime(2000, 1, 1, ViewModel.NewVM.StartDT.Hour, ViewModel.NewVM.StartDT.Minute, ViewModel.NewVM.StartDT.Second);
var wh = _WohnheimeCombobox.SelectedItem as CompactWohnheimDC;
if (wh.WohnheimOid != -1)
ViewModel.NewVM.Wohnheim = ServiceFacade.DoCustomerServiceSync(s => s.LoadWohnheim(wh.WohnheimOid));
ViewModel.AddNewVMToList();
}
}
@@ -133,5 +140,73 @@ namespace BeWo.View.Detail
_PopupColorPicker.IsOpen = false;
}
}
private void Listbox_Wohnheimpicker_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).ItemsSource = ViewModel.AllWohnheime;
}
private void Button_WohnheimPicker_Click(object sender, RoutedEventArgs e)
{
var itemssource = _Combobox_Wohnheimpicker.ItemsSource as List<CompactWohnheimDC>;
_PopupWohnheimPicker.IsOpen = true;
_Combobox_Wohnheimpicker.IsDropDownOpen = true;
var dienst = GetSelectedDienst();
if (dienst != null)
{
foreach (var item in itemssource)
{
if (dienst.Wohnheim != null)
{
if (item.WohnheimOid == dienst.Wohnheim.WohnheimOid.Value)
{
_Combobox_Wohnheimpicker.SelectedItem = item;
break;
}
}
else
_Combobox_Wohnheimpicker.SelectedItem = null;
}
}
}
private void Combobox_Wohnheimpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var selection = _Combobox_Wohnheimpicker.SelectedItem as CompactWohnheimDC;
if (selection != null)
{
var vm = GetSelectedDienst();
if (vm != null)
{
if (selection.WohnheimOid != -1)
{
var dc = ServiceFacade.DoCustomerServiceSync(s => s.LoadWohnheim(selection.WohnheimOid));
vm.Wohnheim = dc;
}
else
vm.Wohnheim = null;
}
}
_PopupWohnheimPicker.IsOpen = false;
}
private DienstInfoVM GetSelectedDienst()
{
DienstInfoVM vm = null;
DataViewBase view = _GridControl.View;
RowData data = view.FocusedRowData;
if (data != null && data.RowHandle != null)
{
int rowHandle = data.RowHandle.Value;
vm = _GridControl.GetRow(rowHandle) as DienstInfoVM;
}
return vm;
}
}
}

View File

@@ -39,6 +39,8 @@ namespace BeWo.View.Detail.Report
private GridColumn _ColumnKrankheit;
private Dictionary<long, List<AbsenceTimeDC>> _AbsenceTimesDict;
private Dictionary<long, List<OvertimeDC>> _OverTimesDict;
private CompactWohnheimDC _AuswahlWohnheim;
private DienstZeileDC _AuswahlDienstZeileDC;
private DateTime _AuswahlMonat;
@@ -93,28 +95,68 @@ namespace BeWo.View.Detail.Report
#region Loading
private void InitGridControl(bool includeRoot)
{
if(includeRoot)
if (includeRoot)
ServiceFacade.DoOperationsServiceAsync(s => s.BuildDienstplanerRootObject(_AuswahlMonat, _AuswahlWohnheim.WohnheimOid), CallbackFunktion);
else
InitRefresh();
#region outdated
//if(includeRoot)
//{
// // Daten für den Plan erstellen
// _DienstplanerRootObj = ServiceFacade.DoOperationsServiceSync(s => s.BuildDienstplanerRootObject(_AuswahlMonat, _AuswahlWohnheim.WohnheimOid));
// // Erste Zeile für den Status erstellen
// _DienstplanerRootObj.DienstZeilenListe = new List<DienstZeileDC>();
// _DienstplanerRootObj.DienstZeilenListe.Add(InitStatusZeile(RefreshGrid, AuswahlMonat));
// // Wenn es regelmäßige Dienste gibt, werden diese hinzugefügt
// foreach (var rd in _DienstplanerRootObj.RegelmaessigeDienste)
// AddRegelmaessigeDiensteToDienstplaner(rd);
//}
//// Zeilen für jeden Mitarbeiter erstellen
//RefreshDienste();
//// Spalten erstellen
//BuildGridControlColumnDays(AuswahlMonat.Year, AuswahlMonat.Month, 1);
//RefreshGrid();
//ShowGrid();
#endregion
}
private void CallbackFunktion(DienstplanerRootDC root)
{
this.Dispatch(() =>
{
// Daten für den Plan erstellen
_DienstplanerRootObj = ServiceFacade.DoOperationsServiceSync(s => s.BuildDienstplanerRootObject(_AuswahlMonat, _AuswahlWohnheim.WohnheimOid));
_DienstplanerRootObj = root;
// Erste Zeile für den Status erstellen
_DienstplanerRootObj.DienstZeilenListe = new List<DienstZeileDC>();
_DienstplanerRootObj.DienstZeilenListe.Add(InitStatusZeile(RefreshGrid, AuswahlMonat));
_DienstplanerRootObj.DienstZeilenListe = new List<DienstZeileDC>();
_DienstplanerRootObj.DienstZeilenListe.Add(InitStatusZeile(RefreshGrid, AuswahlMonat));
// Wenn es regelmäßige Dienste gibt, werden diese hinzugefügt
foreach (var rd in _DienstplanerRootObj.RegelmaessigeDienste)
AddRegelmaessigeDiensteToDienstplaner(rd);
}
InitRefresh();
});
}
private void InitRefresh()
{
// Zeilen für jeden Mitarbeiter erstellen
RefreshDienste();
// Spalten erstellen
RefreshDienste();
// Spalten erstellen
BuildGridControlColumnDays(AuswahlMonat.Year, AuswahlMonat.Month, 1);
RefreshGrid();
ShowGrid();
}
// Buttons zum Bearbeiten des Dienstplans freischalten
button_mehrereDienste.Visibility = Visibility.Visible;
button_neuerMitarbeiter.Visibility = Visibility.Visible;
_BtnRemoveAllDiensteForMonth.Visibility = Visibility.Visible;
textblock_link_pdfexport.Visibility = Visibility.Visible;
}
private void RefreshGrid()
{
var days = DateTime.DaysInMonth(_AuswahlMonat.Year, _AuswahlMonat.Month);
@@ -383,8 +425,8 @@ namespace BeWo.View.Detail.Report
_ColumnSaldo = NewGridColumnUnbound("Saldo", "saldo", "SA:", 55, 40, DevExpress.Data.UnboundColumnType.Object, saldoControlTemplate, DevExpress.Utils.DefaultBoolean.True);
_ColumnUrlaub = NewGridColumnUnbound("U", "urlaub", "UR:", 28, 28, DevExpress.Data.UnboundColumnType.Object, urlaubKrankheitControlTemplate, DevExpress.Utils.DefaultBoolean.True);
_ColumnKrankheit = NewGridColumnUnbound("K", "krank", "KR:", 28, 28, DevExpress.Data.UnboundColumnType.Object, urlaubKrankheitControlTemplate, DevExpress.Utils.DefaultBoolean.True);
_ColumnUrlaub = NewGridColumnUnbound("U", "urlaub", "UR:", 50, 40, DevExpress.Data.UnboundColumnType.Object, urlaubKrankheitControlTemplate, DevExpress.Utils.DefaultBoolean.True);
_ColumnKrankheit = NewGridColumnUnbound("K", "krank", "KR:", 50, 40, DevExpress.Data.UnboundColumnType.Object, urlaubKrankheitControlTemplate, DevExpress.Utils.DefaultBoolean.True);
_ColumnDays = new List<GridColumn>();
@@ -456,12 +498,6 @@ namespace BeWo.View.Detail.Report
// InitGridControl holt alle Daten vom Server
InitGridControl(true);
// Buttons zum Bearbeiten des Dienstplans freischalten
button_mehrereDienste.Visibility = Visibility.Visible;
button_neuerMitarbeiter.Visibility = Visibility.Visible;
_BtnRemoveAllDiensteForMonth.Visibility = Visibility.Visible;
textblock_link_pdfexport.Visibility = Visibility.Visible;
}
// PopUp zum Auswählen eines neuen Mitarbeiters als Vertretung öffnen
@@ -473,6 +509,7 @@ namespace BeWo.View.Detail.Report
combobox_mitarbeiter.ItemsSource = mitarbeiterMitVertrag.OrderBy(m => m.LastName);
}
// Mitarbeiter für das obige PopUp raussuchen
private List<EmployeeDC> GetEmployeeForCombobox()
{
@@ -584,6 +621,12 @@ namespace BeWo.View.Detail.Report
var mitarbeiter = combobox_mehrereDienste_mitarbeiter.SelectedItem as EmployeeDC;
var auswahlKalender = _CalenderControl.SelectedDates;
if (mitarbeiter == null)
{
MessageBox.Show("Bitte wählen Sie einen Mitarbeiter aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
foreach (var datum in auswahlKalender)
{
var start = new DateTime(2000, 1, 1, Convert.ToInt32(startString[0]), Convert.ToInt32(startString[1]), 0);
@@ -593,7 +636,8 @@ namespace BeWo.View.Detail.Report
InsertEintragOderVertretung(mehrereDienste_textbox_startzeit.Text, mehrereDienste_textbox_endzeit.Text, dauerInStunden, mitarbeiter,
datum, dienst, 0, null);
}
popUp_mehrereDienste.IsOpen = false;
}
private void InsertEintragOderVertretung(string start, string ende, double dauerInStunden, EmployeeDC mitarbeiter, DateTime datum, DienstInfoDC dienst, int zeile, string notice)
@@ -611,7 +655,7 @@ namespace BeWo.View.Detail.Report
{
stundenFuerSaldo += Convert.ToDecimal(eintrag.DauerInStunden);
var oldDienst = TryGetDienst(_AuswahlDienstZeileDC, datum.Day); //abc
//var oldDienst = TryGetDienst(_AuswahlDienstZeileDC, datum.Day); //abc
ServiceFacade.DoOperationsServiceSync(x => x.DeleteDienstEintrag(mitarbeiter.EmployeeOid.Value, AuswahlWohnheim.WohnheimOid, zeile, datum));
if (datum.Month == _AuswahlMonat.Month)
{
@@ -624,6 +668,20 @@ namespace BeWo.View.Detail.Report
textbox_bemerkung.Text = "";
popUp_RightClick.IsOpen = false;
RefreshStatusForDay(datum.Day);
// Prüfen, ob Dienst an einem Abwesenheitstag entfernt wurde und wenn ja, Ist und Saldo nicht anpassen
if (!EintragAnGanzemAbwesenheitstag(eintrag, null))
{
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
{
item.Ist -= Convert.ToDecimal(eintrag.DauerInStunden);
item.Saldo -= Convert.ToDecimal(eintrag.DauerInStunden);
}
}
}
return;
}
@@ -644,12 +702,17 @@ namespace BeWo.View.Detail.Report
if (datum.Month == _AuswahlMonat.Month)
{
_DienstplanerRootObj.AlleDienstEintraege.Add(newEintrag);
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
// Prüfen, ob Dienst an einem Abwesenheitstag eingefügt wurde und wenn ja, Ist und Saldo nicht anpassen
if (!EintragAnGanzemAbwesenheitstag(newEintrag, null))
{
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
item.Ist += Convert.ToDecimal(newEintrag.DauerInStunden);
item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newEintrag.DauerInStunden) : Convert.ToDecimal(newEintrag.DauerInStunden) - stundenFuerSaldo;
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
{
item.Ist += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newEintrag.DauerInStunden) : Convert.ToDecimal(newEintrag.DauerInStunden) - stundenFuerSaldo;
item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newEintrag.DauerInStunden) : Convert.ToDecimal(newEintrag.DauerInStunden) - stundenFuerSaldo;
}
}
}
}
@@ -678,6 +741,20 @@ namespace BeWo.View.Detail.Report
textbox_bemerkung.Text = "";
popUp_RightClick.IsOpen = false;
RefreshStatusForDay(datum.Day);
// Prüfen, ob Dienst an einem Abwesenheitstag entfernt wurde und wenn ja, Ist und Saldo nicht anpassen
if (!EintragAnGanzemAbwesenheitstag(null, vertretung))
{
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
{
item.Ist -= Convert.ToDecimal(vertretung.DauerInStunden);
item.Saldo -= Convert.ToDecimal(vertretung.DauerInStunden);
}
}
}
return;
}
var newVertretung = new DienstvertretungDC
@@ -697,12 +774,16 @@ namespace BeWo.View.Detail.Report
if (datum.Month == _AuswahlMonat.Month)
{
_DienstplanerRootObj.AlleDienstvertretungen.Add(newVertretung);
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
if (!EintragAnGanzemAbwesenheitstag(null, newVertretung))
{
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
item.Ist += Convert.ToDecimal(newVertretung.DauerInStunden);
item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newVertretung.DauerInStunden) : Convert.ToDecimal(newVertretung.DauerInStunden) - stundenFuerSaldo;
if (item.Employee.EmployeeOid == mitarbeiter.EmployeeOid)
{
item.Ist += Convert.ToDecimal(newVertretung.DauerInStunden);
item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newVertretung.DauerInStunden) : Convert.ToDecimal(newVertretung.DauerInStunden) - stundenFuerSaldo;
}
}
}
}
@@ -715,6 +796,35 @@ namespace BeWo.View.Detail.Report
RefreshGrid();
}
// Prüfung, ob der Eintrag an einem Tag mit ganztägiger Abwesenheit gemacht / geändert wurde
private bool EintragAnGanzemAbwesenheitstag(DienstEintragDC eintrag, DienstvertretungDC vertretung)
{
bool b = false;
DateTime datum = eintrag != null ? eintrag.Datum : vertretung.Datum;
foreach (var abs in _DienstplanerRootObj.AbsenceTimes)
{
var start = abs.Start.Value;
var ende = abs.End;
if (ende != null)
{
if (abs.AbsenceSpan.ContainsDate(datum.Date))
{
if (start.Date == ende.Value.Date)
{
if (start.TimeOfDay == ende.Value.TimeOfDay)
b = true;
}
else
b = true;
}
}
}
return b;
}
// Methode, die bei Klick auf eine der Zellen aufgerufen wird (DPCtrlDay oder DPCtrlEmployee)
public void DienstplanerControl_MouseDown(object sender, MouseEventArgs e)
{
@@ -775,20 +885,29 @@ namespace BeWo.View.Detail.Report
_AuswahlTag = int.Parse(fieldname[1]);
#region Möglichkeit, Dienste an Feier-, Krankheits- und Urlaubstagen einzutragen, erlauben oder verbieten
////Dienste an Feiertagen setzen können deaktivieren
//var date = new DateTime(_AuswahlMonat.Year, _AuswahlMonat.Month, _AuswahlTag);
//foreach (var tag in _DienstplanerRootObj.Feiertage)
//{
// if (tag.Datum.Date == date)
// return;
//}
//Dienste an Feiertagen setzen können deaktivieren
var date = new DateTime(_AuswahlMonat.Year, _AuswahlMonat.Month, _AuswahlTag);
foreach (var tag in _DienstplanerRootObj.Feiertage)
{
if (tag.Datum.Date == date)
return;
}
//Dienste an Abwesenheitstagen setzen können deaktivieren
//var date = new DateTime(_AuswahlMonat.Year, _AuswahlMonat.Month, _AuswahlTag);
//foreach (var at in _DienstplanerRootObj.AbsenceTimes)
//{
// if (at.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid && at.AbsenceSpan.ContainsDate(date))
// return;
// {
// if (at.End.HasValue)
// {
// if (at.Start.Value.Date == at.End.Value.Date && at.Start.Value.TimeOfDay == at.End.Value.TimeOfDay)
// return;
// if (at.Start.Value.Date != at.End.Value.Date)
// return;
// }
// else
// return;
// }
//}
#endregion
@@ -943,110 +1062,6 @@ namespace BeWo.View.Detail.Report
InsertEintragOderVertretung(textbox_startzeit.Text, textbox_endzeit.Text, dauerInStunden, _AuswahlDienstZeileDC.Employee, Pointer,
(DienstInfoDC)combobox_dienste.SelectedItem, _AuswahlDienstZeileDC.Zeile, textbox_bemerkung.Text);
//// Wenn es ein Dienst für einen Mitarbeiter des Wohnheims ist
//if (_AuswahlWohnheim.EmployeeOids.Contains(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value))
//{
// decimal stundenFuerSaldo = 0.0m;
// // Prüfung, ob es für den Tag einen Eintrag gibt
// var eintrag = GetDienstEintrag(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
// _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
// // Wenn ein Eintrag da ist, den alten löschen
// if (eintrag != null)
// {
// stundenFuerSaldo += Convert.ToDecimal(eintrag.DauerInStunden);
// var oldDienst = TryGetDienst(_AuswahlDienstZeileDC, _AuswahlTag); //abc
// ServiceFacade.DoOperationsServiceSync(x => x.DeleteDienstEintrag(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value, AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer));
// _AuswahlDienstZeileDC.RemoveDienst(_AuswahlTag);
// DeleteFromList(eintrag, null);
// }
// // Wenn der Platzhalter gewählt ist, Status updaten und Methode beenden
// if ((long)((DienstInfoDC)combobox_dienste.SelectedItem).Oid == -1)
// {
// textbox_bemerkung.Text = "";
// popUp_RightClick.IsOpen = false;
// RefreshStatusForDay(Pointer.Day);
// return;
// }
// // Neuen Dienst einfügen und Ist/Soll updaten
// var newEintrag = new DienstEintragDC
// {
// Datum = Pointer,
// DienstOid = (long)((DienstInfoDC)combobox_dienste.SelectedItem).Oid,
// EmployeeOid = _AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
// Oid = null,
// WohnheimOid = AuswahlWohnheim.WohnheimOid,
// Zeile = _AuswahlDienstZeileDC.Zeile,
// Notice = textbox_bemerkung.Text,
// Startzeit = textbox_startzeit.Text,
// Endzeit = textbox_endzeit.Text,
// DauerInStunden = dauerInStunden
// };
// ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstEintrag(newEintrag));
// _DienstplanerRootObj.AlleDienstEintraege.Add(newEintrag); //Root
// foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
// {
// if (item.Employee.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid)
// {
// item.Ist += Convert.ToDecimal(newEintrag.DauerInStunden);
// item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newEintrag.DauerInStunden) : Convert.ToDecimal(newEintrag.DauerInStunden) - stundenFuerSaldo;
// }
// }
//}
//// Wenn es ein Dienst für eine Vertretung ist
//else
//{
// var vertretung = GetDienstvertretung(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
// _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
// decimal stundenFuerSaldo = 0.0m;
// // Wenn ein Eintrag da ist, den alten löschen
// if (vertretung != null)
// {
// stundenFuerSaldo += Convert.ToDecimal(vertretung.DauerInStunden);
// var oldDienst = TryGetDienst(_AuswahlDienstZeileDC, _AuswahlTag); //abc
// ServiceFacade.DoOperationsServiceSync(x => x.DeleteDienstvertretung(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value, AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer));
// _AuswahlDienstZeileDC.RemoveDienst(_AuswahlTag);
// DeleteFromList(null, vertretung);
// }
// // Wenn der Platzhalter gewählt ist, Status updaten und Methode beenden
// if ((long)((DienstInfoDC)combobox_dienste.SelectedItem).Oid == -1)
// {
// textbox_bemerkung.Text = "";
// popUp_RightClick.IsOpen = false;
// RefreshStatusForDay(Pointer.Day);
// return;
// }
// // Neue Vertretung einfügen und Ist/Soll updaten
// var newVertretung = new DienstvertretungDC
// {
// Datum = Pointer,
// DienstOid = (long)((DienstInfoDC)combobox_dienste.SelectedItem).Oid,
// EmployeeOid = _AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
// Oid = null,
// WohnheimOid = AuswahlWohnheim.WohnheimOid,
// Zeile = _AuswahlDienstZeileDC.Zeile,
// Notice = textbox_bemerkung.Text,
// Startzeit = textbox_startzeit.Text,
// Endzeit = textbox_endzeit.Text,
// DauerInStunden = dauerInStunden
// };
// ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstvertretung(newVertretung));
// _DienstplanerRootObj.AlleDienstvertretungen.Add(newVertretung);
// foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
// {
// if (item.Employee.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid)
// {
// item.Ist += Convert.ToDecimal(newVertretung.DauerInStunden);
// item.Saldo += (stundenFuerSaldo == 0.0m) ? Convert.ToDecimal(newVertretung.DauerInStunden) : Convert.ToDecimal(newVertretung.DauerInStunden) - stundenFuerSaldo;
// }
// }
//}
// Eintrag zur Zeile hinzufügen
//_AuswahlDienstZeileDC.AddDienst(_AuswahlTag, combobox_dienste.SelectedItem as DienstInfoDC);
//RefreshStatusForDay(Pointer.Day);
@@ -1131,21 +1146,46 @@ namespace BeWo.View.Detail.Report
var date = _AuswahlMonat.AddDays(pos - 1);
// Auf Feiertag überprüfen
bool isFeiertag = false;
FeiertagDC ft = null;
foreach (var feiertag in _DienstplanerRootObj.Feiertage)
{
if (feiertag.Datum.Date == date)
{
isFeiertag = true;
ft = feiertag;
break;
}
}
// Bei Abwesenheit den Grund als Variable setzen
AbsenceReasonDC reason = null;
AbsenceTimeDC absTimeForDay = null;
if (_AbsenceTimesDict.ContainsKey(selZeile.Employee.EmployeeOid.Value))
reason = _AbsenceTimesDict[selZeile.Employee.EmployeeOid.Value].FirstOrDefault(x =>
x.Start <= date && (!x.End.HasValue || x.End >= date))?.Reason;
absTimeForDay = _AbsenceTimesDict[selZeile.Employee.EmployeeOid.Value].FirstOrDefault(x =>
x.Start.Value.Date <= date.Date && (!x.End.HasValue || x.End.Value.Date >= date.Date));
#region testzwecke, kann eig weg
//if (date.Day==11)
// Console.WriteLine("STOP");
//if (_AbsenceTimesDict.ContainsKey(selZeile.Employee.EmployeeOid.Value))
//{
// foreach (var item in _AbsenceTimesDict[selZeile.Employee.EmployeeOid.Value])
// {
// if (item.Start.Value.Date <= date.Date && (!item.End.HasValue || item.End.Value.Date >= date.Date))
// {
// absTimeForDay = item;
// }
// }
//}
#endregion
// Bei Überstunden diese als Variable setzen
OvertimeDC overtime = null;
if (_OverTimesDict.ContainsKey(selZeile.Employee.EmployeeOid.Value))
overtime = _OverTimesDict[selZeile.Employee.EmployeeOid.Value].FirstOrDefault(x =>
x.Date == date);
string[] zeiten = new string[2];
string bemerkung = "";
@@ -1189,11 +1229,12 @@ namespace BeWo.View.Detail.Report
DayOfWeek = date.DayOfWeek,
IsLastColumn = pos == DateTime.DaysInMonth(AuswahlMonat.Year, AuswahlMonat.Month),
IsInContractRange = GetContract(selZeile, pos) != null, //abc
Reason = reason,
AbsenceTime = absTimeForDay,
OverTime = overtime,
StatusInformation = null,
Bemerkung = bemerkung,
Zeiten = zeiten,
IsFeiertag = isFeiertag,
Feiertag = ft,
MarkierungBenoetigt = feldMarkieren
};
}
@@ -1223,7 +1264,7 @@ namespace BeWo.View.Detail.Report
DayOfWeek = date.DayOfWeek,
IsLastColumn = pos == DateTime.DaysInMonth(AuswahlMonat.Year, AuswahlMonat.Month),
BesetzungsStatus = dauerhaftBesetzt,
StatusInfoString = CheckForDoppelbelegung(date) ? "Achtung: Ein Dienst wurde doppelt geplant." : "",
StatusInfoString = CheckForDoppelbelegung(date),
ColorFalse = _DienstplanerRootObj.StatusColorFalse,
ColorTrue = _DienstplanerRootObj.StatusColorTrue
},
@@ -1241,9 +1282,13 @@ namespace BeWo.View.Detail.Report
{
var eintraegeFuerMitarbeiter = selZeile.Zeile == 0 ? _DienstplanerRootObj.AlleDienstEintraege.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList() : null;
var vertretungenFuerMitarbeiter = selZeile.Zeile == 0 ? _DienstplanerRootObj.AlleDienstvertretungen.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList() : null;
var ueberstunden = selZeile.Zeile == 0 ? _DienstplanerRootObj.OverTimes.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList() : null;
var urlaubKrankheit = selZeile.Zeile == 0 ? _DienstplanerRootObj.AbsenceTimes.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList() : null;
var eintraegeEinerWoche = eintraegeFuerMitarbeiter != null ? GetEintraegeEinerWoche(eintraegeFuerMitarbeiter, pos) : null;
var vertretungenEinerWoche = vertretungenFuerMitarbeiter != null ? GetVertretungenEinerWoche(vertretungenFuerMitarbeiter, pos) : null;
var ueberstundenEinerWoche = ueberstunden != null ? GetUeberstundenEinerWoche(ueberstunden, pos) : null;
var abwesenheitenEinerWoche = urlaubKrankheit != null ? GetAbwesenheitenEinerWoche(urlaubKrankheit, pos, eintraegeEinerWoche, vertretungenEinerWoche) : null;
// Für entweder Vertretung oder normale Einträge Stunden der Woche summieren
List<double> stundenWoche = new List<double>();
@@ -1257,6 +1302,14 @@ namespace BeWo.View.Detail.Report
foreach (var vertretung in vertretungenEinerWoche)
stundenWoche.Add(vertretung.DauerInStunden);
}
if (ueberstundenEinerWoche != null)
{
foreach (var overtime in ueberstundenEinerWoche)
stundenWoche.Add(Convert.ToDouble(overtime.Betrag));
}
if (abwesenheitenEinerWoche != null)
stundenWoche.AddRange(abwesenheitenEinerWoche);
e.Value = new DPCtrlWeekInformation
{
Hours = stundenWoche,
@@ -1320,27 +1373,28 @@ namespace BeWo.View.Detail.Report
case "IS":
if (selZeile.StatusListe == null)
{
#region outdated Ist-Berechnung
// Stunden für Einträge/Vertretungen aufaddieren
var eintraegeFuerMitarbeiterMonat = _DienstplanerRootObj.AlleDienstEintraege.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList();
var vertretungenFuerMitarbeiterMonat = _DienstplanerRootObj.AlleDienstvertretungen.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList();
//var eintraegeFuerMitarbeiterMonat = _DienstplanerRootObj.AlleDienstEintraege.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList();
//var vertretungenFuerMitarbeiterMonat = _DienstplanerRootObj.AlleDienstvertretungen.FindAll(x => x.EmployeeOid == selZeile.Employee.EmployeeOid).ToList();
decimal stunden = 0;
if (eintraegeFuerMitarbeiterMonat != null)
{
foreach (var eintrag in eintraegeFuerMitarbeiterMonat)
stunden += Convert.ToDecimal(eintrag.DauerInStunden);
}
if (vertretungenFuerMitarbeiterMonat != null)
{
foreach (var vertretung in vertretungenFuerMitarbeiterMonat)
stunden += Convert.ToDecimal(vertretung.DauerInStunden);
}
//if (eintraegeFuerMitarbeiterMonat != null)
//{
// foreach (var eintrag in eintraegeFuerMitarbeiterMonat)
// stunden += Convert.ToDecimal(eintrag.DauerInStunden);
//}
//if (vertretungenFuerMitarbeiterMonat != null)
//{
// foreach (var vertretung in vertretungenFuerMitarbeiterMonat)
// stunden += Convert.ToDecimal(vertretung.DauerInStunden);
//}
#endregion
e.Value = new DPCtrlIstInformation
{
Row = selZeile.Zeile,
Statuszeile = selZeile.DienstDict == null,
IstWert = stunden,
IstWert = summary.Ist,
IsLastRow = isLastRow
};
}
@@ -1360,20 +1414,24 @@ namespace BeWo.View.Detail.Report
// Saldo setzen, wenn es nicht die Statuszeile ist
if (selZeile.StatusListe == null)
{
DienstplanerMonthlySummaryDC summaryForSaldo = new DienstplanerMonthlySummaryDC();
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
if (selZeile.Employee.EmployeeOid == item.Employee.EmployeeOid)
{
summaryForSaldo = item;
break;
}
}
#region outdated Saldo-Berechnung
//DienstplanerMonthlySummaryDC summaryForSaldo = new DienstplanerMonthlySummaryDC();
//foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
//{
// if (selZeile.Employee.EmployeeOid == item.Employee.EmployeeOid)
// {
// summaryForSaldo = item;
// var temp = summary;
// break;
// }
//}
#endregion
e.Value = new DPCtrlSaldoInformation
{
Row = selZeile.Zeile,
Statuszeile = selZeile.DienstDict == null,
SaldoWert = summaryForSaldo.Saldo,
SaldoWert = summary.Saldo,
IsLastRow = isLastRow
};
}
@@ -1436,9 +1494,9 @@ namespace BeWo.View.Detail.Report
}
// Prüft für Einträge und Vertretungen, ob an einem Tag der gleiche Dienst 2 mal gesetzt wurde
private bool CheckForDoppelbelegung(DateTime date)
private string CheckForDoppelbelegung(DateTime date)
{
bool doppelbelegung = false;
string infoString = "";
var dienstOids = new List<long>();
@@ -1449,28 +1507,41 @@ namespace BeWo.View.Detail.Report
{
if (dienstOids.Contains(eintrag.DienstOid))
{
doppelbelegung = true;
infoString = string.Format("Achtung: Am {0:dd.MM.} wurde ein Dienst doppelt geplant.", date.Date);
break;
}
else
dienstOids.Add(eintrag.DienstOid);
}
}
foreach (var vertretung in _DienstplanerRootObj.AlleDienstvertretungen)
if (infoString.IsNullOrEmpty())
{
if (vertretung.Datum.Date == date.Date)
foreach (var vertretung in _DienstplanerRootObj.AlleDienstvertretungen)
{
if (dienstOids.Contains(vertretung.DienstOid))
if (vertretung.Datum.Date == date.Date)
{
doppelbelegung = true;
break;
if (dienstOids.Contains(vertretung.DienstOid))
{
infoString += string.Format("Achtung: Am {0:dd.MM.} wurde ein Dienst doppelt geplant.", date.Date);
break;
}
else
dienstOids.Add(vertretung.DienstOid);
}
else
dienstOids.Add(vertretung.DienstOid);
}
}
return doppelbelegung;
foreach (var employee in _DienstplanerRootObj.AllEmployee)
{
var temp = _DienstplanerRootObj.AlleDienstEintraege.Where(e => e.EmployeeOid == employee.EmployeeOid && e.Datum == date).ToList();
if (temp.Count > 1)
infoString += string.Format(infoString.IsNullOrEmpty() ? "Achtung: 2 Dienste für {0} am {1:dd.MM.}" : "\nAchtung: 2 Dienste für {0} am {1:dd.MM.}",
employee.LastNameFirstName, date);
}
return infoString;
}
// Die Einträge einer bestimmten Woche rausfiltern (für case "WE")
@@ -1499,6 +1570,87 @@ namespace BeWo.View.Detail.Report
return res;
}
private List<OvertimeDC> GetUeberstundenEinerWoche(List<OvertimeDC> liste, int sonntag)
{
List<OvertimeDC> res = new List<OvertimeDC>();
foreach (var overtime in liste)
{
if (overtime.Date.Value.Day <= sonntag && sonntag - overtime.Date.Value.Day < 7)
res.Add(overtime);
}
return res;
}
// Abwesenheiten auswerten, also nur die einer Woche zurückgeben
private List<double> GetAbwesenheitenEinerWoche(List<AbsenceTimeDC> liste, int sonntag, List<DienstEintragDC> eintraegeDerWoche, List<DienstvertretungDC> vertretungenDerWoche)
{
List<double> res = new List<double>();
var year = (int)_YearPicker.SelectedItem;
List<DateTime> tage = new List<DateTime>();
foreach (var entry in liste)
{
var start = entry.Start.Value.Month == _AuswahlMonat.Month ? entry.Start : new DateTime(year, _AuswahlMonat.Month, 1);
var end = entry.End.HasValue ? entry.End : new DateTime(year, _AuswahlMonat.Month,
DateTime.DaysInMonth(year, _AuswahlMonat.Month));
if (end.Value.Month != start.Value.Month)
end = new DateTime(year, _AuswahlMonat.Month, DateTime.DaysInMonth(year, _AuswahlMonat.Month));
for (int i = start.Value.Day; i <= end.Value.Day; i++)
{
if (i <= sonntag && sonntag - i < 7)
{
if (start.Value.Date == end.Value.Date && start.Value.TimeOfDay != end.Value.TimeOfDay)
tage.Add(start.Value);
else
tage.Add(new DateTime(year, _AuswahlMonat.Month, i));
}
}
}
if (tage.Count > 0)
{
// Halbe Tage extra rechnen und dann entfernen
var halbeTage = tage.FindAll(t => t.TimeOfDay.Hours != 0).ToList();
tage.RemoveRange(halbeTage);
// Wochenend- und Feiertage entfernen
var wochenendeFeiertage = tage.FindAll(t => t.Date.DayOfWeek == DayOfWeek.Saturday || t.Date.DayOfWeek == DayOfWeek.Sunday ||
(_DienstplanerRootObj.Feiertage.FindAll(f => f.Datum.Date == t.Date)).Count > 0);
tage.RemoveRange(wochenendeFeiertage);
// Einträge und Vertretungen von Wochen- und Monats-Ist abziehen, wenn an diesem Tag eine ganztägige Abwesnheit ist ABCDEF
if (eintraegeDerWoche != null)
{
foreach (var e in eintraegeDerWoche)
{
if (tage.Contains(e.Datum))
{
res.Add(e.DauerInStunden * -1); // Abzug von Wochen-Ist
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
// .First(z => z.Employee.EmployeeOid == e.EmployeeOid).Ist -= Convert.ToDecimal(e.DauerInStunden);
}
}
}
if (vertretungenDerWoche != null)
{
foreach (var v in vertretungenDerWoche)
{
if (tage.Contains(v.Datum))
{
res.Add(v.DauerInStunden * -1); // Abzug von Wochen-Ist
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
// .First(z => z.Employee.EmployeeOid == v.EmployeeOid).Ist -= Convert.ToDecimal(v.DauerInStunden);
}
}
}
res.Add(Convert.ToDouble(_DienstplanerRootObj.StundenBeiAbwesenheit[liste[0].EmployeeOid] * halbeTage.Count / 2));
res.Add(Convert.ToDouble(_DienstplanerRootObj.StundenBeiAbwesenheit[liste[0].EmployeeOid] * tage.Count));
}
return res;
}
//Event, was bei Klick auf "Drucken" ausgelöst wird
private void LinkPdfExport_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
@@ -1524,18 +1676,28 @@ namespace BeWo.View.Detail.Report
.SelectMany(x => Init(x, _DienstplanerRootObj.AlleDienste, RefreshGrid, AuswahlMonat))
.ToList());
var temp = new Dictionary<long, List<AbsenceTimeDC>>();
var absenceTemp = new Dictionary<long, List<AbsenceTimeDC>>();
var overtimeTemp = new Dictionary<long, List<OvertimeDC>>();
// Abwesenheiten in ein Dictionary speichern
foreach (var abs in _DienstplanerRootObj.AbsenceTimes)
{
if (!temp.ContainsKey(abs.EmployeeOid.Value))
temp.Add(abs.EmployeeOid.Value, new List<AbsenceTimeDC>());
if (!absenceTemp.ContainsKey(abs.EmployeeOid.Value))
absenceTemp.Add(abs.EmployeeOid.Value, new List<AbsenceTimeDC>());
temp[abs.EmployeeOid.Value].Add(abs);
absenceTemp[abs.EmployeeOid.Value].Add(abs);
}
_AbsenceTimesDict = absenceTemp;
_AbsenceTimesDict = temp;
// Überstunden in ein Dictionary speichern
foreach (var ot in _DienstplanerRootObj.OverTimes)
{
if (!overtimeTemp.ContainsKey(ot.EmployeeOid.Value))
overtimeTemp.Add(ot.EmployeeOid.Value, new List<OvertimeDC>());
overtimeTemp[ot.EmployeeOid.Value].Add(ot);
}
_OverTimesDict = overtimeTemp;
}
// Abhängig von Version URL zum Drucken generieren
@@ -1984,11 +2146,19 @@ namespace BeWo.View.Detail.Report
{
var res = new List<DienstZeileDC>();
int maxRows = 0;
for (int i = 0; i < eintragDC.DienstDictArray.Length; i++)
{
if (eintragDC.DienstDictArray[i].Count > 0)
maxRows = i;
}
for (int i = 0; i < eintragDC.DienstDictArray.Length; i++)
{
var zeileDC = eintragDC.DienstDictArray[i];
if (zeileDC.Count > 0 || i == 0) //Nur eine Zeile
// In if eine Bedingung einfügen, dass so lange Zeilen generiert werden, bis der (zeilen-technisch) letzte Eintrag zu sehen ist
if (zeileDC.Count > 0 || i <= maxRows) //Nur eine Zeile
{
var newDic = new Dictionary<int, DienstInfoDC>();

View File

@@ -23,6 +23,7 @@ namespace BeWo.ViewModel
private DateTime _StartDT;
private DateTime _EndeDT;
private int _Pause;
private WohnheimDC _Wohnheim;
public DienstInfoVM(DienstInfoDC dienstDC) : base(dienstDC, dienstDC.Oid == null)
{ }
@@ -187,6 +188,19 @@ namespace BeWo.ViewModel
}
}
}
public WohnheimDC Wohnheim
{
get { return _Wohnheim; }
set
{
if (AreDifferent(_Wohnheim, value))
{
_Wohnheim = value;
StoreDirtyInformation(AreDifferent(DataContract.Wohnheim, value), nameof(_Wohnheim));
FirePropertyChanged(nameof(_Wohnheim));
}
}
}
protected override void InitByDataContract(DienstInfoDC bDataContract)
{
@@ -198,6 +212,7 @@ namespace BeWo.ViewModel
_StartDT = bDataContract.Start;
_EndeDT = bDataContract.Ende;
_Pause = bDataContract.Pause;
_Wohnheim = bDataContract.Wohnheim;
if (!string.IsNullOrEmpty(bDataContract.Farbe))
{
@@ -216,6 +231,7 @@ namespace BeWo.ViewModel
bDataContract.Pause = _Pause;
bDataContract.Start = _StartDT;
bDataContract.Ende = _EndeDT;
bDataContract.Wohnheim = _Wohnheim;
return bDataContract;
}

View File

@@ -3,9 +3,11 @@ using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Windows.Media;
using BeWo.ServiceProxy;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using Color = System.Drawing.Color;
namespace BeWo.ViewModel.ListViewModel
@@ -21,11 +23,33 @@ namespace BeWo.ViewModel.ListViewModel
get
{
var lTemp = typeof(Color).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Static).Select(pi => (Color)pi.GetGetMethod().Invoke(null, null)).ToList();
for (int i = lTemp.Count - 1; i >= 0; i--)
{
var o = lTemp[i];
if (o.Name.ToLower().Contains("black"))
lTemp.Remove(o);
else if (o.Name.ToLower().Contains("red"))
lTemp.Remove(o);
}
lTemp.Sort((x, y) => x.GetBrightness().CompareTo(y.GetBrightness()));
return lTemp.Select(c => new SolidColorBrush(System.Windows.Media.Color.FromArgb(c.A, c.R, c.G, c.B))).ToList();
}
}
public List<CompactWohnheimDC> AllWohnheime
{
get
{
var liste = new List<CompactWohnheimDC>();
liste.Add(new CompactWohnheimDC
{
WohnheimOid = -1,
WohnheimName = ""
});
liste.AddRange(ServiceFacade.DoCustomerServiceSync(x => x.GetAllActiveWohnheimeCompact()));
return liste.OrderBy(l => l.WohnheimName).ToList();
}
}
}
}

View File

@@ -468,7 +468,7 @@ namespace BeWo.ViewModel
public static void CreateDienstListVMAsync(Action<DienstInfoListVM> pCallBack)
{
ServiceFacade.DoOperationsServiceAsync(s => s.GetAllDienste(),
ServiceFacade.DoOperationsServiceAsync(s => s.GetAllDienste(null),
r => pCallBack(new DienstInfoListVM(r.ToList())));
}

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.1209
# Visual Studio Version 16
VisualStudioVersion = 16.0.31424.327
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
EndProject
@@ -664,6 +664,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarlSonnenscheinHaus", "Rep
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SozialwerkAachenerChristen", "ReportImp\SozialwerkAachenerChristen\SozialwerkAachenerChristen.csproj", "{47A029F9-D420-48D2-BFE3-CB4988346366}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebensWert", "ReportImp\LebensWert\LebensWert.csproj", "{09BA6418-1FC2-4B45-8CE0-BB9C24499442}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PZDDuesseldorf", "ReportImp\PZDDuesseldorf\PZDDuesseldorf.csproj", "{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -8015,6 +8019,54 @@ Global
{47A029F9-D420-48D2-BFE3-CB4988346366}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{47A029F9-D420-48D2-BFE3-CB4988346366}.Release|x86.ActiveCfg = Release|Any CPU
{47A029F9-D420-48D2-BFE3-CB4988346366}.Release|x86.Build.0 = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|.NET.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|.NET.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|x86.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Debug|x86.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.DebugRemote|x86.Build.0 = Debug|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|.NET.ActiveCfg = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|.NET.Build.0 = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|Any CPU.Build.0 = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|x86.ActiveCfg = Release|Any CPU
{09BA6418-1FC2-4B45-8CE0-BB9C24499442}.Release|x86.Build.0 = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|.NET.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|.NET.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Debug|x86.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.DebugRemote|x86.Build.0 = Debug|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|.NET.ActiveCfg = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|.NET.Build.0 = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|Any CPU.Build.0 = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|x86.ActiveCfg = Release|Any CPU
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -8345,6 +8397,8 @@ Global
{BE015430-F83C-4CAB-902A-5D1962697715} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{2CE355CA-0227-4536-B097-C672FCEF4BAA} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{47A029F9-D420-48D2-BFE3-CB4988346366} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{09BA6418-1FC2-4B45-8CE0-BB9C24499442} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -1110,7 +1110,8 @@ namespace BeWo.Data.Access
return criteria.List<AbsenceTime>().ToList();
}
public IEnumerable<AbsenceTime> FindAbsenceTimesForEmployee(DateTime startDate, DateTime endDate, long empOid)
public IEnumerable<AbsenceTime> FindAbsenceTimesForEmployee
(DateTime startDate, DateTime endDate, long empOid)
{
var criteria = CreateCriteriaIsActive<AbsenceTime>()
.Add(Restrictions.Eq("EmployeeOid", empOid))
@@ -4602,5 +4603,13 @@ namespace BeWo.Data.Access
return result;
}
public IList<DienstInfo> FindDiensteForWohnheim(long? whOid)
{
var criteria = CreateCriteriaIsActive<DienstInfo>()
.Add(Restrictions.Or(Restrictions.Eq("Wohnheim", whOid), Restrictions.IsNull("Wohnheim")));
return criteria.List<DienstInfo>();
}
}
}

View File

@@ -16,6 +16,7 @@ namespace BeWo.Data.Entities
private DateTime _Start;
private DateTime _Ende;
private int _Pause;
private long? _Wohnheim;
public DienstInfo()
{
@@ -111,5 +112,19 @@ namespace BeWo.Data.Entities
}
}
}
public virtual long? Wohnheim
{
get
{
return _Wohnheim;
}
set
{
if (AreDifferent(_Wohnheim, value))
{
_Wohnheim = value;
}
}
}
}
}

View File

@@ -13,7 +13,7 @@ namespace BeWo.Data.ICF
{
public static class ICFDAO
{
private static readonly XDocument _File;
private static XDocument _File;
private static readonly XElement _Root;
static ICFDAO()
@@ -27,7 +27,8 @@ namespace BeWo.Data.ICF
file = "icf.xml";
}
file = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, @"bin\ICF\" + file);
_File = XDocument.Load(file);
//file = @"D:\Projects\beyondSoft\BeWoPlaner\BeWo\Data\ICF";
_File = XDocument.Load(file); // Hier entsteht ein error
//_File = XDocument.Load(@"D:\Projects\BeWoPlaner\BeWo\Data\ICF\icf.xml");
Debug.WriteLine("Dokument geladen");
@@ -42,7 +43,8 @@ namespace BeWo.Data.ICF
public static IList<ValueListEntryDC> GetIcf()
{
if (_Root == null) return null;
if (_Root == null)
return null;
long id = 1;

View File

@@ -21,5 +21,6 @@
<property column="Start" type="DateTime" name="Start" />
<property column="Ende" type="DateTime" name="Ende" />
<property column="Pause" type="int" name="Pause" />
<property column="Wohnheim" type="Int64" name="Wohnheim" />
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,2 @@
ALTER TABLE `bewodemo`.`dienstinfo`
ADD COLUMN `Wohnheim` BIGINT NULL AFTER `Pause`;

View File

@@ -1034,7 +1034,7 @@ namespace BeWo.Report
//report.SetReportDataSource(RosterRO.Create(service.GetDienstEintraege(wOid, dt.Year, dt.Month), service.GetAllDienste(), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month));
report.SetReportDataSource(RosterRO.CreateNew(dienstEintraege, vertretungen, employee,
service.GetAllDienste(), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month, feiertage));
service.GetAllDienste(wOid), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month, feiertage));
return report as XtraReport;
}
@@ -1066,9 +1066,35 @@ namespace BeWo.Report
List<AbsenceTimeDC> absences = employeeService.GetMultipleEmployeeAbsenceTimesForMonth(dt.Year, dt.Month, employeeOids);
List<FeiertagDC> feiertageDCs = opertionsService.ErstelleDefaultFeiertage(dt.Year).Where(f => f.Datum.Month == dt.Month).ToList();
Dictionary<long?, decimal> stundenBeiAbwesenheit = new Dictionary<long?, decimal>();
foreach (var emp in employee)
{
ContractDC currentContract = null;
foreach (var c in emp.Contracts)
{
if (!c.ContractEndDate.HasValue)
{
if (dt >= c.EntryDate)
{
currentContract = c;
break;
}
}
else
{
if (dt >= c.EntryDate && dt <= c.ContractEndDate)
{
currentContract = c;
break;
}
}
}
if (currentContract != null)
stundenBeiAbwesenheit.Add(emp.EmployeeOid, currentContract.WeeklyTotalHours.Value / currentContract.WeeklyDays);
}
report.SetReportDataSource(RosterIstRO.Create(dienstEintraege, vertretungen, employee, opertionsService.GetAllDienste(),
customerService.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month, feiertageDCs, absences));
report.SetReportDataSource(RosterIstRO.Create(dienstEintraege, vertretungen, employee, opertionsService.GetAllDienste(wOid),
customerService.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month, feiertageDCs, absences, stundenBeiAbwesenheit));
return report as XtraReport;
}

View File

@@ -32,8 +32,6 @@ namespace BeWo.Report.DefaultReports
this.components = new System.ComponentModel.Container();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel_Time = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel_Image = new DevExpress.XtraReports.UI.XRLabel();
this.lblCustomerName = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
@@ -46,6 +44,8 @@ namespace BeWo.Report.DefaultReports
this.approvedText = new DevExpress.XtraReports.UI.CalculatedField();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrLabel_Time = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel_Image = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
@@ -67,36 +67,6 @@ namespace BeWo.Report.DefaultReports
this.ReportHeader.HeightF = 223.9583F;
this.ReportHeader.Name = "ReportHeader";
//
// xrLabel_Time
//
this.xrLabel_Time.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel_Time.LocationFloat = new DevExpress.Utils.PointFloat(37F, 73.23335F);
this.xrLabel_Time.Multiline = true;
this.xrLabel_Time.Name = "xrLabel_Time";
this.xrLabel_Time.SizeF = new System.Drawing.SizeF(124.36F, 25F);
this.xrLabel_Time.StylePriority.UseFont = false;
this.xrLabel_Time.StylePriority.UseTextAlignment = false;
this.xrLabel_Time.Text = "\r\n";
this.xrLabel_Time.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel_Image
//
this.xrLabel_Image.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel_Image.BorderWidth = 0.25F;
this.xrLabel_Image.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel_Image.LocationFloat = new DevExpress.Utils.PointFloat(0F, 73.22919F);
this.xrLabel_Image.Multiline = true;
this.xrLabel_Image.Name = "xrLabel_Image";
this.xrLabel_Image.SizeF = new System.Drawing.SizeF(25F, 25F);
this.xrLabel_Image.StylePriority.UseBorders = false;
this.xrLabel_Image.StylePriority.UseBorderWidth = false;
this.xrLabel_Image.StylePriority.UseFont = false;
this.xrLabel_Image.StylePriority.UseTextAlignment = false;
this.xrLabel_Image.Text = "\r\n";
this.xrLabel_Image.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// lblCustomerName
//
this.lblCustomerName.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
@@ -189,6 +159,38 @@ namespace BeWo.Report.DefaultReports
this.bottomMarginBand1.HeightF = 20F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// xrLabel_Time
//
this.xrLabel_Time.Font = new System.Drawing.Font("Arial", 8F);
this.xrLabel_Time.LocationFloat = new DevExpress.Utils.PointFloat(30.75F, 73.23338F);
this.xrLabel_Time.Multiline = true;
this.xrLabel_Time.Name = "xrLabel_Time";
this.xrLabel_Time.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 0, 0, 0, 100F);
this.xrLabel_Time.SizeF = new System.Drawing.SizeF(124.36F, 19.99581F);
this.xrLabel_Time.StylePriority.UseFont = false;
this.xrLabel_Time.StylePriority.UsePadding = false;
this.xrLabel_Time.StylePriority.UseTextAlignment = false;
this.xrLabel_Time.Text = "\r\n";
this.xrLabel_Time.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel_Image
//
this.xrLabel_Image.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel_Image.BorderWidth = 0.25F;
this.xrLabel_Image.Font = new System.Drawing.Font("Arial", 8F);
this.xrLabel_Image.LocationFloat = new DevExpress.Utils.PointFloat(0F, 73.22919F);
this.xrLabel_Image.Multiline = true;
this.xrLabel_Image.Name = "xrLabel_Image";
this.xrLabel_Image.SizeF = new System.Drawing.SizeF(20F, 20F);
this.xrLabel_Image.StylePriority.UseBorders = false;
this.xrLabel_Image.StylePriority.UseBorderWidth = false;
this.xrLabel_Image.StylePriority.UseFont = false;
this.xrLabel_Image.StylePriority.UseTextAlignment = false;
this.xrLabel_Image.Text = "\r\n";
this.xrLabel_Image.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.RosterRO);

View File

@@ -119,7 +119,8 @@ namespace BeWo.Report.DefaultReports
TextAlignment = xrLabel_Time.TextAlignment,
WidthF = xrLabel_Time.WidthF,
HeightF = xrLabel_Time.HeightF,
Text = AdaptTime(d.Start.TimeOfDay, d.Ende.TimeOfDay)
Text = AdaptTime(d.Start.TimeOfDay, d.Ende.TimeOfDay),
Padding = xrLabel_Time.Padding
});
elem++;

View File

@@ -337,7 +337,9 @@ namespace BeWo.Report.ReportObjects
flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat);
berichtsAnfang = berichtsEnde;
berichtsAnfang = berichtsEnde;
berichtsEnde = monatsEnde;
c = GetNextValidContractForDate(berichtsAnfang, emp);
@@ -399,12 +401,21 @@ namespace BeWo.Report.ReportObjects
decimal alteExtraUeberstunden = 0;
BerechneUeberstundenBis(empDetail, groupFilteredRecords, ro.ReportStartDate, out ueberstundenVormonat,
out alteExtraUeberstunden);
out alteExtraUeberstunden); // ABCDEF statt alle SR alle Diensteinträge abarbeiten
var alleDiensteintraege = DAOFactory.GenericDAO.GetAllActive<DienstEintrag>().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
var alleDienstvertretungen = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>().Where(d => d.EmployeeOid == empDetail.Employee.Oid).ToList();
decimal? ueberstundenVormonatFuerDienstplanung;
decimal? alteExtraUeberstundenDienstplanung;
//empDetail.DienstplanIst += BerechneDienstplanIst(empDetail, alleDiensteintraege, alleDienstvertretungen, ro.ReportStartDate,
// out ueberstundenVormonatFuerDienstplanung, out alteExtraUeberstundenDienstplanung); // ABCDEF
var dienstplanIstAlsStunden = empDetail.DienstplanIst / 60;
decimal extraStunden = 0;
BerechneExtraUeberstunden(emp, monatsAnfang, monatsEnde, out extraStunden);
BerechneExtraUeberstunden(emp, monatsAnfang, monatsEnde, out extraStunden); // OverTimes
if (ShouldCreateDayDetails())
{
@@ -434,7 +445,224 @@ namespace BeWo.Report.ReportObjects
ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList);
}
protected virtual void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
#region Ist-Berechnung für Dienstplanung
public decimal BerechneDienstplanIst(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, List<DienstEintrag> eintraege, List<Dienstvertretung> vertretungen, DateTime monat, out decimal? ueberstunden, out decimal? alteExtraUeberstunden) // ABCDEF
{
ueberstunden = null;
alteExtraUeberstunden = 0;
decimal dpIst = 0;
MitarbeiterstundenkontoRO.EmployeeDetail edTotal = new MitarbeiterstundenkontoRO.EmployeeDetail();
Employee emp = empDetail.Employee;
Contract c = emp.FirstContract;
// Der Einfachheit halber: Vertretungen in Einträge umwandeln
eintraege.AddRange(VertretungenUmwandeln(vertretungen.ToList()));
if (c != null)
{
Dictionary<string, List<DienstEintrag>> eintragDict = CreateDiensteintragDictByDate(eintraege);
DateTime start = c.EntryDate.HasValue ? c.EntryDate.Value : new DateTime(2011, 1, 1);
while (c != null && start < monat)
{
DateTime contractEnd = c.ContractEndDate.HasValue ? c.ContractEndDate.Value : DateTime.MaxValue;
decimal bu = 0;
decimal weeklyTotalHours = this.maxWochenstunden;
int anzWochentage = ANZ_WOCHENTAGE;
if (c.WeeklyTotalHours.HasValue)
{
weeklyTotalHours = c.WeeklyTotalHours.Value;
bu = c.WeeklyTotalHours.Value / maxWochenstunden;
}
while (start < monat && start < contractEnd)
{
decimal flsIst = 0;
decimal mittelbarIst = 0;
decimal minutenMonat = 0;
DateTime ende = new DateTime(start.Year, start.Month, 1).AddMonths(1);
if (contractEnd < DateTime.MaxValue && contractEnd.AddDays(1) < ende)
ende = contractEnd.AddDays(1);
List<DienstEintrag> entriesThisMonth = new List<DienstEintrag>();
string key = string.Format("{0:yyyyMM}", start);
if (eintragDict.ContainsKey(key))
{
foreach (var item in eintragDict[key])
{
minutenMonat += Convert.ToDecimal(item.DauerInStunden * 60);
entriesThisMonth.Add(item);
}
}
dpIst += minutenMonat;
decimal arbeitstage = GetArbeitstageImBereich(start, ende, emp);
var arbeitstageProWoche = anzWochentage;
if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
arbeitstageProWoche = c.WeeklyDays.Value;
var soll = GetSollNachArbeitszeiten(emp, start, ende);
if (!soll.HasValue)
{
var stundenSollProMonat = BerechneSollProMonat(emp, start, ende);
soll = stundenSollProMonat;
}
if (!soll.HasValue)
{
if (!soll.HasValue)
{
decimal maxSollMonat = arbeitstage * (maxWochenstunden / arbeitstageProWoche);
if (arbeitstageProWoche <= 5)
{
maxSollMonat = arbeitstage * (maxWochenstunden / 5);
}
soll = maxSollMonat * bu;
}
}
decimal sollMitarbeiter = soll ?? 0;
var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, start, ende, arbeitstageProWoche);
MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail();
ed.SollProTag = weeklyTotalHours / arbeitstageProWoche;
ed.ArbeitstageProWoche = arbeitstageProWoche;
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
ed.SollProWoche = BerechneSollProWoche(c, ed);
ed.AbsenceTimeDays = ath;
ed.Employee = emp;
ed.StundenSollMax = sollMitarbeiter;
if (ath.TageGesamt.HasValue)
{
var minusStunden = BerechneStundenDurchAbwesenheiten(ath, start, ende, c, ed);
sollMitarbeiter -= minusStunden;
if (sollMitarbeiter < 0 && !StundenDurchAbwesenheitenDuerfenNegativSein())
{
sollMitarbeiter = 0;
}
}
decimal stundenMonat = minutenMonat / 60m;
stundenMonat = ((flsIst * AddRateFactorToIst()) + mittelbarIst) / 60m;
if (!ueberstunden.HasValue)
ueberstunden = 0;
ueberstunden += stundenMonat - sollMitarbeiter;
decimal extraUeberstunden = 0;
BerechneExtraUeberstunden(emp, start, ende, out extraUeberstunden);
ueberstunden += extraUeberstunden;
alteExtraUeberstunden = extraUeberstunden;
ed.StundenSollOhneUrlaubKrankheit = sollMitarbeiter;
ed.StundenGesamtIst = stundenMonat;
ed.Ueberstunden = ueberstunden;
ed.UeberstundenVormonat = edTotal.Ueberstunden;
edTotal.StundenSollOhneUrlaubKrankheit += sollMitarbeiter;
edTotal.StundenSollMax += soll ?? 0;
edTotal.FlsIst += flsIst / 60;
edTotal.MittelbarIst += mittelbarIst / 60;
edTotal.StundenGesamtIst += stundenMonat;
edTotal.Ueberstunden = ueberstunden;
start = ende;
}
if (start >= contractEnd)
{
var ctemp = GetNextValidContractForDate(start, emp);
if (ctemp != null && ctemp.Oid != c.Oid)
{
c = ctemp;
}
else
{
c = null;
}
if (c != null && c.EntryDate.HasValue && c.EntryDate >= start)
start = c.EntryDate.Value;
else
{
start = start.AddMonths(1);
c = GetNextValidContractForDate(start, emp);
if (c != null && c.EntryDate.HasValue && c.EntryDate >= start)
start = c.EntryDate.Value;
}
}
}
}
return dpIst;
}
private Dictionary<string, List<DienstEintrag>> CreateDiensteintragDictByDate(List<DienstEintrag> eintraege)
{
var dict = new Dictionary<string, List<DienstEintrag>>();
foreach (var item in eintraege)
{
//if (!IsServiceRecordFehlzeit(item))
//{
string key = string.Format("{0:yyyyMM}", item.Datum);
List<DienstEintrag> list;
if (!dict.ContainsKey(key))
{
list = new List<DienstEintrag>();
dict.Add(key, list);
}
else
{
list = dict[key];
}
list.Add(item);
//}
}
return dict;
}
private List<DienstEintrag> VertretungenUmwandeln(List<Dienstvertretung> vertretungen)
{
List<DienstEintrag> eintraege = new List<DienstEintrag>();
foreach (var v in vertretungen)
{
eintraege.Add(new DienstEintrag()
{
Datum = v.Datum,
DauerInStunden = v.DauerInStunden,
DienstOid = v.DienstOid,
EmployeeOid = v.EmployeeOid,
Endzeit = v.Endzeit,
Notice = v.Notice,
Startzeit = v.Startzeit,
WohnheimOid = v.WohnheimOid,
Zeile = v.Zeile
});
}
return eintraege;
}
#endregion
protected virtual void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
{
//do nothing
}

View File

@@ -339,6 +339,7 @@ namespace BeWo.Report.ReportObjects
public decimal? EmployeeSalaryByContract { get; set; }
public decimal? EmployeeSalaryByHours { get; set; }
public EmploymentType EmploymentType { get; set; }
public decimal DienstplanIst { get; set; }
}
public class DayDetail

View File

@@ -14,7 +14,8 @@ namespace BeWo.Report.ReportObjects
public List<PageObject> PageObjects { get; set; }
public static RosterIstRO Create(List<DienstEintragDC> dienstEintragDCs, List<DienstvertretungDC> dienstvertretungDCs, List<EmployeeDC> employee,
List<DienstInfoDC> dienstInfoDCs, CompactWohnheimDC compactWohnheimDC, int year, int month, List<FeiertagDC> feiertage, List<AbsenceTimeDC> absences)
List<DienstInfoDC> dienstInfoDCs, CompactWohnheimDC compactWohnheimDC, int year, int month, List<FeiertagDC> feiertage, List<AbsenceTimeDC> absences,
Dictionary<long?, decimal> stundenBeiAbwesenheit)
{
RosterIstRO ro = new RosterIstRO();
ro.PageObjects = new List<PageObject>();
@@ -31,11 +32,11 @@ namespace BeWo.Report.ReportObjects
var datum = new DateTime(year, month, i);
if (absences.Any(a => datum >= a.Start && datum <= a.End && a.EmployeeOid == emp.EmployeeOid && a.Reason.Description.ToLower().Contains("urlaub")))
{
ur = "X";
ur = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
}
else if (absences.Any(a => datum >= a.Start && datum <= a.End && a.EmployeeOid == emp.EmployeeOid && a.Reason.Description.ToLower().Contains("krank")))
{
kr = "X";
kr = string.Format("{0:0.00}", stundenBeiAbwesenheit[emp.EmployeeOid]);
}
eintraege.Add(new Listeneintrag()
@@ -59,7 +60,7 @@ namespace BeWo.Report.ReportObjects
foreach (var item in dienstEintragDCs)
{
string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(item, null, absences);
string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(item, null, absences, stundenBeiAbwesenheit);
var temp = eintraege.First(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
if (temp != null)
@@ -67,12 +68,12 @@ namespace BeWo.Report.ReportObjects
eintraege[temp.Position] = new Listeneintrag()
{
Datum = item.Datum,
DauerInStunden = string.Format("{0:0.00h}", item.DauerInStunden),
DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
EmployeeOid = item.EmployeeOid,
Endzeit = item.Endzeit + " Uhr",
Endzeit = item.Endzeit,
Notice = item.Notice,
Startzeit = item.Startzeit + " Uhr",
Startzeit = item.Startzeit,
Urlaub = urlaubKrankheit[0],
Krankheit = urlaubKrankheit[1]
};
@@ -80,7 +81,7 @@ namespace BeWo.Report.ReportObjects
}
foreach (var item in dienstvertretungDCs)
{
string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(null, item, absences);
string[] urlaubKrankheit = UrlaubUndKrankheitUeberpruefen(null, item, absences, stundenBeiAbwesenheit);
var temp = eintraege.First(e => e.Datum == item.Datum && e.EmployeeOid == item.EmployeeOid && e.Dienst == null);
if (temp != null)
@@ -88,12 +89,12 @@ namespace BeWo.Report.ReportObjects
eintraege[temp.Position] = new Listeneintrag()
{
Datum = item.Datum,
DauerInStunden = string.Format("{0:0.00h}", item.DauerInStunden),
DauerInStunden = string.Format("{0:0.00}", item.DauerInStunden),
Dienst = dienstInfoDCs.First(i => i.Oid == item.DienstOid),
EmployeeOid = item.EmployeeOid,
Endzeit = item.Endzeit + " Uhr",
Endzeit = item.Endzeit,
Notice = item.Notice,
Startzeit = item.Startzeit + " Uhr",
Startzeit = item.Startzeit,
Urlaub = urlaubKrankheit[0],
Krankheit = urlaubKrankheit[1]
};
@@ -115,7 +116,7 @@ namespace BeWo.Report.ReportObjects
return ro;
}
private static string[] UrlaubUndKrankheitUeberpruefen(DienstEintragDC eintrag, DienstvertretungDC vertretung, List<AbsenceTimeDC> abwesenheiten)
private static string[] UrlaubUndKrankheitUeberpruefen(DienstEintragDC eintrag, DienstvertretungDC vertretung, List<AbsenceTimeDC> abwesenheiten, Dictionary<long?, decimal> stundenBeiAbwesenheit)
{
string[] urlaubKrankheit = new string[] { " ", " " };
if (eintrag != null)
@@ -125,9 +126,9 @@ namespace BeWo.Report.ReportObjects
if (eintrag.Datum >= absence.Start && eintrag.Datum <= absence.End.Value && eintrag.EmployeeOid == absence.EmployeeOid)
{
if (absence.Reason.Description.ToLower().Contains("urlaub"))
urlaubKrankheit[0] = "X";
urlaubKrankheit[0] = string.Format("{0:0.00}", stundenBeiAbwesenheit[absence.EmployeeOid]);
else if (absence.Reason.Description.ToLower().Contains("krank"))
urlaubKrankheit[1] = "X";
urlaubKrankheit[1] = string.Format("{0:0.00}", stundenBeiAbwesenheit[absence.EmployeeOid]);
}
}
}
@@ -138,9 +139,9 @@ namespace BeWo.Report.ReportObjects
if (vertretung.Datum >= absence.Start && vertretung.Datum <= absence.End.Value && vertretung.EmployeeOid == absence.EmployeeOid)
{
if (absence.Reason.Description.ToLower().Contains("urlaub"))
urlaubKrankheit[0] = "X";
urlaubKrankheit[0] = string.Format("{0:0.00}", stundenBeiAbwesenheit[absence.EmployeeOid]);
else if (absence.Reason.Description.ToLower().Contains("krank"))
urlaubKrankheit[1] = "X";
urlaubKrankheit[1] = string.Format("{0:0.00}", stundenBeiAbwesenheit[absence.EmployeeOid]);
}
}
}

View File

@@ -3,6 +3,7 @@ using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
using BS.Shared.Core;
using BeWo.Report;
using System.Collections.Generic;
namespace DomizielAnsbach
{
@@ -16,6 +17,24 @@ namespace DomizielAnsbach
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
var newSip = new ServiceInvoicePeriodRO();
foreach (var sip in pRO.ServiceInvoicePeriods)
{
var newItem = new ServiceInvoiceItemRO();
foreach (var item in sip.ServiceInvoiceItems)
{
newItem.UnitCount += item.UnitCount;
newItem.NetAmount += item.NetAmount;
newItem.ServiceDescription = item.ServiceDescription;
}
newSip.ServiceInvoiceItems.Add(newItem);
}
pRO.ServiceInvoicePeriods = new List<ServiceInvoicePeriodRO>();
pRO.ServiceInvoicePeriods.Add(newSip);
this.bindingSource1.DataSource = pRO;
}
}

View File

@@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
namespace DomizielAnsbach
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceInvoiceReport(String dcIds, long? invoiceBaseOid)
{
if (String.IsNullOrEmpty(dcIds) && invoiceBaseOid.HasValue)
{
var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid.Value);
dcIds = String.Format("{0}", serviceInvoice.Oid);
}
if (!string.IsNullOrEmpty(dcIds))
{
var serviceInvoiceOid2CostbearerId = new Dictionary<long, string>();
var dcList = new List<ServiceInvoiceDC>();
var dcidStrs = dcIds.Split(';');
foreach (var oidStr in dcidStrs)
{
var oid = long.Parse(oidStr);
var invoice = DAOFactory.GenericDAO.LoadByID<ServiceInvoice>(oid);
var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(invoice);
dcList.Add(dc);
if (serviceInvoiceOid2CostbearerId.ContainsKey(oid))
continue;
if (!String.IsNullOrEmpty(invoice.InvoiceBase.InvoiceId))
serviceInvoiceOid2CostbearerId.Add(oid, invoice.InvoiceBase.InvoiceId);
else
{
foreach (var period in invoice.ServiceInvoicePeriodList)
{
try
{
if (period.SupportConceptApprovalPeriod != null)
AddCostBearerIdToDict(oid, serviceInvoiceOid2CostbearerId, period.SupportConceptApprovalPeriod.CostBearer2SupportConcept);
foreach (var item in period.InvoiceItemList)
{
if (item.SupportConceptApprovalPeriodOid.HasValue)
{
var approvalPeriod = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(item.SupportConceptApprovalPeriodOid.Value);
if (approvalPeriod.CostBearer2SupportConcept != null)
AddCostBearerIdToDict(oid, serviceInvoiceOid2CostbearerId, approvalPeriod.CostBearer2SupportConcept);
}
}
}
catch (Exception)
{
//ignore
}
}
}
}
IBeWoReport<ServiceInvoiceRO> allReports = null;
foreach (var iDC in dcList)
{
String reportId = null;
if (serviceInvoiceOid2CostbearerId.ContainsKey(iDC.ServiceInvoiceOid.Value))
reportId = serviceInvoiceOid2CostbearerId[iDC.ServiceInvoiceOid.Value];
IBeWoReport<ServiceInvoiceRO> singleReport = FindReportImp<ServiceInvoiceRO>(reportId);
singleReport.SetReportDataSource(ServiceInvoiceRO.Create(iDC));
((XtraReport)singleReport).CreateDocument();
if (allReports == null)
allReports = singleReport;
else
((XtraReport)allReports).Pages.AddRange(((XtraReport)singleReport).Pages);
if (reportId == "RgBezirkDetail")
{
singleReport = FindReportImp<ServiceInvoiceRO>("RgBezirk");
singleReport.SetReportDataSource(ServiceInvoiceRO.Create(iDC));
((XtraReport)singleReport).CreateDocument();
if (allReports == null)
allReports = singleReport;
else
((XtraReport)allReports).Pages.AddRange(((XtraReport)singleReport).Pages);
}
}
return allReports as XtraReport;
}
return new XtraReport();
}
}
}

View File

@@ -48,6 +48,19 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="RechnungBezirk.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="RechnungBezirk.Designer.cs">
<DependentUpon>RechnungBezirk.cs</DependentUpon>
</Compile>
<Compile Include="RechnungBezirkDetail.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="RechnungBezirkDetail.Designer.cs">
<DependentUpon>RechnungBezirkDetail.cs</DependentUpon>
</Compile>
<Compile Include="CollectiveBillingReport.cs">
<SubType>Component</SubType>
</Compile>
@@ -60,6 +73,7 @@
<Compile Include="InvoiceCustomerReport.Designer.cs">
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\StationaerInvoiceCreation.cs" />
<Compile Include="Invoicing\CollectiveInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -102,6 +116,14 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="RechnungBezirk.resx">
<DependentUpon>RechnungBezirk.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="RechnungBezirkDetail.resx">
<DependentUpon>RechnungBezirkDetail.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="QuittierungsbelegPB.resx">
<DependentUpon>QuittierungsbelegPB.cs</DependentUpon>

View File

@@ -3,15 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Services;
@@ -28,50 +24,36 @@ namespace DomizielAnsbach.Invoicing
{
var costBearer = DAOFactory.GenericDAO.LoadByID<CostBearer>(costBearerOid);
var invoiceList = new List<ServiceInvoice>();
var invoiceCounter = 0;
ServiceInvoice invoice;
invoice = CreateCollectiveBilling2(costBearer, invoicePeriod, supportConcepts2ServiceRecords);
if (invoice != null)
{
invoiceList.Add(invoice);
}
var result = invoiceList.Select(item => MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(item)).ToList();
return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result;
}
private ServiceInvoice CreateCollectiveBilling2(CostBearer costBearer, DateTimeSpan invoicePeriod, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var invoice = new ServiceInvoice();
var newDict = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var sc2sr in supportConcepts2ServiceRecords)
{
if (sc2sr.Key.IsApproved)
{
newDict.Add(sc2sr.Key, sc2sr.Value);
}
}
SetRecipientInformation(invoice, costBearer);
SetSenderInformation(invoice);
SetInvoiceBaseData(0, invoice, costBearer, invoicePeriod, newDict.Keys.ToList());
SetCollectiveBillingBaseData(0, invoice, costBearer, invoicePeriod, newDict);
SetCollectiveBillingServiceInvoicePeriods(invoice, invoicePeriod, newDict);
SetServiceInvoicePeriodAmounts(invoice);
// Spitzabrechnung
if (invoicePeriod == null)
{
SetAmountAdvancePayments(invoice);
}
return invoice;
}
@@ -86,9 +68,6 @@ namespace DomizielAnsbach.Invoicing
base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
}
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
Calculations calc)
{

View File

@@ -8,14 +8,20 @@ namespace DomizielAnsbach.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
foreach (var list in supportConcepts2ServiceRecords.Values)
{
foreach (var sr in list)
{
if (sr.CostBearer != null)
if (sr.CostBearer.Name.Contains("Bezirk Mittelfranken (stationär)"))
return new StationaerInvoiceCreation();
}
}
return new CollectiveInvoiceCreation();
}
}
}

View File

@@ -0,0 +1,175 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace DomizielAnsbach.Invoicing
{
public class StationaerInvoiceCreation : InvoiceCreation
{
private const decimal TAGESPAUSCHALE = 129.55m;
private const decimal FREIHALTEGEBUEHR = 103.64m;
private DateTime? accountingPeriodStart = null;
private DateTime? accountingPeriodEnd = null;
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "RgBezirkDetail";
invoice.InvoiceBase.InvoiceTypeText = "Sammelrechnung Bezirk";
}
public override List<ServiceInvoiceDC> GenerateServiceInvoices(long costBearerOid,
DateTimeSpan invoicePeriod,
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var costBearer = DAOFactory.GenericDAO.LoadByID<CostBearer>(costBearerOid);
var invoiceList = new List<ServiceInvoice>();
ServiceInvoice invoice;
invoice = CreateCollectiveBilling2(costBearer, invoicePeriod, supportConcepts2ServiceRecords);
if (invoice != null)
invoiceList.Add(invoice);
var result = invoiceList.Select(item => MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(item)).ToList();
return result.Count > 1 ? result.OrderBy(i => i.InvoiceBase.CustomerLastName).ToList() : result;
}
private ServiceInvoice CreateCollectiveBilling2(CostBearer costBearer, DateTimeSpan invoicePeriod, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
var invoice = new ServiceInvoice();
var newDict = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var sc2sr in supportConcepts2ServiceRecords)
{
if (sc2sr.Key.IsApproved)
newDict.Add(sc2sr.Key, sc2sr.Value);
}
SetRecipientInformation(invoice, costBearer);
SetSenderInformation(invoice);
SetInvoiceBaseData(0, invoice, costBearer, invoicePeriod, newDict.Keys.ToList());
SetCollectiveBillingBaseData(0, invoice, costBearer, invoicePeriod, newDict);
SetCollectiveBillingServiceInvoicePeriods(invoice, invoicePeriod, newDict);
SetServiceInvoicePeriodAmounts(invoice);
SetAmountAdvancePayments(invoice);
return invoice;
}
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
IList<CompactSupportConceptDC> supportConceptList)
{
if (invoicePeriod != null)
{
accountingPeriodStart = invoicePeriod.StartDate;
accountingPeriodEnd = invoicePeriod.EndDate;
}
base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
}
public override void SetInvoiceItems(ServiceInvoice invoice,
ServiceInvoicePeriod serviceInvoicePeriod,
SupportConceptApprovalPeriodDC supportConceptApprovalPeriod,
CostBearer2SupportConcept cb2sc,
DateTimeSpan invoicePeriod,
List<ServiceRecordDC> serviceRecords)
{
var itemList = CreateInvoiceItems(null, invoicePeriod, serviceInvoicePeriod.SupportConceptApprovalPeriod, null);
serviceInvoicePeriod.InvoiceItemList.AddRange(itemList);
}
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
Calculations calc)
{
IList<InvoiceItem> ergebnis = new List<InvoiceItem>();
var customer = scap.CostBearer2SupportConcept.SupportConcept.Customer;
DateTime start;
DateTime ende;
if (scap.StartDate <= invoicePeriod.StartDate)
start = invoicePeriod.StartDate;
else
start = (DateTime)scap.StartDate;
if (scap.EndDate >= invoicePeriod.EndDate)
ende = invoicePeriod.EndDate;
else
ende = (DateTime)scap.EndDate;
var monate = DateTimeUtils.GetTotalMonths(start, ende);
while (start <= ende)
{
var tage = invoicePeriod.EndDate.Subtract(invoicePeriod.StartDate).Days + 1;
DateTime monatStart = new DateTime(start.Year, start.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1);
var tageMonat = monatEnde.Subtract(monatStart).Days;
int tageAbwesendImMonat = 0;
decimal? sumCustomerMonth = 0;
foreach (var at in customer.AbsenceTimes)
{
if (at.Start.HasValue && at.Start.Value < monatEnde &&
(!at.End.HasValue || at.End.Value >= monatStart))
{
DateTime dt = at.Start.Value;
DateTime dtEnde = monatEnde.AddMonths(1); // nächstenMonat mit berücksichtigen um Abwesenheiten zu prüfen, die in den nächsten Monat mit hineingehen
if (at.End.HasValue && at.End.Value < monatEnde)
{
while (dt <= at.End.Value)
{
tageAbwesendImMonat++;
dt = dt.AddDays(1);
}
}
}
}
var ii = new InvoiceItem();
ii.UnitCount = tageMonat - tageAbwesendImMonat;
ii.AmountPerUnit = TAGESPAUSCHALE;
ii.AmountTotal = ii.UnitCount * ii.AmountPerUnit;
ii.GrossAmountTotal = ii.AmountTotal;
sumCustomerMonth += ii.AmountTotal;
ii.MaxApprovedAmount = null;
ii.ItemDescription = "Klientenname";
ii.UnitDescription = "Vergütung";
ii.ItemPeriodStart = monatStart;
ii.Notice = monatStart.ToString("MMMM");
ii.SupportConceptApprovalPeriodOid = scap.Oid;
ergebnis.Add(ii);
ii = new InvoiceItem();
ii.UnitCount = tageAbwesendImMonat;
ii.AmountPerUnit = FREIHALTEGEBUEHR;
ii.AmountTotal = ii.UnitCount * ii.AmountPerUnit;
ii.GrossAmountTotal = ii.AmountTotal;
sumCustomerMonth += ii.AmountTotal;
ii.MaxApprovedAmount = sumCustomerMonth;
ii.ItemDescription = "Klientenname";
ii.UnitDescription = "Platzfreihaltegeb.";
ii.ItemPeriodStart = monatStart;
ii.Notice = monatStart.ToString("MMMM");
ii.SupportConceptApprovalPeriodOid = scap.Oid;
ergebnis.Add(ii);
start = start.AddMonths(1);
start = new DateTime(start.Year, start.Month, 1);
}
return ergebnis;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,32 @@
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
using BS.Shared.Core;
using BeWo.Report;
using System;
namespace DomizielAnsbach
{
[IDSpecificClass(Identifier = "RgBezirk")]
public partial class SammelrechnungBezirk : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public SammelrechnungBezirk()
{
this.InitializeComponent();
}
private static int GetQuarter(DateTime actualDate)
{
int quarter = (int)Math.Ceiling(actualDate.Month / (double)3);
return quarter;
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
//pRO.NetClaim = pRO.GrossClaim - pRO.AmountAdvancedPayments;
lblMonate.Text = "Abschläge " + pRO.AccountingPeriodStart.ToString("MMMM") + " - " + pRO.AccountingPeriodEnd.ToString("MMMM") + " " + pRO.AccountingPeriodEnd.Year.ToString();
lblQuartal.Text = GetQuarter(pRO.AccountingPeriodEnd).ToString() + ". Quartal " + pRO.AccountingPeriodEnd.Year.ToString();
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,728 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsN
DhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAHMAncDASIAAhEBAxEB/8QA
HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9UKKKKCAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigApm/5ttPpklACv9ymb1RdzVKn3KZVDH0UUVIgooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACijfUMkix/xr/wOgvlHeZ/t03cP71c9feOtF0+Rlm1KFGX7y7q5if46eHIblYFaaRd2zzYovkWv
PqZhhaUuWUzupZfiavw0pHpdFcjonxC0nWp5YLW6iMsX3ot22uljukkbg1tTxNLEfwpnPWoVaEvfiXE+
5TKak2+pa6jEKKKKCAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooABTJG9GoqK5dUV91Rzci5pFxOX8eeNofB+mtMUaaf+
GJP4q+dvGHxT1nxNM8bXMlnb7v8AVQ//ABeyrHxb8SPrfiu8Zf30Vu3lRfNuT/brz2aYtayrs/vbdq/L
t/76r8I4m4mryryoUJcsT9kyDI6FOhGtVj7xZmvpVk3Tz/8Afcu/d/sfNVazuVml2qzb2VX2RLR5yQt5
bbk2tu+f5aYlw235t0qr8/zSs1fk0sfiJy96Z9z7KP2Cz9p/0dF/j2/df/0OvQfAfxe1XRLxY7meS7st
v+qZPn/4DXmf2nzm3LtR923ai/w06N282VopfuL9z733q9XLc+xmBq80ZnHi8toYuly1Yn2V4V8Y23ia
xS5tm3/3l/irpI5FNfH/AIJ8Z3nhbVEaNme0VdrJuT/0GvqTwt4otvEOlxXdsyusi71r+jcgz2nm9D/p
4fi+dZPVy+rzR+E6FH3rT6iR/wCGpa+xPlgooplBA+iiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGVXmVXTbVqSopelZv3/AHS4
fGfJ3xY0ddJ8W3UcVtGkDfvdq/xbq4YJ5Pms6sqf7LN/8XXvH7QmgGaG31GLd8rbW+Rpdv8AwH+GvCvv
yfw/7lfy5xThPq+Oq8x++ZDifrGBgQ3yMmxpP9av+1TPm+T9225lbcj/AMVPm+eX5VZE/i2LT/l3bf3n
+/XwUvi90+piQqsv7r9wybfveUv/ANnUTNuidm8v5v4d3z/99NU3nMuz5m3/ADbXdaZCnyvtZvu/xr96
iVQB3y/ut0G9/wDeVtv8X3v4a9N+EvxH/sHUkiudosp5fmmZv4v8/LXmDusexlZv9pW/harscy26lo28
3/d/hr6bJsyq5fXjVpyPJzDBRx1CVKZ9sWd0l0qMrb1aru75q8S+DPjs3dumnXdwv2pW2R+a33v9mvZk
uV2pur+qMvx9PMKEa9M/BMwwU8FXdKRaTbto8ym7lTZTk+/XrHlhT6KKACiiiggKKKKACiiigA8yimP9
+n0DCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUfxUDCiiigQmaXNMeobm
6SFW3Mo/3qUpKOrLUeb4R5mHesTxJ4msvDlo91eypDAn8VcN42+Nem6Hvs9Plju7/wDuI3y/8CrwPxB4
s1LxBeSz3cklyzfOv9xa+BzvizCZb7sPekfaZTw3XxsvaVfdidl8R/ixJ4kee1sAyWMidZfv7q81mTev
zRrs3fM/yVV8tbjb95NvzfeahLlnt3jbc+7+63zf8Br+ds0zapnFf29c/XsHgaGBpRpUB038e1Vh/u75
P/ZaH2+Unyr8rU35UXbtX++38NOaFl+Tyl+Zd3yt92vA5j1Qikkjl3RxtN/6B/8AY09FZ1laXbsX/a3f
NUTzKn3Y12fxUb/37M33WX5lqeb3Q5Q2L951V0WpV3JD5sm5/m+4n8S/3KhikVG+ZV3s2za33f8Aeao/
Jih2Lt+7/BV05SgTI19H1CfT7prm0laHb86/e+X/AGK+qPh342g8VaTEys32iNV3I9fI81vGs8Xzeam3
d8rLvVq6jwT4pu/DOsRXcErPD/y1iT+Kv1ThXP5YCv7KcvdkfG57lMcwoc8PiifYKf3t1WIf71YXh7XI
td0+K5hbeJU+7Wusnzbd1f0XSqxrQ54H4lUpyhPkkWPMp9M3fw0eZW5iP8yiiigkKKKKBBRRRQAUUUUA
FFFFABTN/wA1PooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooGM/iod9i0ySQKOeBX
mHxG+L1t4akFjZt9pv2+ULu+Vf8AerzsXjqGBp+0ryO7CYSri6ns6UTsfEni2z8OWTzXUm3b/Du+avnr
x58XtS8Q31xDbN9msGXYir99v9uuS8SeJr7xBLcTXdzJM3/jlY7R79+4/dr8Sz3jGriv3WD92J+t5Pwz
Swv73EfELM7zM/3d/wDfSX71Mm/1fkL8i/7bUz783yr8n8T09riTa/zM/wDs7q/IK+Kdafvn3UYcgzyV
dflbf8v/AHzTFXdIq/cdv4qm/wCWX8X/AACmeXAiyxSK237/AMvy1x8v2jbmInRtsv3X+bZ/t09E+83m
r93bUv8Af2t96mOn8LLvRv4KXNyhzDERUiZWCun8Lbm/+Jps26ZW2tH5Xlf3vvVK033m2x/Kv+f4absX
Zu3feXb8/wDFV8xI53i2rF5q1E6/N8rL/cp0y/Miqqy/7W6pH3pFtVvnrKRZHbo29tqx7Nvzb/4ae7+S
srMzJt+7TfmS3Rl+5t+Zt33aN/yuv+zXRCtKHwkcp6J8L/iNd+Hb2KGeb/iWt/D/AHW/vV9N6TdJe28U
/wDCy7lr4lsHbbt+bY6/3vu17l8I/iozRwaPffO6/Kr7q/eODOI+eP1OvI/L+Jsn5v3+Hie7Q1L5lVYZ
F/h+5VpH+Wv2s/LZD6ZR/FT6ZAeZTKfRQAUUUUEBRR/FTH/vUFj6KKKCA8yiiigYUUUUCCimf+h0+OgY
UUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiijzKBhRRTHfbQUM875qpX2oQafbtJPIsUa/Nub/2aq3iDxFZeHbJ7u9uI
4VVfm3tXzV8SvipdeJpngsj5Vr91X3fer5TOc9w2UUuaUvePoMpyevmVX3fhOq+IXxu+2+fp+ksqL91p
f73+7XjdxqEvm75N00rfxO1V/OZ2+Zlp/mN8i7ld6/nTN+IsTm8vekft2X5VQy2ny04le53Ou1ql85nV
Nu7fT2XbN5Em3d/eoms/mRmX7vy76+O5qkviPX5gh+8ny/8Aj1Me3WGDd/01+ZWVvu0/bvj27VSL5l+R
qe9s32dGVlTai1pGn7vukSkQyL8i7V/dN/zyp9tYSzfLt3uzbFra8O+GLnxJqKWlszO7feeL7iV9FeD/
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
+41eseCvgbJb3yz6mYnt1XAXb87/AO9X0uV5HjMbOMIw/wC3jwcdnWGwkeaUzC+E/wANZdZvob+9ikW1
jXcm5fklr6OtbdbaFUVdirUVtZxWUCRwrsVf4Vqx0r+jclyShlVL3fiPxrMs0q5lX55klFFFfUHihRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADKp3ml218u2aFZV/2lq/TPLrCrQhWjy1S4yl
D4DzvWvgvoOpRP5FstpKy7d8K7a5e8/Z2tHX5L+Qou7/AFq7/wCDbXtlO6V8zW4XyvES5p0j2KOcY7D/
AA1Twr/hnaSRovM1JdkbfdSKrFj+znbQs7XOpSPub/lkuz5a9tz70fjWMeE8rj9g6JZ9mEv+Xp57YfB3
Q7NkYwrLt/vV1Oj+FdN0KLyrK0jiT/ZFa20elPx+Fevh8nwOF/hUonlVMbia/wDFmNRFT7q0+iivbSS2
OIKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooGFFF
FAgooooAKKKKACiiigAooooAKKKKAImXtsrI1Lwvp+qxtHc2sbo3+xW2PvcGkbtXLXw1HEfxY8xpCpOl
70JHnV58FPDd48TeRJDt3fLFJtWpdP8Agv4YsE2rZeYu1V/etu+7XfeXmjGO1eV/YeX83N7KJ6H9pYvl
5fayOOj+Fvh1ZFb+zoDs+7uStiHwtpduqbbCH5fu/ukra2U7iumnleDpfDSic8sXXn8Uytb2MEP+rjVf
92p6fSE130qMKMfcRzSlz/ELRRRW5AUUUUAFFFFABRRRQAUUUUAFFMR960+gAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKBhRRRQIKKK
KACiiigAooooAKKKKACiiigAooooAKKKY+/+GgCpf6la6am+5njt0Ztu6WXbVlJopl3xsro38StX5vft
uePtTuvjbd6H9puU0q106JVtHidYl+R33/3W+f5ax/gH+1Z4k+HOo6ZpV5P9v8ONcJFLaXDrviVn2fI/
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
olirpLH4G+G7Py2kga5dP45Wr0L5vQUvPpTo8N5bR+GmOpnWOq/FVkZGj+FrDQofLs7aO3Tdu+Ra2PLp
y570Zr3qOFpYePLSieVKpKr70mLWbrWi2fiDTrix1CBLm0uF8p4Zl3K1aVFdcfdMj5mX9hTwTa+JYtTg
utQ+yq3mtp7N8jNv3/e/hr6Rs7eOztYoI12RxLsX/dWrFFXKUp/EUFFFFQQFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFADP4a8t/aAdk8LW+1d/8ApC7q9Ub7teUftBybfDFof+npFr57Pf8AkX1T2so/36kc
R8Dbjb4ulgj+5JBvavoxPurXzd8DVSHxc8Xy7/IbbX0jHXl8K/7genxL/vw+iiivtT5IKKKKACijZ826
igYUUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigArh/ip4bm8SeF7iG2j86df3ip/ert80wgc7ulcWLw0cXQlQkb0a
0sPVjVifP/wS0adfEjzSWsyeXFs81/4f9ivoFV2VWt7WK3ZvLjVGqyvy15+U5d/ZtD2Z24/HfX63tZD6
KKK908sKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQIKKKKACiiigYUUU
UAFFFFAgooooGFFFFABRRRQIKKKKACiiigYUUUUAFFFFAgooooGFFFFABRRRQIKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooATHtTWaqWpalBo9rLc3UipEq5avOte+OOla
XG32bddy7V2pCv8AerzMXmGGwUeavPlO/DYKviv4UT1LzMVFJMq96+aNX+N+v3iu0DfZ1dflVfn21zV9
8RtdvoFjuLu4aLcrfer4jE8c5bh5csPePqqPCmMq/FofXX2uH/nolC3kX/PVK+Pk8Z6vMsStfXOxl/56
/dqvJ4q1NFSX7dcu/wBxv3r/AHa4o8fYT/n2df8AqfX/AJz7IbULUPtM6bu1K1/Av/LWL/vqvjF/FF8i
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
P//Z
</value>
</data>
<data name="xrPictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,68 @@
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
using BS.Shared.Core;
using BeWo.Report;
using System;
namespace DomizielAnsbach
{
[IDSpecificClass(Identifier = "RgBezirkDetail")]
public partial class SammelrechnungBezirkDetail : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public SammelrechnungBezirkDetail()
{
this.InitializeComponent();
}
private static int GetQuarter(DateTime actualDate)
{
int quarter = (int)Math.Ceiling(actualDate.Month / (double)3);
return quarter;
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
var newSip = new ServiceInvoicePeriodRO();
decimal? sumCustomerMonth = 0;
string prevMonth = null;
var counter = 0;
if (pRO.ServiceInvoicePeriods != null)
{
foreach (var sip in pRO.ServiceInvoicePeriods)
{
counter += 1;
if (sip.ServiceInvoiceItems != null)
{
foreach (var sii in sip.ServiceInvoiceItems)
{
if (prevMonth == null)
{
sumCustomerMonth = sii.NetAmount;
sii.NetAmount = null;
}
else if (sii.Notice == prevMonth)
{
sumCustomerMonth += sii.NetAmount;
sii.NetAmount = sumCustomerMonth;
sii.Notice = null;
}
else if (sii.Notice != prevMonth)
{
sumCustomerMonth = sii.NetAmount;
sii.NetAmount = null;
}
prevMonth = sii.Notice;
sii.RateFactor = counter.ToString();
}
}
}
}
lblQuartal.Text = GetQuarter(pRO.AccountingPeriodEnd).ToString() + ". Quartal " + pRO.AccountingPeriodEnd.Year.ToString();
lblMonate.Text = pRO.AccountingPeriodStart.ToString("MMMM") + " - " + pRO.AccountingPeriodEnd.ToString("MMMM");
this.bindingSource1.DataSource = pRO;
}
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,84 @@
using System;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.Core;
using BeWo.Report.ReportObjects;
using System.Text;
using BS.Shared;
using BeWo.Report;
namespace LebensWert
{
public partial class Klientenstammblatt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<CustomerDataRO>
{
public Klientenstammblatt()
{
InitializeComponent();
}
public void SetReportDataSource(CustomerDataRO pRO)
{
var c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid);
foreach (var sc in c.SupportConcepts)
{
if (sc.IsActive == ActivationTypeId.Active)
{
foreach (var c2s in sc.CostBearer2SupportConceptList)
{
if (c2s.StartDate <= DateTime.Now && c2s.EndDate >= DateTime.Now)
{
lblHilfeplan.Text = c2s.CostBearer.Organisation.Name;
foreach (var ap in c2s.ApprovalPeriodList)
{
if (ap.StartDate <= DateTime.Now && ap.EndDate >= DateTime.Now)
{
lblBewilligtVon.Text = String.Format("{0:dd.MM.yyyy}", ap.StartDate);
lblBewilligtBis.Text = String.Format("{0:dd.MM.yyyy}", ap.EndDate);
lblFls.Text = String.Format("{0:0.00}", ap.ApprovedBEPerInterval);
lblFlsEinheit.Text = ap.ApprovedBEInterval != null ? EnumTranslations.SupportConceptApprovalInterval2Translations[(SupportConceptApprovalInterval)ap.ApprovedBEInterval] : null;
}
}
}
}
}
if (c.Pflegegrad.HasValue)
lblPflegegrad.Text = EnumTranslations.PflegegradTranslations[c.Pflegegrad];
else
{
lblPflegegrad.Text = "";
}
if (c.AssistanceBegin.HasValue)
{
lblBetreuungsbeginn.Text = String.Format("{0:dd.MM.yyyy}", c.AssistanceBegin);
}
else
{
lblBetreuungsbeginn.Text = "";
}
StringBuilder betreuungsartSb = new StringBuilder();
foreach (var v2o in c.ValueList)
{
if (v2o.Entry.Type == ValueListEntryType.CustomerCareType)
{
if (betreuungsartSb.Length > 0)
{
betreuungsartSb.Append(", ");
}
betreuungsartSb.Append(v2o.Entry.Value);
}
}
lblBetreuungsart.Text = betreuungsartSb.ToString();
lblMedikation.Text = c.Medication;
bindingSource1.DataSource = pRO;
}
}
}
}

View File

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

View File

@@ -0,0 +1,240 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms.VisualStyles;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.DefaultReports;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace LebensWert.Invoicing
{
public class CustomInvoiceCreation : InvoiceCreation
{
private const decimal AMOUNT_PER_KM_DEFAULT = 0.3m;
//private ServiceCategory fahrtkostenServiceCategory = null;
private DateTime? accountingPeriodStart = null;
private DateTime? accountingPeriodEnd = null;
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
IList<CompactSupportConceptDC> supportConceptList)
{
if (invoicePeriod != null)
{
accountingPeriodStart = invoicePeriod.StartDate;
accountingPeriodEnd = invoicePeriod.EndDate;
}
base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
}
public override void SetInvoiceItems(ServiceInvoice invoice, ServiceInvoicePeriod serviceInvoicePeriod,
SupportConceptApprovalPeriodDC supportConceptApprovalPeriod, CostBearer2SupportConcept cb2sc,
DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
{
Calculations calc = PluginLoader.FindClass<Calculations>(_SpecificID) ?? Calculations.GetInstance(_SpecificID);
List<ServiceRecordDC> serviceRecordsInPeriod = serviceRecords.Where(
i =>
{
bool valid = i.Start.Value.InBetween(serviceInvoicePeriod.Start.Value,
serviceInvoicePeriod.End.Value, true);
if (valid && serviceInvoicePeriod.SupportConceptApprovalPeriod != null &&
serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory != null)
valid = serviceInvoicePeriod.SupportConceptApprovalPeriod.ServiceCategory.Oid ==
i.ServiceDescription.Category.ServiceCategoryOid;
return valid;
}).ToList();
if (serviceRecordsInPeriod.Count > 0)
{
var itemList = CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, serviceInvoicePeriod.SupportConceptApprovalPeriod, calc);
serviceInvoicePeriod.InvoiceItemList.AddRange(itemList);
}
}
public override IList<InvoiceItem> CreateInvoiceItems(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod,
SupportConceptApprovalPeriod scap, BS.Shared.Services.Calculations calc)
{
var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc);
var fitem = CreateFahrtkostenZoneItem(serviceRecordsInPeriod, invoicePeriod, scap);
if (fitem != null)
list.Add(fitem);
fitem = CreateFahrtkostenItem(serviceRecordsInPeriod, scap);
if (fitem != null)
list.Add(fitem);
return list;
}
private InvoiceItem CreateFahrtkostenZoneItem(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap)
{
foreach (var sa in scap.CostBearer2SupportConcept.SupportConcept.ServiceAccountings)
{
if (sa.ServiceDescription != null && sa.ServiceDescription.Name.Contains("Zone"))
{
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(sa.ServiceDescription.CostRatePeriods);
var crp = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, invoicePeriod.StartDate);
if (crp != null && crp.CostRateValue.HasValue)
{
int count = 0;
foreach (var sr in serviceRecordsInPeriod)
{
if (!sr.ServiceDescription.CategoryName.Contains("Fahrt"))
count++;
}
var ii = new InvoiceItem();
ii.UnitCount = count;
ii.ItemDescription = sa.ServiceDescription.Name;
if (!ii.ItemDescription.Contains("Fahrtkosten"))
ii.ItemDescription = "Fahrtkosten " + sa.ServiceDescription.Name;
ii.UnitDescription = "Kostenpauschale (je Kontakt)";
ii.AmountPerUnit = crp.CostRateValue.Value;
ii.ItemPeriodStart = accountingPeriodStart;
ii.ItemPeriodEnd = accountingPeriodEnd;
ii.AmountTotal = Math.Round(ii.AmountPerUnit.Value * ii.UnitCount.Value, 2, MidpointRounding.AwayFromZero);
ii.GrossAmountTotal = ii.AmountTotal;
return ii;
}
}
}
return null;
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
var invoiceItem = base.CreateInvoiceItem(iServiceRecord, scap, calc);
if (iServiceRecord != null)
{
var cat = iServiceRecord.ServiceDescription.CategoryName;
var desc = iServiceRecord.ServiceDescription.Name;
if (cat == "Fachleistungsstunde")
{
invoiceItem.ItemDescription = "Direkte Leistungen";
invoiceItem.UnitDescription = "Fachleistungsstunde (FLS)";
}
else if (cat == "Fahrtkosten")
{
return null;
if (desc.Contains("Zone"))
{
invoiceItem.ItemDescription = "Fahrtkosten " + desc;
invoiceItem.UnitDescription = "Kostenpauschale (je Kontakt)";
}
else
{
invoiceItem.ItemDescription = "Fahrtkosten";
invoiceItem.UnitDescription = "Kilometerpauschale (je km)";
}
}
else
{
invoiceItem.ItemDescription = desc;
invoiceItem.UnitDescription = "Stunde";
}
}
return invoiceItem;
}
private InvoiceItem CreateFahrtkostenItem(List<ServiceRecordDC> serviceRecords, SupportConceptApprovalPeriod scap)
{
decimal amountPerKm = AMOUNT_PER_KM_DEFAULT;
InvoiceItem ii = null;
foreach (var sr in serviceRecords)
{
if (sr.DistanceInMeter.HasValue && sr.DistanceInMeter > 0)
{
//String ma = sr.Employee.LastName;
if (ii == null)
{
ii = new InvoiceItem();
ii.UnitCount = 0;
ii.ItemDescription = "Fahrtkosten";
ii.UnitDescription = "Kilometerpauschale (je km)";
ii.AmountPerUnit = amountPerKm;
ii.ItemPeriodStart = accountingPeriodStart;
ii.ItemPeriodEnd = accountingPeriodEnd;
}
ii.UnitCount += sr.DistanceInMeter;
}
}
if (ii != null)
{
if (ii.UnitCount.HasValue)
{
ii.AmountTotal = Math.Round(ii.AmountPerUnit.Value * ii.UnitCount.Value, 2, MidpointRounding.AwayFromZero);
ii.GrossAmountTotal = ii.AmountTotal;
}
}
return ii;
}
//public override void CheckMaxApprovedAmount(ServiceInvoice invoice, ServiceInvoicePeriod sip, SupportConceptApprovalPeriodDC scap,
//CostBearer2SupportConcept costBearer2SupportConcept, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
//{
//do nothing
// if (sip.ApprovedHours.HasValue && !scap.IsApprovedBEShifting)
// {
// decimal totalHours = 0;
// foreach (var ii in sip.InvoiceItemList.Where(ii => ii.UnitCount.HasValue))
// {
// if (ii.ItemDescription != "Fahrten mit Klienten")
// {
// if (totalHours + ii.UnitCount.Value > sip.ApprovedHours)
// {
// ii.UnitCount = sip.ApprovedHours.Value - totalHours;
// if (ii.AmountPerUnit.HasValue)
// {
// ii.AmountTotal = ii.AmountPerUnit.Value*ii.UnitCount;
// ii.GrossAmountTotal = ii.AmountTotal;
// }
// totalHours = sip.ApprovedHours.Value;
// }
// else
// {
// totalHours += ii.UnitCount.Value;
// }
// }
// }
// }
//}
public override string GetSummaryItemKey(SupportConceptApprovalPeriod scap, InvoiceItem iitem, bool summaryPerMonth)
{
return String.Format("{0}_{1}_{2:yyyyMM}_{3}", iitem.AmountPerUnit, iitem.RateFactor, iitem.ItemPeriodStart, iitem.ItemDescription);
}
//public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList,
// DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc, bool summaryPerMonth, bool addRateFactorToUnitCount)
//{
// var items = base.CreateSummaryInvoiceItems(itemList, invoicePeriod, scap, calc, summaryPerMonth, addRateFactorToUnitCount);
// foreach (var ii in items)
// {
// }
// return items;
//}
}
}

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Services;
namespace LebensWert.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
return new CustomInvoiceCreation();
}
}
}

View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{09BA6418-1FC2-4B45-8CE0-BB9C24499442}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LebensWert</RootNamespace>
<AssemblyName>5478434972_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomerDataReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="CustomerDataReport.Designer.cs">
<DependentUpon>CustomerDataReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReport.Designer.cs">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="CustomerDataReport.resx">
<DependentUpon>CustomerDataReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

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

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,190 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace LebensWert
{
public partial class Quittierungsbeleg : XtraReport, IBeWoReport<ServicesOverviewRO>
{
public Quittierungsbeleg()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
// Get calling method name
//StackTrace stackTrace = new StackTrace();
//Debug.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);
bool hatGruppen = false;
//if (pRO == null)
// return;
double minuten = 0;
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (var sd in pRO.Services)
{
if (sd.IsBillable && !sd.ServiceCategory.Contains("Fahrt")) // AB: ich bin mir nicht sicher ob die "Fahrt" hier noch maßgeblich ist...
{
minuten += sd.Minutes;
ServicesOverviewRO.CreateSignatureString(sd);
sd.Notice5 = "F";
if (sd.ServiceDescription.Contains("ear"))
sd.Notice5 = "E";
else if (sd.IsGroup)
{
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
hatGruppen = true;
sd.Notice5 = "GR";
}
servicesBillable.Add(sd);
}
}
pRO.Services = servicesBillable;
}
pRO.TotalFLMBillable = minuten;
if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes))
{
lblHatAbwesenheiten.Text = "X";
}
if (!hatGruppen)
{
lblHatGruppen.Text = "X";
}
ErstelleAbwesenheitenTabelle(pRO);
bindingSource1.DataSource = pRO;
}
private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo)
{
if (pRo.Abwesenheiten != null)
{
int newRows = 0;
int index = 1;
foreach (var at in pRo.Abwesenheiten)
{
DevExpress.XtraReports.UI.XRTableRow row = null;
if (index < xrTableAbwesenheiten.Rows.Count)
{
row = xrTableAbwesenheiten.Rows[index];
}
else
{
row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]);
newRows++;
}
row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start);
int? days = null;
if (at.End.HasValue)
{
row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End);
days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1;
}
else
{
row.Cells[1].Text = "unbekannt";
}
row.Cells[2].Text = String.Format("{0:0}", days);
index++;
}
}
}
private void picSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
XRPictureBox xrBox = sender as XRPictureBox;
//var test = this.GetCurrent
string base64String = xrBox.Tag as string;
if (!String.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
Image img = ByteArrayToImage(binData);
xrBox.Image = Utils.CropImage(img);
}
else
{
xrBox.Image = null;
}
}
// TODO: Wie anzeigen? Alle?
private void EmployeeSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
return;
if(sender is XRPictureBox pictureBox)
{
var base64String = pictureBox.Tag as string;
if(!string.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binaryData = Convert.FromBase64String(base64Data);
var image = ByteArrayToImage(binaryData);
pictureBox.Image = image;
}
else
{
pictureBox.Image = null;
}
}
}
// TODO: Wie anzeigen? Alle?
// TODO: Visibile der Datumstextboxen auf true setzen!
private void CustomerSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
return;
if(sender is XRPictureBox pictureBox)
{
var base64String = pictureBox.Tag as string;
if(!string.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binaryData = Convert.FromBase64String(base64Data);
var image = ByteArrayToImage(binaryData);
pictureBox.Image = image;
}
else
{
pictureBox.Image = null;
}
}
}
public Image ByteArrayToImage(byte[] byteArrayIn)
{
using(var memoryStream = new MemoryStream(byteArrayIn))
{
return Image.FromStream(memoryStream);
}
}
}
}

View File

@@ -0,0 +1,129 @@
<?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>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 17</value>
</metadata>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAcwAyADIAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXABmAHMAMgAyAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgBzADIAMgBcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgBzADIAMgBcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADIAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADIAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAIABpAG0AIABBAGIAcgBlAGMAaABuAHUAbgBnAHMAegBlAGkAdAByAGEAdQBtAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAcwAyADIAXABjAGYAMQAgAEsAZQBpAG4AZQAgAEcAcgB1AHAAcABlAG4AYQBuAGcAZQBiAG8AdABlACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
</root>

View File

@@ -0,0 +1,763 @@
using BeWo.Report.ReportObjects;
namespace LebensWert
{
partial class ServiceInvoiceReport
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceInvoiceReport));
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrRichText3 = new DevExpress.XtraReports.UI.XRRichText();
this.xrRichText2 = new DevExpress.XtraReports.UI.XRRichText();
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrRichText4 = new DevExpress.XtraReports.UI.XRRichText();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.lblZeitraum = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = 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.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = 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();
this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel16 = 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);
((System.ComponentModel.ISupportInitialize)(this.xrRichText3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).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)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// ReportHeader
//
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
this.ReportHeader.HeightF = 44.16666F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRateFactorNull.Name = "ruleRateFactorNull";
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 60F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrRichText3,
this.xrRichText2,
this.xrRichText1});
this.bottomMarginBand1.HeightF = 91F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// xrRichText3
//
this.xrRichText3.Font = new System.Drawing.Font("Calibri", 9F);
this.xrRichText3.LocationFloat = new DevExpress.Utils.PointFloat(457.991F, 10.00005F);
this.xrRichText3.Name = "xrRichText3";
this.xrRichText3.SerializableRtfString = resources.GetString("xrRichText3.SerializableRtfString");
this.xrRichText3.SizeF = new System.Drawing.SizeF(192.009F, 70.88824F);
this.xrRichText3.StylePriority.UseBackColor = false;
this.xrRichText3.StylePriority.UseFont = false;
//
// xrRichText2
//
this.xrRichText2.Font = new System.Drawing.Font("Calibri", 9F);
this.xrRichText2.LocationFloat = new DevExpress.Utils.PointFloat(219.7952F, 10.0001F);
this.xrRichText2.Name = "xrRichText2";
this.xrRichText2.SerializableRtfString = resources.GetString("xrRichText2.SerializableRtfString");
this.xrRichText2.SizeF = new System.Drawing.SizeF(217.5381F, 70.88824F);
this.xrRichText2.StylePriority.UseBackColor = false;
this.xrRichText2.StylePriority.UseFont = false;
//
// xrRichText1
//
this.xrRichText1.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(21.78448F, 9.999974F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(159.6014F, 70.88824F);
this.xrRichText1.StylePriority.UseBackColor = false;
this.xrRichText1.StylePriority.UseFont = false;
//
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrRichText4,
this.xrLabel13,
this.xrLabel12,
this.xrLabel11,
this.xrLabel10,
this.xrLabel6,
this.xrLabel7,
this.xrLabel4,
this.xrLabel3,
this.xrLabel2,
this.lblZeitraum,
this.xrLabel8});
this.Page1.Font = new System.Drawing.Font("Calibri", 11F);
this.Page1.HeightF = 375.9519F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// xrRichText4
//
this.xrRichText4.Font = new System.Drawing.Font("Arial", 8F);
this.xrRichText4.LocationFloat = new DevExpress.Utils.PointFloat(412.028F, 0F);
this.xrRichText4.Name = "xrRichText4";
this.xrRichText4.SerializableRtfString = resources.GetString("xrRichText4.SerializableRtfString");
this.xrRichText4.SizeF = new System.Drawing.SizeF(254.972F, 198.9583F);
this.xrRichText4.StylePriority.UseBackColor = false;
this.xrRichText4.StylePriority.UseFont = false;
//
// xrLabel13
//
this.xrLabel13.BackColor = System.Drawing.Color.Transparent;
this.xrLabel13.CanShrink = true;
this.xrLabel13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerReferenceNumber")});
this.xrLabel13.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold);
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(268.7499F, 306.7099F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(268.75F, 20.00002F);
this.xrLabel13.StylePriority.UseBackColor = false;
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.WordWrap = false;
//
// xrLabel12
//
this.xrLabel12.BackColor = System.Drawing.Color.Transparent;
this.xrLabel12.CanShrink = true;
this.xrLabel12.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold);
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(268.75F, 286.7099F);
this.xrLabel12.Name = "xrLabel12";
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel12.SizeF = new System.Drawing.SizeF(336.2084F, 20F);
this.xrLabel12.StylePriority.UseBackColor = false;
this.xrLabel12.StylePriority.UseFont = false;
this.xrLabel12.Text = "[CustomerSalutation] [CustomerLastName]";
this.xrLabel12.WordWrap = false;
//
// xrLabel11
//
this.xrLabel11.BackColor = System.Drawing.Color.Transparent;
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("Calibri", 12F);
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(268.75F, 266.7099F);
this.xrLabel11.Name = "xrLabel11";
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(268.75F, 20.00002F);
this.xrLabel11.StylePriority.UseBackColor = false;
this.xrLabel11.StylePriority.UseFont = false;
this.xrLabel11.WordWrap = false;
//
// xrLabel10
//
this.xrLabel10.BackColor = System.Drawing.Color.Transparent;
this.xrLabel10.CanShrink = true;
this.xrLabel10.Font = new System.Drawing.Font("Calibri", 12F);
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0F, 306.7098F);
this.xrLabel10.Multiline = true;
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(268.75F, 20F);
this.xrLabel10.StylePriority.UseBackColor = false;
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "Aktenzeichen (Az.):";
this.xrLabel10.WordWrap = false;
//
// xrLabel6
//
this.xrLabel6.Font = new System.Drawing.Font("Calibri", 8.25F, System.Drawing.FontStyle.Underline);
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(1.589457E-05F, 10.00001F);
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(317F, 29.99999F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.Text = "LebensWertAuf dem Bruche 4 31832 Springe";
//
// xrLabel7
//
this.xrLabel7.Font = new System.Drawing.Font("Calibri", 11F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(1.589457E-05F, 39.99999F);
this.xrLabel7.Multiline = true;
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" +
"tStreet]\r\n[RecipientPostCodeAndTown]";
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new System.Drawing.Font("Calibri", 12F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 286.7098F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(268.75F, 20F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "Kunde:";
this.xrLabel4.WordWrap = false;
//
// xrLabel3
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Calibri", 12F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 266.7099F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(268.75F, 20.00002F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Rechnungsnummer:";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Calibri", 14F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 246.7098F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "Rechnung";
this.xrLabel2.WordWrap = false;
//
// lblZeitraum
//
this.lblZeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 358.9519F);
this.lblZeitraum.Name = "lblZeitraum";
this.lblZeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblZeitraum.SizeF = new System.Drawing.SizeF(404.6736F, 17F);
this.lblZeitraum.StylePriority.UseFont = false;
this.lblZeitraum.Text = "Leistungszeitraum ";
//
// xrLabel8
//
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(367.0001F, 223.7098F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(283F, 23F);
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "Datum: [InvoiceDate]";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport2});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.Detail1.HeightF = 25F;
this.Detail1.Name = "Detail1";
//
// xrTable5
//
this.xrTable5.Font = new System.Drawing.Font("Calibri", 11F);
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(677F, 25F);
this.xrTable5.StylePriority.UseFont = false;
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell32,
this.xrTableCell37,
this.xrTableCell35,
this.xrTableCell33,
this.xrTableCell36,
this.xrTableCell34});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 1D;
//
// xrTableCell32
//
this.xrTableCell32.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell32.BorderColor = System.Drawing.Color.Black;
this.xrTableCell32.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 2, 2, 2, 100F);
this.xrTableCell32.StylePriority.UseBackColor = false;
this.xrTableCell32.StylePriority.UseBorderColor = false;
this.xrTableCell32.StylePriority.UseBorders = false;
this.xrTableCell32.StylePriority.UsePadding = false;
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "Pos.";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell32.Weight = 0.22156574859897477D;
//
// xrTableCell37
//
this.xrTableCell37.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell37.BorderColor = System.Drawing.Color.Black;
this.xrTableCell37.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell37.StylePriority.UseBackColor = false;
this.xrTableCell37.StylePriority.UseBorderColor = false;
this.xrTableCell37.StylePriority.UseBorders = false;
this.xrTableCell37.StylePriority.UsePadding = false;
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Leistung";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 1.1292466494586828D;
//
// xrTableCell35
//
this.xrTableCell35.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell35.BorderColor = System.Drawing.Color.Black;
this.xrTableCell35.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell35.StylePriority.UseBackColor = false;
this.xrTableCell35.StylePriority.UseBorderColor = false;
this.xrTableCell35.StylePriority.UseBorders = false;
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "Einheit";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell35.Weight = 0.62038404872997244D;
//
// xrTableCell33
//
this.xrTableCell33.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell33.BorderColor = System.Drawing.Color.Black;
this.xrTableCell33.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell33.Name = "xrTableCell33";
this.xrTableCell33.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell33.StylePriority.UseBackColor = false;
this.xrTableCell33.StylePriority.UseBorderColor = false;
this.xrTableCell33.StylePriority.UseBorders = false;
this.xrTableCell33.StylePriority.UsePadding = false;
this.xrTableCell33.StylePriority.UseTextAlignment = false;
this.xrTableCell33.Text = "Satz";
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell33.Weight = 0.32127033447520253D;
//
// xrTableCell36
//
this.xrTableCell36.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell36.BorderColor = System.Drawing.Color.Black;
this.xrTableCell36.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell36.StylePriority.UseBackColor = false;
this.xrTableCell36.StylePriority.UseBorderColor = false;
this.xrTableCell36.StylePriority.UseBorders = false;
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.Text = "Anzahl";
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell36.Weight = 0.29018728497065593D;
//
// xrTableCell34
//
this.xrTableCell34.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.xrTableCell34.BorderColor = System.Drawing.Color.Black;
this.xrTableCell34.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell34.Name = "xrTableCell34";
this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 10, 2, 2, 100F);
this.xrTableCell34.StylePriority.UseBackColor = false;
this.xrTableCell34.StylePriority.UseBorderColor = false;
this.xrTableCell34.StylePriority.UseBorders = false;
this.xrTableCell34.StylePriority.UsePadding = false;
this.xrTableCell34.StylePriority.UseTextAlignment = false;
this.xrTableCell34.Text = "Gesamt";
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell34.Weight = 0.41734609759289204D;
//
// DetailReport2
//
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 = 29.56523F;
this.Detail3.Name = "Detail3";
//
// xrTable6
//
this.xrTable6.Font = new System.Drawing.Font("Calibri", 11F);
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 4.565228F);
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.xrTableCell40,
this.xrTableCell42,
this.xrTableCell43,
this.xrTableCell44,
this.xrTableCell45,
this.xrTableCell47});
this.xrTableRow25.Name = "xrTableRow25";
this.xrTableRow25.Weight = 1D;
//
// xrTableCell40
//
this.xrTableCell40.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell40.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell40.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AccountingPeriodStart")});
this.xrTableCell40.Name = "xrTableCell40";
this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 2, 2, 2, 100F);
this.xrTableCell40.StylePriority.UseBorderColor = false;
this.xrTableCell40.StylePriority.UseBorders = false;
this.xrTableCell40.StylePriority.UsePadding = false;
this.xrTableCell40.StylePriority.UseTextAlignment = false;
xrSummary1.FormatString = "{0:#}";
xrSummary1.Func = DevExpress.XtraReports.UI.SummaryFunc.RecordNumber;
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Report;
this.xrTableCell40.Summary = xrSummary1;
this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell40.Weight = 0.22156573346040265D;
//
// xrTableCell42
//
this.xrTableCell42.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell42.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
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.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.88626285817953465D;
//
// xrTableCell43
//
this.xrTableCell43.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell43.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitDescription", "{0:0.00}")});
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.UsePadding = false;
this.xrTableCell43.StylePriority.UseTextAlignment = false;
this.xrTableCell43.Text = "xrTableCell43";
this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell43.Weight = 0.86336756286109606D;
//
// xrTableCell44
//
this.xrTableCell44.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell44.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.AmountPerUnit", "{0:c} ")});
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.UsePadding = false;
this.xrTableCell44.StylePriority.UseTextAlignment = false;
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell44.Weight = 0.32127037907781042D;
//
// xrTableCell45
//
this.xrTableCell45.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell45.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.UnitCountString", "{0:0.00}")});
this.xrTableCell45.Name = "xrTableCell45";
this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell45.StylePriority.UseBorderColor = false;
this.xrTableCell45.StylePriority.UseBorders = false;
this.xrTableCell45.StylePriority.UsePadding = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
this.xrTableCell45.Text = "xrTableCell45";
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell45.Weight = 0.29018752287020477D;
//
// xrTableCell47
//
this.xrTableCell47.BorderColor = System.Drawing.Color.Transparent;
this.xrTableCell47.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
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.UsePadding = false;
this.xrTableCell47.StylePriority.UseTextAlignment = false;
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell47.Weight = 0.4173463719878816D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel14,
this.xrLabel16,
this.xrLabel5,
this.xrLabel1,
this.xrLabel9});
this.GroupFooter1.HeightF = 252.5903F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrLabel14
//
this.xrLabel14.Font = new System.Drawing.Font("Calibri", 11F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 158.1102F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(666.9999F, 21.96034F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "Quittierungsbelege befinden sich im Anhang dieser Rechnung.";
//
// xrLabel16
//
this.xrLabel16.Font = new System.Drawing.Font("Calibri", 11F);
this.xrLabel16.LocationFloat = new DevExpress.Utils.PointFloat(0F, 87.73562F);
this.xrLabel16.Name = "xrLabel16";
this.xrLabel16.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel16.SizeF = new System.Drawing.SizeF(666.9999F, 21.96034F);
this.xrLabel16.StylePriority.UseFont = false;
this.xrLabel16.Text = "Bitte überweisen Sie den Rechnungsbetrag auf das unten genannte Konto. ";
//
// xrLabel5
//
this.xrLabel5.BackColor = System.Drawing.Color.LightGray;
this.xrLabel5.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrLabel5.BorderWidth = 1F;
this.xrLabel5.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(1.135328E-05F, 20.41665F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(332.9583F, 21.46428F);
this.xrLabel5.StylePriority.UseBackColor = false;
this.xrLabel5.StylePriority.UseBorders = false;
this.xrLabel5.StylePriority.UseBorderWidth = false;
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.StylePriority.UsePadding = false;
this.xrLabel5.StylePriority.UseTextAlignment = false;
this.xrLabel5.Text = "Rechnungsbetrag";
this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrLabel1
//
this.xrLabel1.BackColor = System.Drawing.Color.LightGray;
this.xrLabel1.Borders = DevExpress.XtraPrinting.BorderSide.Top;
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("Calibri", 11F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(332.9583F, 20.41665F);
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;
//
// xrLabel9
//
this.xrLabel9.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Italic);
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 141.1102F);
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 = "Anmerkung:";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// ServiceInvoiceReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.Page1,
this.DetailReport});
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.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(75, 75, 60, 91);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrRichText3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).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)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel lblZeitraum;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
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 xrTableCell32;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
private DevExpress.XtraReports.UI.DetailBand Detail3;
private DevExpress.XtraReports.UI.XRTable xrTable6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell40;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell42;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell43;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell45;
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 xrLabel10;
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
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 xrLabel16;
private DevExpress.XtraReports.UI.XRRichText xrRichText1;
private DevExpress.XtraReports.UI.XRRichText xrRichText2;
private DevExpress.XtraReports.UI.XRRichText xrRichText3;
private DevExpress.XtraReports.UI.XRRichText xrRichText4;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
}
}

View File

@@ -0,0 +1,38 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
namespace LebensWert
{
public partial class ServiceInvoiceReport : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public ServiceInvoiceReport()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
//DateTime start = pRO.AccountingPeriodStart;
//DateTime end = pRO.AccountingPeriodEnd;
//if (start.Month == end.Month && start.Year == end.Year)
//{
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start);
// }
// else
// {
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end);
// }
string[] start = pRO.AccountingPeriodStart.ToString().Split(' ');
string[] ende = pRO.AccountingPeriodEnd.ToString().Split(' ');
lblZeitraum.Text += start[0] + " - " + ende[0];
this.bindingSource1.DataSource = pRO;
}
}
}

View File

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

View File

@@ -17,15 +17,15 @@ namespace LebenshilfeDuisburgAtz.Invoicing
foreach (var item in supportConcepts2ServiceRecords)
{
var csc = item.Key;
if (csc.CostBearer.Contains("(ATZ)"))
if (csc.CostBearer.Contains("(HPFF)"))
{
return new LHDuisburgAtzInvoiceCreation();
return new LHDuisburgHPFFInvoiceCreation();
}
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(csc.SupportConceptOid);
if (sc.Customer.Person.FirstNameLastName.Contains("(ATZ)"))
if (sc.Customer.Person.FirstNameLastName.Contains("(HPFF)"))
{
return new LHDuisburgAtzInvoiceCreation();
return new LHDuisburgHPFFInvoiceCreation();
}
}

View File

@@ -0,0 +1,18 @@
using BeWo.Data.Entities;
namespace LebenshilfeDuisburgAtz.Invoicing
{
public class LHDuisburgHPFFInvoiceCreation : LHDuisburgAtzDefaultInvoiceCreation
{
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "LH-IFF";
}
protected override void CreateItemTextForCategory(InvoiceItem ii, string cat, string catOriginal)
{
ii.ItemDescription = "HP-FF Fördereinheiten\nFrüherkennung und Frühförderung\ngemäß § 46 SGB IX";
}
}
}

View File

@@ -49,6 +49,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Invoicing\CustomInvoiceNumberGenerator.cs" />
<Compile Include="Invoicing\LHDuisburgHPFFInvoiceCreation.cs" />
<Compile Include="Invoicing\LHDuisburgAtzInvoiceCreation.cs" />
<Compile Include="Invoicing\LHDuisburgAtzIFFInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />

View File

@@ -39,6 +39,18 @@ namespace LebenshilfeDuisburgAtz
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAZ = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.txtBelegnr = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -70,25 +82,15 @@ namespace LebenshilfeDuisburgAtz
this.xrTableRow15 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -152,6 +154,8 @@ namespace LebenshilfeDuisburgAtz
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel8,
this.lblAZ,
this.xrTable2,
this.xrLabel4,
this.xrTable3,
@@ -161,6 +165,132 @@ namespace LebenshilfeDuisburgAtz
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// xrLabel8
//
this.xrLabel8.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 100F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(120.125F, 17F);
this.xrLabel8.StylePriority.UseFont = false;
this.xrLabel8.Text = "GP-Nr.:";
//
// lblAZ
//
this.lblAZ.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerReferenceNumber")});
this.lblAZ.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblAZ.LocationFloat = new DevExpress.Utils.PointFloat(120.1251F, 100F);
this.lblAZ.Multiline = true;
this.lblAZ.Name = "lblAZ";
this.lblAZ.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAZ.SizeF = new System.Drawing.SizeF(235.755F, 36.70664F);
this.lblAZ.StylePriority.UseFont = false;
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(427.0004F, 51.99998F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow3,
this.xrTableRow1});
this.xrTable2.SizeF = new System.Drawing.SizeF(270F, 48F);
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell11,
this.txtBelegnr});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.139636369834711D;
//
// xrTableCell11
//
this.xrTableCell11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell11.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell11.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.Text = "Belegnummer";
this.xrTableCell11.Weight = 1.4596787374581406D;
//
// txtBelegnr
//
this.txtBelegnr.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.txtBelegnr.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.txtBelegnr.Name = "txtBelegnr";
this.txtBelegnr.StylePriority.UseBackColor = false;
this.txtBelegnr.StylePriority.UseBorders = false;
this.txtBelegnr.Text = "[InvoiceNumber]";
this.txtBelegnr.Weight = 1.4596787374581406D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell8});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.139636369834711D;
//
// xrTableCell5
//
this.xrTableCell5.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell5.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell5.StylePriority.UseBorders = false;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.Text = "Datum";
this.xrTableCell5.Weight = 1.4596787374581406D;
//
// xrTableCell8
//
this.xrTableCell8.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.Text = "[InvoiceDate]";
this.xrTableCell8.Weight = 1.4596787374581406D;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell3});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.13963636983471098D;
//
// xrTableCell1
//
this.xrTableCell1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell1.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell1.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell1.StylePriority.UseBackColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Text = "Abrechnungsmonat";
this.xrTableCell1.Weight = 1.4596787374581406D;
//
// xrTableCell3
//
this.xrTableCell3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell3.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "AccountingPeriodStart", "{0:MMMM}")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.StylePriority.UseBackColor = false;
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.Weight = 1.4596787374581406D;
//
// xrLabel4
//
this.xrLabel4.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
@@ -255,7 +385,7 @@ namespace LebenshilfeDuisburgAtz
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(235.755F, 81.08164F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(235.755F, 75F);
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "[CustomerName]\r\ngeb. [CustomerBirthdate!dd.MM.yyyy]\r\n[CustomerStreet]\r\n[CustomerP" +
"ostalCode] [CustomerTown]";
@@ -465,110 +595,6 @@ namespace LebenshilfeDuisburgAtz
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableCell32.Weight = 0.206923076923077D;
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(427.0004F, 51.99998F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow3,
this.xrTableRow1});
this.xrTable2.SizeF = new System.Drawing.SizeF(270F, 48F);
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell11,
this.xrTableCell2});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.139636369834711D;
//
// xrTableCell11
//
this.xrTableCell11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell11.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell11.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.Text = "Belegnummer";
this.xrTableCell11.Weight = 1.4596787374581406D;
//
// xrTableCell2
//
this.xrTableCell2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell2.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.StylePriority.UseBackColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.Text = "[InvoiceNumber]";
this.xrTableCell2.Weight = 1.4596787374581406D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell8});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.139636369834711D;
//
// xrTableCell5
//
this.xrTableCell5.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell5.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell5.StylePriority.UseBorders = false;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.Text = "Datum";
this.xrTableCell5.Weight = 1.4596787374581406D;
//
// xrTableCell8
//
this.xrTableCell8.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.Text = "[InvoiceDate]";
this.xrTableCell8.Weight = 1.4596787374581406D;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell3});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.13963636983471098D;
//
// xrTableCell1
//
this.xrTableCell1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell1.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell1.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 0, 0, 0, 100F);
this.xrTableCell1.StylePriority.UseBackColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Text = "Abrechnungsmonat";
this.xrTableCell1.Weight = 1.4596787374581406D;
//
// xrTableCell3
//
this.xrTableCell3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.xrTableCell3.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "AccountingPeriodStart", "{0:MMMM}")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.StylePriority.UseBackColor = false;
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.Weight = 1.4596787374581406D;
//
// RechnungIFF
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -593,13 +619,13 @@ namespace LebenshilfeDuisburgAtz
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -648,12 +674,14 @@ namespace LebenshilfeDuisburgAtz
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell txtBelegnr;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel lblAZ;
}
}

View File

@@ -97,7 +97,10 @@ namespace LebenshilfeDuisburgAtz
}
}
sb.AppendLine("über Stadt Duisburg");
//sb.AppendLine("über Stadt Duisburg");
if (pRO.CustomerName.Contains("(HPFF)"))
txtBelegnr.Text = pRO.InvoiceNumber.Replace("-IFF", "-FF:");
sb.AppendLine(pRO.RecipientOrganisation);
sb.AppendLine(pRO.RecipientStreet);
sb.Append(pRO.RecipientPostCodeAndTown);

View File

@@ -122,7 +122,6 @@
<Compile Include="ServiceInvoiceReportFF.Designer.cs">
<DependentUpon>ServiceInvoiceReportFF.cs</DependentUpon>
</Compile>
<Compile Include="LHDuisburgReportCreator.cs" />
<Compile Include="QuittierungsbelegHPFH.cs">
<SubType>Component</SubType>
</Compile>

View File

@@ -55,6 +55,12 @@
<Compile Include="QuittierungsbelegMitDatum.Designer.cs">
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
@@ -80,6 +86,10 @@
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,221 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.DataContracts;
namespace Neustart
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SettlementRO>
{
public Spitzabrechnung()
{
InitializeComponent();
}
public void SetReportDataSource(SettlementRO pRO)
{
bool isDefaultSpitzabrechnung = false;
if (String.IsNullOrEmpty(pRO.Notice))
{
lblNotice.Visible = false;
}
if (pRO.InvoiceItems != null && pRO.InvoiceItems.Count == 1)
{
var ii = pRO.InvoiceItems[0];
if ((ii.ItemDescription == "Spitzabrechung" || ii.ItemDescription == "Spitzabrechnung") && ii.GrossAmountTotal == null && ii.RateFactor == null)
{
isDefaultSpitzabrechnung = true;
}
}
if (!isDefaultSpitzabrechnung)
{
if (pRO.DifferentHourlyRateCount > 0 && pRO.HourlyRateNew.HasValue)
{
isDefaultSpitzabrechnung = true;
}
}
if (isDefaultSpitzabrechnung)
{
//UpdateAbrechnungsFelder(pRO);
pRO.InvoiceItems = CreateDefaultSpitzabrechnungInvoiceItems(pRO);
}
else
{
var id = GetCustomerId(pRO);
if (id == "LWLNEU")
{
pRO.RateFactorText = null;
pRO.RateFactorText2 = null;
if (pRO.InvoiceItems != null)
{
foreach (var ii in pRO.InvoiceItems)
{
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS x {3:c}",
ii.ItemPeriodStart, ii.ItemPeriodEnd, ii.UnitCount, ii.AmountPerUnit);
}
}
}
else
{
if (pRO.InvoiceItems != null)
{
foreach (var ii in pRO.InvoiceItems)
{
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS {3}x {4:c}",
ii.ItemPeriodStart, ii.ItemPeriodEnd,
ii.UnitCount, ii.RateFactor == 0 ? "" : "x " + pRO.RateFactorText2 + " ",
ii.AmountPerUnit);
}
}
}
}
this.bindingSource1.DataSource = pRO;
}
private String GetCustomerId(SettlementRO pRO)
{
var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(pRO.CostBearer2SupportConceptOid);
return cb2sc.CostBearer.ID;
}
private IList<InvoiceItemDC> CreateDefaultSpitzabrechnungInvoiceItems(SettlementRO pRO)
{
IList<InvoiceItemDC> itemList = new List<InvoiceItemDC>();
if (pRO.DifferentHourlyRateCount == 3)
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString,
pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatz3 * pRO.RateFactor * pRO.HourlyRate3
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString,
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * pRO.RateFactor * pRO.HourlyRateOld
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
else if (pRO.DifferentHourlyRateCount == 2)
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString,
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
else
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
return itemList;
}
private void UpdateAbrechnungsFelder(SettlementRO pRO)
{
if (pRO.DifferentHourlyRateCount == 3)
{
//Erbrachte Leistungen (FLS) - bis [HourlyRateOldEndDateString] à [HourlyRateOldString] €
pRO.Abrechnungstext1 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString);
pRO.Abrechnungstext1 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3);
//[AccountingStartDateString] - [HourlyRate3EndDateString] sind [RecordedFLSWithHourlyRate3String] Std. x [HourlyRate3String] € =";
pRO.Betrag1 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatz3 * (decimal)pRO.RateFactor * pRO.HourlyRate3);
pRO.Abrechnungstext2 = String.Format("{0} bis {1}",
pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString);
pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld);
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
else if (pRO.DifferentHourlyRateCount == 2)
{
pRO.Abrechnungstext2 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString);
pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld);
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
else
{
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
}
}
}

View File

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

View File

@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace PZDDuesseldorf.Invoicing
{
public class CustomAssistenzInvoiceCreation : InvoiceCreation
{
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "Assistenz";
invoice.InvoiceBase.InvoiceTypeText = "Assistenzleistung";
}
public override void SetAmountAdvancePayments(ServiceInvoice invoice)
{
//do nothing
}
public override void SetAmountEquityContribution(ServiceInvoice invoice)
{
//do nothing
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
if (!iServiceRecord.ServiceDescription.CategoryName.Contains("Assistenz"))
return null;
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
DateTime start = ii.ItemPeriodStart.Value;
decimal preisAssistenz = 0;
var cat = DAOFactory.SearchDAO.FindServiceCategoryByName("Assistenzleistungen");
if (cat != null)
{
var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods);
var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, start);
if (cp != null && cp.CostRateValue.HasValue)
preisAssistenz = (decimal)cp.CostRateValue;
ii.AmountPerUnit = preisAssistenz;
ii.RateFactor = null;
ii.AmountTotal = preisAssistenz * ii.UnitCount;
ii.GrossAmountTotal = preisAssistenz * ii.UnitCount;
}
return ii;
}
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
Calculations calc, bool summaryPerMonth, bool addRateFactorToUnitCount)
{
return base.CreateSummaryInvoiceItems(itemList, invoicePeriod, scap, calc, false, true);
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace PZDDuesseldorf.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
foreach (var list in supportConcepts2ServiceRecords.Values)
{
foreach (var sr in list)
{
var sd = sr.ServiceDescription.Category;
var ic = GetInvoiceCreatorForCategory(sd);
if (ic != null)
return ic;
}
}
return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
private InvoiceCreation GetInvoiceCreatorForCategory(ServiceCategoryDC sd)
{
if (sd != null && !String.IsNullOrEmpty(sd.Name))
{
String cat = sd.Name.ToLower().Trim();
if (cat.IndexOf("assistenz") >= 0)
return new CustomAssistenzInvoiceCreation();
}
return null;
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace PZDDuesseldorf.Invoicing
{
public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation
{
public override bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
var relDC = c2s.MapToNewDC();
DateTime start = si.AccountingPeriodStart.Value.Date;
DateTime end = si.AccountingPeriodEnd.Value.Date;
if (c2s.SupportConcept.Customer.TerminationDate.HasValue &&
c2s.SupportConcept.Customer.TerminationDate.Value < end)
end = c2s.SupportConcept.Customer.TerminationDate.Value;
if (end > DateTime.Now)
{
var srList = c2s.ServiceRecords;
var max = srList.Max(s => s.End);
if (max.HasValue && max < end)
end = max.Value;
}
var hourlyRatesInSpanList = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.HourlyRate, start, end).ToList();
if (hourlyRatesInSpanList.Count > 3)
return false;
var factorInSpanList = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.RateFactor, start, end).ToList();
if (factorInSpanList.Count > 1)
return false;
return true;
}
public override bool IsServiceRecordBillable(ServiceRecord iRecord)
{
if (iRecord.ServiceDescription.ServiceCategory.Name.Contains("Assistenz"))
return false;
return true;
}
}
}

View File

@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5C13AB6D-5CB0-4360-A7FC-95DC2686E64D}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PZDDuesseldorf</RootNamespace>
<AssemblyName>5381886394_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Invoicing\AssistenzInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
<Compile Include="Rechung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Rechung.Designer.cs">
<DependentUpon>Rechung.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Rechung.resx">
<DependentUpon>Rechung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40D8B312-EA64-49E3-A31A-5E57ED4D5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

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

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace PZDDuesseldorf
{
public partial class Quittierungsbeleg : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public Quittierungsbeleg()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
bool hatGruppen = false;
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (var sd in pRO.Services)
{
if (sd.IsBillable)
{
ServicesOverviewRO.CreateSignatureString(sd);
if (sd.IsGroup)
{
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
hatGruppen = true;
}
servicesBillable.Add(sd);
}
}
pRO.Services = servicesBillable;
}
if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes))
{
lblHatAbwesenheiten.Text = "X";
}
if (!hatGruppen)
{
lblHatGruppen.Text = "X";
}
ErstelleAbwesenheitenTabelle(pRO);
bindingSource1.DataSource = pRO;
}
private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo)
{
if (pRo.Abwesenheiten != null)
{
int newRows = 0;
int index = 1;
foreach (var at in pRo.Abwesenheiten)
{
DevExpress.XtraReports.UI.XRTableRow row = null;
if (index < xrTableAbwesenheiten.Rows.Count)
{
row = xrTableAbwesenheiten.Rows[index];
}
else
{
row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]);
newRows++;
}
row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start);
int? days = null;
if (at.End.HasValue)
{
row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End);
days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1;
}
else
{
row.Cells[1].Text = "unbekannt";
}
row.Cells[2].Text = String.Format("{0:0}", days);
index++;
}
if (newRows > 0)
{
lblUnterschriftKlient.Top += newRows * 20;
lblUnterschriftMitarbeiter.Top += newRows * 20;
}
}
}
// TODO: Wie anzeigen? Alle?
private void EmployeeSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
return;
if(sender is XRPictureBox pictureBox)
{
var base64String = pictureBox.Tag as string;
if(!string.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binaryData = Convert.FromBase64String(base64Data);
var image = ByteArrayToImage(binaryData);
pictureBox.Image = image;
}
else
{
pictureBox.Image = null;
}
}
}
// TODO: Wie anzeigen? Alle?
// TODO: Visibile der Datumstextboxen auf true setzen!
private void CustomerSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
return;
if(sender is XRPictureBox pictureBox)
{
var base64String = pictureBox.Tag as string;
if(!string.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binaryData = Convert.FromBase64String(base64Data);
var image = ByteArrayToImage(binaryData);
pictureBox.Image = image;
}
else
{
pictureBox.Image = null;
}
}
}
private void picSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
XRPictureBox xrBox = sender as XRPictureBox;
//var test = this.GetCurrent
string base64String = xrBox.Tag as string;
if (!String.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
Image img = ByteArrayToImage(binData);
xrBox.Image = Utils.CropImage(img);
}
else
{
xrBox.Image = null;
}
}
public Image ByteArrayToImage(byte[] byteArrayIn)
{
using(var memoryStream = new MemoryStream(byteArrayIn))
{
return Image.FromStream(memoryStream);
}
}
}
}

View File

@@ -0,0 +1,129 @@
<?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>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 17</value>
</metadata>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXAB1AGwAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAfQB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQBcAHAAYQByAH0A</value>
</data>
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEcAcgB1AHAAcABlAG4AYQBuAGcAZQBiAG8AdABlAH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
</root>

View File

@@ -0,0 +1,686 @@
using BeWo.Report.ReportObjects;
namespace PZDDuesseldorf
{
partial class Rechnung
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Rechnung));
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAbrechnungstext = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.RecipientPostCodeAndTown = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel_RecipientStreet = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel_RecipientDivision = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel_RecipientContactPerson = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
this.xrLabel18 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow20 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow21 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow24 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell31 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.PageFooter = new DevExpress.XtraReports.UI.PageFooterBand();
this.xrLabel16 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrLabel17 = new DevExpress.XtraReports.UI.XRLabel();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel17});
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
this.ReportHeader.HeightF = 74.25F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRateFactorNull.Name = "ruleRateFactorNull";
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 100F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 90F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel9,
this.lblAbrechnungstext,
this.xrLabel1,
this.xrLabel6,
this.xrLabel8,
this.xrTable1,
this.RecipientPostCodeAndTown,
this.xrLabel_RecipientStreet,
this.xrLabel_RecipientDivision,
this.xrLabel_RecipientContactPerson,
this.xrLabel7,
this.xrLabel4,
this.xrLabel3,
this.xrLabel2,
this.xrLabel5});
this.Page1.Font = new System.Drawing.Font("Arial", 10F);
this.Page1.HeightF = 457.5766F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// xrLabel9
//
this.xrLabel9.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrLabel9.CanShrink = true;
this.xrLabel9.Font = new System.Drawing.Font("Arial", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 20.00001F);
this.xrLabel9.Name = "xrLabel9";
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel9.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel9.SizeF = new System.Drawing.SizeF(335.7499F, 17F);
this.xrLabel9.StylePriority.UseBorders = false;
this.xrLabel9.StylePriority.UseFont = false;
this.xrLabel9.Text = "PZD Pflegezentrum Düsseldorf GmbH - Gumbertstr. 199 - 40229 Düsseldorf";
//
// lblAbrechnungstext
//
this.lblAbrechnungstext.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.lblAbrechnungstext.LocationFloat = new DevExpress.Utils.PointFloat(0.001017253F, 404.9133F);
this.lblAbrechnungstext.Name = "lblAbrechnungstext";
this.lblAbrechnungstext.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAbrechnungstext.SizeF = new System.Drawing.SizeF(530.5417F, 17F);
this.lblAbrechnungstext.StylePriority.UseFont = false;
this.lblAbrechnungstext.Text = "1 Stunden * 20,20 € = 20,20 €";
//
// xrLabel1
//
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceBase.InvoiceItems.GrossAmountTotal")});
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(568.0007F, 404.9133F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(100F, 23F);
this.xrLabel1.Text = "xrLabel1";
//
// xrLabel6
//
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0.000890096F, 333.2883F);
this.xrLabel6.Multiline = true;
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(642F, 52.4133F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.Text = resources.GetString("xrLabel6.Text");
//
// xrLabel8
//
this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(367.0005F, 187.4775F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(283F, 23F);
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "xrLabel8";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// xrTable1
//
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(367.0005F, 43F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow5,
this.xrTableRow3,
this.xrTableRow1,
this.xrTableRow8});
this.xrTable1.SizeF = new System.Drawing.SizeF(283F, 94F);
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.13245033112582783D;
//
// xrTableCell5
//
this.xrTableCell5.CanShrink = true;
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Ihr(e) Ansprechpartner(in):";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell5.Weight = 1D;
//
// xrTableRow5
//
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13});
this.xrTableRow5.Name = "xrTableRow5";
this.xrTableRow5.Weight = 0.13245033112582783D;
//
// xrTableCell13
//
this.xrTableCell13.CanShrink = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell13.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "[SenderContactPerson]";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell13.Weight = 1D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell8});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.13245033112582783D;
//
// xrTableCell8
//
this.xrTableCell8.CanShrink = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell8.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "[SenderContactPersonMail]";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell8.Weight = 1D;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.11258278145695365D;
//
// xrTableCell1
//
this.xrTableCell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "SenderContactPersonPhone")});
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.StylePriority.UseTextAlignment = false;
this.xrTableCell1.Text = "xrTableCell1";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell1.Weight = 1D;
//
// xrTableRow8
//
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell6});
this.xrTableRow8.Name = "xrTableRow8";
this.xrTableRow8.Weight = 0.11258278145695365D;
//
// xrTableCell6
//
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "Mobil: 0175 - 9487320";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell6.Weight = 1D;
//
// RecipientPostCodeAndTown
//
this.RecipientPostCodeAndTown.CanShrink = true;
this.RecipientPostCodeAndTown.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 111F);
this.RecipientPostCodeAndTown.Name = "RecipientPostCodeAndTown";
this.RecipientPostCodeAndTown.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.RecipientPostCodeAndTown.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.RecipientPostCodeAndTown.SizeF = new System.Drawing.SizeF(292F, 17F);
this.RecipientPostCodeAndTown.StylePriority.UseFont = false;
this.RecipientPostCodeAndTown.Text = "[RecipientPostCodeAndTown]";
//
// xrLabel_RecipientStreet
//
this.xrLabel_RecipientStreet.CanShrink = true;
this.xrLabel_RecipientStreet.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 94.00002F);
this.xrLabel_RecipientStreet.Name = "xrLabel_RecipientStreet";
this.xrLabel_RecipientStreet.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientStreet.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel_RecipientStreet.SizeF = new System.Drawing.SizeF(292F, 17F);
this.xrLabel_RecipientStreet.StylePriority.UseFont = false;
this.xrLabel_RecipientStreet.Text = "[RecipientStreet]";
//
// xrLabel_RecipientDivision
//
this.xrLabel_RecipientDivision.CanShrink = true;
this.xrLabel_RecipientDivision.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 77.00008F);
this.xrLabel_RecipientDivision.Name = "xrLabel_RecipientDivision";
this.xrLabel_RecipientDivision.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientDivision.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel_RecipientDivision.SizeF = new System.Drawing.SizeF(292F, 17F);
this.xrLabel_RecipientDivision.StylePriority.UseFont = false;
this.xrLabel_RecipientDivision.Text = "[RecipientDivision]";
//
// xrLabel_RecipientContactPerson
//
this.xrLabel_RecipientContactPerson.CanShrink = true;
this.xrLabel_RecipientContactPerson.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 60.00001F);
this.xrLabel_RecipientContactPerson.Name = "xrLabel_RecipientContactPerson";
this.xrLabel_RecipientContactPerson.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientContactPerson.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel_RecipientContactPerson.SizeF = new System.Drawing.SizeF(292F, 17F);
this.xrLabel_RecipientContactPerson.StylePriority.UseFont = false;
this.xrLabel_RecipientContactPerson.Text = "[RecipientContactPerson]";
//
// xrLabel7
//
this.xrLabel7.CanShrink = true;
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 43F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel7.SizeF = new System.Drawing.SizeF(292F, 17F);
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "[RecipientOrganisation]";
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0.0006357829F, 257.2917F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "[CustomerReferenceNumber]";
this.xrLabel4.WordWrap = false;
//
// xrLabel3
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0.0006357829F, 241.2917F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 16F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Abrechnung Unterstützende Assistenz für [CustomerSalutation] [CustomerName]";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0.0006357829F, 224.2917F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "Rechnung Nr. [InvoiceNumber]";
this.xrLabel2.WordWrap = false;
//
// xrLabel5
//
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0.0006357829F, 299.6216F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(317F, 17F);
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "Sehr geehrte Damen und Herren,";
//
// ReportFooter
//
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel18,
this.xrLabel11,
this.xrLabel12,
this.xrTable3,
this.xrLabel10});
this.ReportFooter.Font = new System.Drawing.Font("Arial", 10F);
this.ReportFooter.HeightF = 258.33F;
this.ReportFooter.Name = "ReportFooter";
this.ReportFooter.StylePriority.UseFont = false;
//
// xrLabel18
//
this.xrLabel18.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 0F);
this.xrLabel18.Name = "xrLabel18";
this.xrLabel18.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel18.SizeF = new System.Drawing.SizeF(649.9999F, 17F);
this.xrLabel18.StylePriority.UseFont = false;
this.xrLabel18.Text = "Bitte überweisen Sie den Betrag nach Prüfung der Endabrechnung auf das unten ange" +
"gebene Konto.";
//
// xrLabel11
//
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(583.0004F, 153.7917F);
this.xrLabel11.Name = "xrLabel11";
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(67F, 17F);
this.xrLabel11.StylePriority.UseFont = false;
this.xrLabel11.StylePriority.UseTextAlignment = false;
this.xrLabel11.Text = "Anlage";
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// xrLabel12
//
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(0F, 153.7917F);
this.xrLabel12.Name = "xrLabel12";
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel12.SizeF = new System.Drawing.SizeF(225F, 17F);
this.xrLabel12.StylePriority.UseFont = false;
this.xrLabel12.Text = "[CreatorName]";
//
// xrTable3
//
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 30.58332F);
this.xrTable3.Name = "xrTable3";
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow20,
this.xrTableRow21,
this.xrTableRow23,
this.xrTableRow24});
this.xrTable3.SizeF = new System.Drawing.SizeF(650F, 52F);
this.xrTable3.StylePriority.UseFont = false;
//
// xrTableRow20
//
this.xrTableRow20.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell16});
this.xrTableRow20.Name = "xrTableRow20";
this.xrTableRow20.Weight = 0.38095238095238093D;
//
// xrTableCell16
//
this.xrTableCell16.CanShrink = true;
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell16.StylePriority.UsePadding = false;
this.xrTableCell16.Text = "xrTableCell1";
this.xrTableCell16.Weight = 3D;
//
// xrTableRow21
//
this.xrTableRow21.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell18});
this.xrTableRow21.Name = "xrTableRow21";
this.xrTableRow21.Weight = 0.23809523809523808D;
//
// xrTableCell18
//
this.xrTableCell18.Name = "xrTableCell18";
this.xrTableCell18.Weight = 3D;
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell30});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 0.23809523809523803D;
//
// xrTableCell30
//
this.xrTableCell30.Name = "xrTableCell30";
this.xrTableCell30.Weight = 0.18181818181818182D;
//
// xrTableRow24
//
this.xrTableRow24.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell31});
this.xrTableRow24.Name = "xrTableRow24";
this.xrTableRow24.Weight = 0.38095238095238093D;
//
// xrTableCell31
//
this.xrTableCell31.CanShrink = true;
this.xrTableCell31.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FinalSentence")});
this.xrTableCell31.Name = "xrTableCell31";
this.xrTableCell31.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell31.StylePriority.UsePadding = false;
this.xrTableCell31.Text = "xrTableCell8";
this.xrTableCell31.Weight = 3D;
//
// xrLabel10
//
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0.0003814697F, 97.54168F);
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "Mit freundlichen Grüßen";
//
// PageFooter
//
this.PageFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel16,
this.xrLabel13,
this.xrLabel15,
this.xrLabel14});
this.PageFooter.HeightF = 90.74669F;
this.PageFooter.Name = "PageFooter";
//
// xrLabel16
//
this.xrLabel16.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel16.LocationFloat = new DevExpress.Utils.PointFloat(99.29266F, 63.49837F);
this.xrLabel16.Multiline = true;
this.xrLabel16.Name = "xrLabel16";
this.xrLabel16.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel16.SizeF = new System.Drawing.SizeF(99.29164F, 17.24834F);
this.xrLabel16.StylePriority.UseFont = false;
this.xrLabel16.Text = "133 5861 0686";
//
// xrLabel13
//
this.xrLabel13.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0.001017253F, 63.49837F);
this.xrLabel13.Multiline = true;
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(99.29164F, 17.24834F);
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.Text = "Steuernummer:";
//
// xrLabel15
//
this.xrLabel15.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel15.Multiline = true;
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel15.SizeF = new System.Drawing.SizeF(46.16664F, 45.37334F);
this.xrLabel15.StylePriority.UseFont = false;
this.xrLabel15.Text = "Bank: \r\nBIC: \r\nIBAN:";
//
// xrLabel14
//
this.xrLabel14.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(46.16664F, 0F);
this.xrLabel14.Multiline = true;
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(427.4167F, 45.37334F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "Deutsche Bank\r\nDEUTDEDBDUE\r\nDE50 3007 0024 0811 0470 00";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// xrLabel17
//
this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(193F, 28.625F);
this.xrLabel17.Multiline = true;
this.xrLabel17.Name = "xrLabel17";
this.xrLabel17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel17.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel17.SizeF = new System.Drawing.SizeF(292F, 17F);
this.xrLabel17.StylePriority.UseFont = false;
this.xrLabel17.Text = "\r\n";
//
// Rechnung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.Page1,
this.ReportFooter,
this.PageFooter});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new System.Drawing.Font("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(75, 74, 100, 90);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.XRLabel RecipientPostCodeAndTown;
private DevExpress.XtraReports.UI.XRLabel xrLabel_RecipientStreet;
private DevExpress.XtraReports.UI.XRLabel xrLabel_RecipientDivision;
private DevExpress.XtraReports.UI.XRLabel xrLabel_RecipientContactPerson;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow20;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow24;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
private DevExpress.XtraReports.UI.XRLabel lblAbrechnungstext;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.PageFooterBand PageFooter;
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRLabel xrLabel16;
private DevExpress.XtraReports.UI.XRLabel xrLabel17;
}
}

View File

@@ -0,0 +1,54 @@
using System;
using BeWo.Data.Access;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace PZDDuesseldorf
{
[IDSpecificClass(Identifier = "Assistenz")]
public partial class Rechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public Rechnung()
{
InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
DateTime start = pRO.AccountingPeriodStart;
DateTime end = pRO.AccountingPeriodEnd;
decimal hourlyRate = 0;
decimal rateFactor = 1;
decimal hours = 0;
if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
{
foreach (var p in pRO.ServiceInvoicePeriods)
{
if (p.ServiceInvoiceItems != null && p.ServiceInvoiceItems.Count > 0)
{
foreach (var i in p.ServiceInvoiceItems)
{
if (i.HourlyRate.HasValue)
hourlyRate = i.HourlyRate.Value;
if (i.Hours.HasValue)
hours += i.Hours.Value;
}
}
}
}
if (!String.IsNullOrEmpty(pRO.CustomerSalutation) && pRO.CustomerSalutation.ToLower() == "herr")
pRO.CustomerSalutation = "Herrn";
lblAbrechnungstext.Text = String.Format("{0:0.##} Stunden x {1:c} = {2}", hours, hourlyRate, pRO.NetClaim);
this.bindingSource1.DataSource = pRO;
}
}
}

View File

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

View File

@@ -0,0 +1,885 @@
using BeWo.Report.ReportObjects;
namespace PZDDuesseldorf
{
partial class ServiceInvoiceReport
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAbrechnungszeitraum = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow6 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel9 = 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.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell38 = 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();
this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// ReportHeader
//
this.ReportHeader.Font = new System.Drawing.Font("Verdana", 10F);
this.ReportHeader.HeightF = 0F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRateFactorNull.Name = "ruleRateFactorNull";
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 157.5F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 50F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel7,
this.xrLabel4,
this.xrLabel3,
this.xrLabel2,
this.xrLabel5,
this.xrLabel8,
this.lblAbrechnungszeitraum,
this.xrTable2});
this.Page1.Font = new System.Drawing.Font("Verdana", 10F);
this.Page1.HeightF = 354.0833F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// xrLabel7
//
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel7.Multiline = true;
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" +
"tStreet]\r\n[RecipientPostCodeAndTown]";
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 235F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "[CustomerReferenceNumber]";
this.xrLabel4.WordWrap = false;
//
// xrLabel3
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 215F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [CustomerSalutation] [CustomerName]";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 195F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "Rechnung Nr. [InvoiceNumber]";
this.xrLabel2.WordWrap = false;
//
// xrLabel5
//
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 297.5F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(317F, 17F);
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "Sehr geehrte Damen und Herren,";
//
// xrLabel8
//
this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(362.5F, 172F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(283F, 23F);
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "xrLabel8";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// lblAbrechnungszeitraum
//
this.lblAbrechnungszeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 322.5F);
this.lblAbrechnungszeitraum.Multiline = true;
this.lblAbrechnungszeitraum.Name = "lblAbrechnungszeitraum";
this.lblAbrechnungszeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAbrechnungszeitraum.SizeF = new System.Drawing.SizeF(642F, 31.58334F);
this.lblAbrechnungszeitraum.StylePriority.UseFont = false;
this.lblAbrechnungszeitraum.Text = "hiermit berechnen wir für den ... folgende erbrachte Tätigkeiten:";
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(362.5F, 0F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow5,
this.xrTableRow4,
this.xrTableRow3,
this.xrTableRow1,
this.xrTableRow6,
this.xrTableRow8});
this.xrTable2.SizeF = new System.Drawing.SizeF(283F, 134F);
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell4});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.13245033112582783D;
//
// xrTableCell4
//
this.xrTableCell4.CanShrink = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Ihr(e) Ansprechpartner(in):";
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell4.Weight = 1D;
//
// xrTableRow5
//
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13});
this.xrTableRow5.Name = "xrTableRow5";
this.xrTableRow5.Weight = 0.13245033112582783D;
//
// xrTableCell13
//
this.xrTableCell13.CanShrink = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell13.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "[SenderContactPerson]";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell13.Weight = 1D;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell11});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 0.13245033112582783D;
//
// xrTableCell11
//
this.xrTableCell11.CanShrink = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell11.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "[SenderContactPersonDivision]";
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell11.Weight = 1D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell8});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.13245033112582783D;
//
// xrTableCell8
//
this.xrTableCell8.CanShrink = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell8.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "[SenderContactPersonMail]";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell8.Weight = 1D;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.13245033112582783D;
//
// xrTableCell1
//
this.xrTableCell1.CanShrink = true;
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UseTextAlignment = false;
this.xrTableCell1.Text = "[SenderContactPersonPhone]";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell1.Weight = 1D;
//
// xrTableRow6
//
this.xrTableRow6.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2});
this.xrTableRow6.Name = "xrTableRow6";
this.xrTableRow6.Weight = 0.11258278145695365D;
//
// xrTableCell2
//
this.xrTableCell2.CanShrink = true;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell2.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "[SenderContactPersonFax]";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell2.Weight = 1D;
//
// xrTableRow8
//
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5});
this.xrTableRow8.Name = "xrTableRow8";
this.xrTableRow8.Weight = 0.11258278145695365D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.Weight = 1D;
//
// xrLabel15
//
this.xrLabel15.Font = new System.Drawing.Font("Verdana", 10F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 114.5833F);
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel15.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel15.StylePriority.UseFont = false;
this.xrLabel15.Text = "Mit freundlichen Grüßen";
//
// xrTable4
//
this.xrTable4.Font = new System.Drawing.Font("Verdana", 10F);
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 68.75F);
this.xrTable4.Name = "xrTable4";
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow10,
this.xrTableRow14});
this.xrTable4.SizeF = new System.Drawing.SizeF(650F, 26F);
this.xrTable4.StylePriority.UseFont = false;
//
// xrTableRow10
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell9});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.38095238095238093D;
//
// xrTableCell9
//
this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell9.StylePriority.UsePadding = false;
this.xrTableCell9.Text = "xrTableCell1";
this.xrTableCell9.Weight = 3D;
//
// xrTableRow14
//
this.xrTableRow14.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell12});
this.xrTableRow14.Name = "xrTableRow14";
this.xrTableRow14.Weight = 0.23809523809523808D;
//
// xrTableCell12
//
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Weight = 3D;
//
// xrLabel14
//
this.xrLabel14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CreatorName")});
this.xrLabel14.Font = new System.Drawing.Font("Verdana", 10F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 189.5833F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(225F, 17F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "[CreatorName]";
//
// xrLabel9
//
this.xrLabel9.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Italic);
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(0F, 43.75F);
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 = "Abschließende Bemerkungen:";
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport2});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.Detail1.HeightF = 25F;
this.Detail1.Name = "Detail1";
//
// xrTable5
//
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(677F, 25F);
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell32,
this.xrTableCell37,
this.xrTableCell35,
this.xrTableCell33,
this.xrTableCell36,
this.xrTableCell38,
this.xrTableCell34});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 1D;
//
// xrTableCell32
//
this.xrTableCell32.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell32.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell32.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell32.StylePriority.UseBackColor = false;
this.xrTableCell32.StylePriority.UseBorderColor = false;
this.xrTableCell32.StylePriority.UseBorders = false;
this.xrTableCell32.StylePriority.UsePadding = false;
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "Zeitraum";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell32.Weight = 0.62463077449375981D;
//
// xrTableCell37
//
this.xrTableCell37.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell37.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell37.StylePriority.UseBackColor = false;
this.xrTableCell37.StylePriority.UseBorderColor = false;
this.xrTableCell37.StylePriority.UseBorders = false;
this.xrTableCell37.StylePriority.UsePadding = false;
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Leistung";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 0.85081236260328186D;
//
// xrTableCell35
//
this.xrTableCell35.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell35.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell35.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell35.StylePriority.UseBackColor = false;
this.xrTableCell35.StylePriority.UseBorderColor = false;
this.xrTableCell35.StylePriority.UseBorders = false;
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "Satz";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell35.Weight = 0.23245943032832414D;
//
// xrTableCell33
//
this.xrTableCell33.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell33.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell33.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell33.Name = "xrTableCell33";
this.xrTableCell33.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell33.StylePriority.UseBackColor = false;
this.xrTableCell33.StylePriority.UseBorderColor = false;
this.xrTableCell33.StylePriority.UseBorders = false;
this.xrTableCell33.StylePriority.UsePadding = false;
this.xrTableCell33.StylePriority.UseTextAlignment = false;
this.xrTableCell33.Text = "Stunden";
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell33.Weight = 0.2893277257020575D;
//
// xrTableCell36
//
this.xrTableCell36.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell36.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell36.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell36.StylePriority.UseBackColor = false;
this.xrTableCell36.StylePriority.UseBorderColor = false;
this.xrTableCell36.StylePriority.UseBorders = false;
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.Text = "Betrag";
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell36.Weight = 0.26310971709438763D;
//
// xrTableCell38
//
this.xrTableCell38.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell38.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell38.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell38.Name = "xrTableCell38";
this.xrTableCell38.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell38.StylePriority.UseBackColor = false;
this.xrTableCell38.StylePriority.UseBorderColor = false;
this.xrTableCell38.StylePriority.UseBorders = false;
this.xrTableCell38.StylePriority.UsePadding = false;
this.xrTableCell38.StylePriority.UseTextAlignment = false;
this.xrTableCell38.Text = "pausch Fakt.";
this.xrTableCell38.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell38.Weight = 0.42042083402151886D;
//
// xrTableCell34
//
this.xrTableCell34.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell34.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell34.Name = "xrTableCell34";
this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell34.StylePriority.UseBackColor = false;
this.xrTableCell34.StylePriority.UseBorderColor = false;
this.xrTableCell34.StylePriority.UseBorders = false;
this.xrTableCell34.StylePriority.UsePadding = false;
this.xrTableCell34.StylePriority.UseTextAlignment = false;
this.xrTableCell34.Text = "Gesamt";
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell34.Weight = 0.31923915575667006D;
//
// DetailReport2
//
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("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
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(677F, 25F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow25
//
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell40,
this.xrTableCell42,
this.xrTableCell43,
this.xrTableCell44,
this.xrTableCell45,
this.xrTableCell46,
this.xrTableCell47});
this.xrTableRow25.Name = "xrTableRow25";
this.xrTableRow25.Weight = 1D;
//
// xrTableCell40
//
this.xrTableCell40.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell40.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell40.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Duration")});
this.xrTableCell40.Name = "xrTableCell40";
this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell40.StylePriority.UseBorderColor = false;
this.xrTableCell40.StylePriority.UseBorders = false;
this.xrTableCell40.StylePriority.UsePadding = false;
this.xrTableCell40.StylePriority.UseTextAlignment = false;
this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell40.Weight = 0.62463084211025488D;
//
// xrTableCell42
//
this.xrTableCell42.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
this.xrTableCell42.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.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.85081229498678679D;
//
// xrTableCell43
//
this.xrTableCell43.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.HourlyRate", "{0:0.00}")});
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.UsePadding = false;
this.xrTableCell43.StylePriority.UseTextAlignment = false;
this.xrTableCell43.Text = "xrTableCell43";
this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell43.Weight = 0.23245943032832414D;
//
// xrTableCell44
//
this.xrTableCell44.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell44.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Hours", "{0:0.##}")});
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.UsePadding = false;
this.xrTableCell44.StylePriority.UseTextAlignment = false;
this.xrTableCell44.Text = "xrTableCell44";
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell44.Weight = 0.2893277257020575D;
//
// xrTableCell45
//
this.xrTableCell45.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell45.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount", "{0:0.00}")});
this.xrTableCell45.Name = "xrTableCell45";
this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell45.StylePriority.UseBorderColor = false;
this.xrTableCell45.StylePriority.UseBorders = false;
this.xrTableCell45.StylePriority.UsePadding = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
this.xrTableCell45.Text = "xrTableCell45";
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell45.Weight = 0.26310971709438763D;
//
// xrTableCell46
//
this.xrTableCell46.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell46.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell46.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.RateFactor")});
this.xrTableCell46.Name = "xrTableCell46";
this.xrTableCell46.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell46.StylePriority.UseBorderColor = false;
this.xrTableCell46.StylePriority.UseBorders = false;
this.xrTableCell46.StylePriority.UsePadding = false;
this.xrTableCell46.StylePriority.UseTextAlignment = false;
this.xrTableCell46.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell46.Weight = 0.42042083402151886D;
//
// xrTableCell47
//
this.xrTableCell47.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell47.StylePriority.UseBorderColor = false;
this.xrTableCell47.StylePriority.UseBorders = false;
this.xrTableCell47.StylePriority.UsePadding = false;
this.xrTableCell47.StylePriority.UseTextAlignment = false;
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell47.Weight = 0.31923915575667006D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel1,
this.xrLabel9,
this.xrTable4,
this.xrLabel14,
this.xrLabel15});
this.GroupFooter1.HeightF = 206.5833F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrLabel1
//
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim", "Gesamtsumme: {0}")});
this.xrLabel1.Font = new System.Drawing.Font("Verdana", 9F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(420.9999F, 0F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(255.8333F, 25F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UsePadding = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;
this.xrLabel1.Text = "xrLabel1";
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// ServiceInvoiceReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.Page1,
this.DetailReport});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new System.Drawing.Font("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(75, 75, 158, 50);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel lblAbrechnungszeitraum;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
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 xrTableCell32;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
private DevExpress.XtraReports.UI.DetailBand Detail3;
private DevExpress.XtraReports.UI.XRTable xrTable6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell40;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell42;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell43;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell45;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell46;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
}
}

View File

@@ -0,0 +1,32 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
namespace PZDDuesseldorf
{
public partial class ServiceInvoiceReport : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public ServiceInvoiceReport()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
DateTime start = pRO.AccountingPeriodStart;
DateTime end = pRO.AccountingPeriodEnd;
if (start.Month == end.Month && start.Year == end.Year)
{
lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start);
}
else
{
lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end);
}
this.bindingSource1.DataSource = pRO;
}
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,228 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.DataContracts;
namespace PZDDuesseldorf
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SettlementRO>
{
public Spitzabrechnung()
{
InitializeComponent();
}
public void SetReportDataSource(SettlementRO pRO)
{
if (pRO.ClaimWithEigenbeteiligung < 0)
{
pRO.FinalSentence = "Bitte verrechnen Sie den Betrag mit den n<>chsten Zahll<6C>ufen und teilen uns diesen mit der Fachabrechnung mit.";
}
bool isDefaultSpitzabrechnung = false;
if (String.IsNullOrEmpty(pRO.Notice))
{
lblNotice.Visible = false;
}
if (pRO.InvoiceItems != null && pRO.InvoiceItems.Count == 1)
{
var ii = pRO.InvoiceItems[0];
if ((ii.ItemDescription == "Spitzabrechung" || ii.ItemDescription == "Spitzabrechnung") && ii.GrossAmountTotal == null && ii.RateFactor == null)
{
isDefaultSpitzabrechnung = true;
}
}
if (!isDefaultSpitzabrechnung)
{
if (pRO.DifferentHourlyRateCount > 0 && pRO.HourlyRateNew.HasValue)
{
isDefaultSpitzabrechnung = true;
}
}
if (isDefaultSpitzabrechnung)
{
//UpdateAbrechnungsFelder(pRO);
pRO.InvoiceItems = CreateDefaultSpitzabrechnungInvoiceItems(pRO);
}
else
{
var id = GetCustomerId(pRO);
if (id == "LWLNEU")
{
pRO.RateFactorText = null;
pRO.RateFactorText2 = null;
if (pRO.InvoiceItems != null)
{
foreach (var ii in pRO.InvoiceItems)
{
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS x {3:c}",
ii.ItemPeriodStart, ii.ItemPeriodEnd, ii.UnitCount, ii.AmountPerUnit);
}
}
}
else
{
if (pRO.InvoiceItems != null)
{
foreach (var ii in pRO.InvoiceItems)
{
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS {3}x {4:c}",
ii.ItemPeriodStart, ii.ItemPeriodEnd,
ii.UnitCount, ii.RateFactor == 0 ? "" : "x " + pRO.RateFactorText2 + " ",
ii.AmountPerUnit);
}
}
}
}
this.bindingSource1.DataSource = pRO;
}
private String GetCustomerId(SettlementRO pRO)
{
var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(pRO.CostBearer2SupportConceptOid);
return cb2sc.CostBearer.ID;
}
private IList<InvoiceItemDC> CreateDefaultSpitzabrechnungInvoiceItems(SettlementRO pRO)
{
IList<InvoiceItemDC> itemList = new List<InvoiceItemDC>();
if (pRO.DifferentHourlyRateCount == 3)
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString,
pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatz3 * pRO.RateFactor * pRO.HourlyRate3
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString,
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * pRO.RateFactor * pRO.HourlyRateOld
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
else if (pRO.DifferentHourlyRateCount == 2)
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString,
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld
});
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
else
{
itemList.Add(new InvoiceItemDC
{
ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}",
pRO.AccountingStartDateString, pRO.AccountingEndDateString,
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew),
GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew
});
}
return itemList;
}
private void UpdateAbrechnungsFelder(SettlementRO pRO)
{
if (pRO.DifferentHourlyRateCount == 3)
{
//Erbrachte Leistungen (FLS) - bis [HourlyRateOldEndDateString] <20> [HourlyRateOldString] <20>
pRO.Abrechnungstext1 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString);
pRO.Abrechnungstext1 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3);
//[AccountingStartDateString] - [HourlyRate3EndDateString] sind [RecordedFLSWithHourlyRate3String] Std. x [HourlyRate3String] <20> =";
pRO.Betrag1 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatz3 * (decimal)pRO.RateFactor * pRO.HourlyRate3);
pRO.Abrechnungstext2 = String.Format("{0} bis {1}",
pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString);
pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld);
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
else if (pRO.DifferentHourlyRateCount == 2)
{
pRO.Abrechnungstext2 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString);
pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld);
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
else
{
pRO.Abrechnungstext3 = String.Format("{0} bis {1}",
pRO.AccountingStartDateString, pRO.AccountingEndDateString);
pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}",
pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew);
}
}
}
}

View File

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

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -22,14 +22,10 @@ namespace VaroSozialagentur.Invoicing
{
private const decimal AMOUNT_PER_KM_DEFAULT = 0.3m;
private ServiceCategory fahrtkostenServiceCategory = null;
private DateTime? accountingPeriodStart = null;
private DateTime? accountingPeriodEnd = null;
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
IList<CompactSupportConceptDC> supportConceptList)
{
@@ -41,7 +37,26 @@ namespace VaroSozialagentur.Invoicing
base.SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
}
public override void SetInvoiceItems(ServiceInvoice invoice,
public override void SetServiceInvoicePeriods(ServiceInvoice invoice, CostBearer2SupportConcept costBearer2SupportConcept, DateTimeSpan invoicePeriod, List<ServiceRecordDC> serviceRecords)
{
base.SetServiceInvoicePeriods(invoice, costBearer2SupportConcept, invoicePeriod, serviceRecords);
if (invoice.ServiceInvoicePeriodList != null && invoice.ServiceInvoicePeriodList.Count > 1)
{
ServiceInvoicePeriod newPeriod = null;
foreach (var ip in invoice.ServiceInvoicePeriodList)
{
if (newPeriod == null)
newPeriod = ip;
else
newPeriod.InvoiceItemList.AddRange(ip.InvoiceItemList);
}
invoice.ServiceInvoicePeriodList = new List<ServiceInvoicePeriod>();
invoice.ServiceInvoicePeriodList.Add(newPeriod);
}
}
public override void SetInvoiceItems(ServiceInvoice invoice,
ServiceInvoicePeriod serviceInvoicePeriod,
SupportConceptApprovalPeriodDC supportConceptApprovalPeriod,
CostBearer2SupportConcept cb2sc,
@@ -75,22 +90,15 @@ namespace VaroSozialagentur.Invoicing
BS.Shared.Services.Calculations calc)
{
var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc);
var fitem = CreateFahrtkostenZoneItem(serviceRecordsInPeriod, invoicePeriod, scap);
if (fitem != null)
{
list.Add(fitem);
}
fitem = CreateFahrtkostenItem(serviceRecordsInPeriod, scap);
if (fitem != null)
{
list.Add(fitem);
}
return list;
}
private InvoiceItem CreateFahrtkostenZoneItem(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap)
@@ -137,7 +145,75 @@ namespace VaroSozialagentur.Invoicing
return null;
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
// Die Fahrtkostenitems laufen hier gar nicht erst rein und ich verstehe nicht wieso :-(
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList,
DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc, bool summaryPerMonth, bool addRateFactorToUnitCount)
{
//Fasse InvoiceItems mit gleichem Stundensatz zusammen:
var newlist = new List<InvoiceItem>();
var rateToItem = new Dictionary<String, InvoiceItem>();
foreach (InvoiceItem iitem in itemList)
{
InvoiceItem item;
var key = GetSummaryItemKey(null, iitem, summaryPerMonth);
if (rateToItem.ContainsKey(key) && iitem.ItemDescription.Contains("Fahrt"))
item = rateToItem[key];
else
{
item = new InvoiceItem();
newlist.Add(item);
item.AmountPerUnit = iitem.AmountPerUnit;
if (invoicePeriod != null)
{
item.ItemPeriodStart = invoicePeriod.StartDate;
item.ItemPeriodEnd = invoicePeriod.EndDate;
}
else
{
item.ItemPeriodStart = scap.StartDate;
item.ItemPeriodEnd = scap.EndDate;
}
if (summaryPerMonth && iitem.ItemPeriodStart.HasValue)
{
DateTime start = new DateTime(iitem.ItemPeriodStart.Value.Year, iitem.ItemPeriodStart.Value.Month, 1);
DateTime end = start.AddMonths(1).AddDays(-1);
if (item.ItemPeriodStart < start)
{
item.ItemPeriodStart = start;
}
if (item.ItemPeriodEnd > end)
{
item.ItemPeriodEnd = end;
}
}
item.RateFactor = iitem.RateFactor;
item.AccountingInterval = iitem.AccountingInterval;
item.ItemDescription = iitem.ItemDescription;
item.UnitDescription = iitem.UnitDescription;
item.SupportConceptApprovalPeriodOid = scap.Oid;
rateToItem[key] = item;
}
if (!item.UnitCount.HasValue)
{
item.UnitCount = 0;
}
item.UnitCount += iitem.UnitCount ?? 0;
}
BerechneSummaryItemsSummen(newlist, addRateFactorToUnitCount);
return newlist;
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
var invoiceItem = base.CreateInvoiceItem(iServiceRecord, scap, calc);
if (iServiceRecord != null)

View File

@@ -62,6 +62,7 @@ namespace VaroSozialagentur
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell49 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
@@ -79,6 +80,7 @@ namespace VaroSozialagentur
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTableAbwesenheiten = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -111,14 +113,13 @@ namespace VaroSozialagentur
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableAbwesenheiten)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -510,6 +511,10 @@ namespace VaroSozialagentur
this.xrTableCell49.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell49.Weight = 0.44692737430167606D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -703,7 +708,9 @@ namespace VaroSozialagentur
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 100F;
this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox1});
this.topMarginBand1.HeightF = 175F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
@@ -730,6 +737,20 @@ namespace VaroSozialagentur
this.GroupFooter1.KeepTogether = true;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrLabel11
//
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(0F, 39.99996F);
this.xrLabel11.Name = "xrLabel11";
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(320F, 20F);
this.xrLabel11.StylePriority.UseBackColor = false;
this.xrLabel11.StylePriority.UseBorders = false;
this.xrLabel11.StylePriority.UseFont = false;
this.xrLabel11.StylePriority.UsePadding = false;
this.xrLabel11.StylePriority.UseTextAlignment = false;
this.xrLabel11.Text = "F = face to face";
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrTableAbwesenheiten
//
this.xrTableAbwesenheiten.BorderColor = System.Drawing.Color.Black;
@@ -1078,23 +1099,13 @@ namespace VaroSozialagentur
this.fieldKontaktArt.FieldType = DevExpress.XtraReports.UI.FieldType.String;
this.fieldKontaktArt.Name = "fieldKontaktArt";
//
// xrLabel11
// xrPictureBox1
//
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(0F, 39.99996F);
this.xrLabel11.Name = "xrLabel11";
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(320F, 20F);
this.xrLabel11.StylePriority.UseBackColor = false;
this.xrLabel11.StylePriority.UseBorders = false;
this.xrLabel11.StylePriority.UseFont = false;
this.xrLabel11.StylePriority.UsePadding = false;
this.xrLabel11.StylePriority.UseTextAlignment = false;
this.xrLabel11.Text = "F = face to face";
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
this.xrPictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("xrPictureBox1.Image")));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(602.8337F, 48.95833F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(134.1663F, 126.0417F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// Quittierungsbeleg
//
@@ -1114,17 +1125,17 @@ namespace VaroSozialagentur
this.formattingRuleServiceDesc,
this.formattingRuleCostBearer,
this.formattingRuleEmployeeName});
this.Margins = new System.Drawing.Printing.Margins(50, 30, 100, 30);
this.Margins = new System.Drawing.Printing.Margins(50, 30, 175, 30);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableAbwesenheiten)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -1213,5 +1224,6 @@ namespace VaroSozialagentur
private DevExpress.XtraReports.UI.XRLabel xrLabel16;
private DevExpress.XtraReports.UI.XRPictureBox picSignature;
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
}
}

View File

@@ -120,6 +120,388 @@
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
BAAAAABJRU5ErkJggg==
</value>
</data>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAcwAyADIAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXABmAHMAMgAyAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgBzADIAMgBcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgBzADIAMgBcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADIAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAcwAyADIAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAIABpAG0AIABBAGIAcgBlAGMAaABuAHUAbgBnAHMAegBlAGkAdAByAGEAdQBtAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>

View File

@@ -482,13 +482,13 @@ namespace VaroSozialagentur
//
this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable6});
this.Detail3.HeightF = 29.56523F;
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, 4.565228F);
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow25});

View File

@@ -29,6 +29,20 @@ namespace VaroSozialagentur
string[] start = pRO.AccountingPeriodStart.ToString().Split(' ');
string[] ende = pRO.AccountingPeriodEnd.ToString().Split(' ');
//if (pRO.ServiceInvoicePeriods != null)
//{
// foreach (var sip in pRO.ServiceInvoicePeriods)
// {
// if (sip.ServiceInvoiceItems != null)
// {
// foreach (var ii in sip.ServiceInvoiceItems)
// {
// if (ii.ServiceDescription.Contains("Fahrtkosten"));
// }
// }
// }
//}
lblZeitraum.Text += start[0] + " - " + ende[0];
this.bindingSource1.DataSource = pRO;

View File

@@ -22,6 +22,10 @@ namespace BeWo.Service.DCEntityMapper
bDataContract.Start = bEntity.Start;
bDataContract.Ende = bEntity.Ende;
bDataContract.Pause = bEntity.Pause;
if (bEntity.Wohnheim.HasValue)
bDataContract.Wohnheim = MapperFactory.WohnheimDC_Wohnheim.MapToNewDC(DAOFactory.GenericDAO.GetByID<Wohnheim>(bEntity.Wohnheim.Value));
else
bDataContract.Wohnheim = null;
return bDataContract;
}
@@ -38,6 +42,10 @@ namespace BeWo.Service.DCEntityMapper
bEntity.Start = bDataContract.Start;
bEntity.Ende = bDataContract.Ende;
bEntity.Pause = bDataContract.Pause;
if (bDataContract.Wohnheim != null)
bEntity.Wohnheim = bDataContract.Wohnheim.WohnheimOid.Value;
else
bEntity.Wohnheim = null;
return bEntity;
}

View File

@@ -2,6 +2,8 @@
using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.DataContracts;
using System;
@@ -18,9 +20,13 @@ namespace BeWo.Service.Dienstplanung
public static DienstplanerRootDC BuildDienstplanerRootObject(DateTime date, long wohnheimOid)
{
DienstplanerRootDC root = new DienstplanerRootDC();
OperationsServiceImp os = new OperationsServiceImp();
root.AlleDienste = GetAllDienste().OrderBy(d => d.Start).ToList();
root.AlleDienste = GetAllDienste(wohnheimOid).OrderBy(d => d.Start).ToList();
root.AlleDienste.Insert(0, DienstInfoDC.Platzhalter);
root.AbsenceTimes = GetAbsenceTimeVacationByWohnheim(wohnheimOid, date.Year, date.Month);
root.OverTimes = GetOverTimesByWohnheim(wohnheimOid, date.Year, date.Month);
root.RegelmaessigeDienste = GetRegelmaessigeDienste(wohnheimOid);
root.TextBoxForeColor = GetColorForForeground();
@@ -53,8 +59,39 @@ namespace BeWo.Service.Dienstplanung
root.StatusColorTrue = "#FF228B22";
root.StatusColorFalse = "#FFCD5C5C";
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnheimOid);
List<long> empOids = new List<long>();
#region EmployeeOids holen für Ist- und Saldoberechnung und die Liste der vorhandenen Mitarbeiter
foreach (var item in wh.Employee2WohnheimList)
{
empOids.Add((long)item.EmployeeOid);
}
foreach (var item in root.AlleDienstvertretungen)
{
if (!empOids.Contains(item.EmployeeOid))
empOids.Add((long)item.EmployeeOid);
}
root.AllEmployee = new List<EmployeeDC>();
foreach (var block in root.DienstDCListe)
{
if (!root.AllEmployee.Contains(block.Employee))
root.AllEmployee.Add(block.Employee);
}
#endregion
root.MonatsZusammenfassung = BerechneSollSaldoUndIst(root, date, empOids);
return root;
}
private static List<RegelmaessigerDienstDC> GetRegelmaessigeDienste(long wOid)
{
return MapperFactory.RegelmaessigerDienstDC_RegelmaessigerDienst.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<RegelmaessigerDienst>())
.Where(x => x.WohnheimOid == wOid).ToList();
}
public static List<AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month)
{
var date = new DateTime(year, month, 1);
@@ -69,11 +106,29 @@ namespace BeWo.Service.Dienstplanung
return MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(res);
}
public static List<DienstInfoDC> GetAllDienste()
public static List<OvertimeDC> GetOverTimesByWohnheim(long wohnId, int year, int month)
{
var temp = DAOFactory.GenericDAO.GetAllActive<DienstInfo>();
return MapperFactory.DienstInfoDC_DienstInfo.MapToNewDCs(temp);
var date = new DateTime(year, month, 1);
var date2 = date.AddMonths(1).AddTicks(-1);
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnId);
var emps = wh.Employee2WohnheimList.Select(x => x.Employee.Oid);
var allOvertimes = DAOFactory.GenericDAO.GetAllActive<Overtime>().Where(x => x.EmployeeOid.HasValue);
List<Overtime> ots = allOvertimes.Where(x => emps.Contains(x.EmployeeOid.Value) && x.Date >= date && x.Date <= date2).ToList();
return MapperFactory.OvertimeDC_Overtime.MapToNewDCs(ots);
}
public static List<DienstInfoDC> GetAllDienste(long? whOid)
{
List<DienstInfo> list = new List<DienstInfo>();
if (whOid == null)
list = DAOFactory.GenericDAO.GetAllActive<DienstInfo>().ToList();
else
list = DAOFactory.SearchDAO.FindDiensteForWohnheim(whOid).ToList();
return MapperFactory.DienstInfoDC_DienstInfo.MapToNewDCs(list);
}
public static void InsertNewDienst(List<DienstInfoDC> dienst)
{
@@ -154,9 +209,18 @@ namespace BeWo.Service.Dienstplanung
for (int i = 0; i < zeile.DienstDictArray.Length; i++)
{
var empDienste = dienstEintraegeDC
.Where(x => x.EmployeeOid == emp.EmployeeOid && x.Zeile == i);
.Where(x => x.EmployeeOid == emp.EmployeeOid && x.Zeile == i).ToList();
zeile.DienstDictArray[i] = empDienste
var empDiensteFinal = new List<DienstEintragDC>();
foreach (var item in empDienste)
{
if (!empDiensteFinal.Any(d => d.Datum == item.Datum && d.Zeile == item.Zeile))
empDiensteFinal.Add(item);
else
Console.WriteLine("Key existiert schon");
}
zeile.DienstDictArray[i] = empDiensteFinal
.ToDictionary(x => x.Datum.Day, x => x.DienstOid);
}
@@ -400,8 +464,103 @@ namespace BeWo.Service.Dienstplanung
{
return "#FF6495ED";
}
public static List<DienstplanerMonthlySummaryDC> BerechneSollSaldoUndIst(DienstplanerRootDC root, DateTime date, List<long> empOids)
{
VacationService vs = new VacationService();
var konto = MitarbeiterstundenkontoRO.Create(null, null, date, date.AddMonths(1), empOids);
var berechnung = new MitarbeiterstundenkontoBerechnung();
berechnung.CreateReport(konto);
List<DienstplanerMonthlySummaryDC> monatsZusammenfassung = new List<DienstplanerMonthlySummaryDC>();
root.StundenBeiAbwesenheit = new Dictionary<long?, decimal>();
foreach (var item in konto.EmployeeDetailList)
{
root.StundenBeiAbwesenheit.Add(item.Employee.Oid, item.SollProTag);
DienstplanerMonthlySummaryDC dc = new DienstplanerMonthlySummaryDC
{
Employee = MapperFactory.EmployeeDC_Employee.MapToNewDC(item.Employee),
Soll = item.StundenSollOhneUrlaubKrankheit,
ZeitkontoLetzterMonat = item.UeberstundenVormonat,
ZeitkontoAktualisiert = item.Ueberstunden,
TageUrlaub = 0,
TageKrank = 0
};
var eintraegeFuerMitarbeiterMonat = root.AlleDienstEintraege.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
var vertretungenFuerMitarbeiterMonat = root.AlleDienstvertretungen.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
var urlaubKrankheitMonat = root.AbsenceTimes.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
var overTimesMonat = root.OverTimes.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
decimal stunden = 0;
//decimal abzug = 0;
if (eintraegeFuerMitarbeiterMonat.Count > 0)
{
foreach (var eintrag in eintraegeFuerMitarbeiterMonat)
{
stunden += Convert.ToDecimal(eintrag.DauerInStunden);
}
}
if (vertretungenFuerMitarbeiterMonat.Count > 0)
{
foreach (var vertretung in vertretungenFuerMitarbeiterMonat)
stunden += Convert.ToDecimal(vertretung.DauerInStunden);
}
if (overTimesMonat.Count > 0)
{
foreach (var ot in overTimesMonat)
stunden += ot.Betrag;
}
if (urlaubKrankheitMonat.Count > 0)
{
decimal dauer = 0;
foreach (var abs in urlaubKrankheitMonat)
{
// Wenn die Abwesenheit über den Monat hinausgeht, Ende auf Ende des Monats setzen
if (abs.End != null)
{
if (abs.End.Value.Month != date.Month)
abs.End = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Year));
}
var dauerAbwesenheit = vs.BerechneAnzahlUrlaubstage(null, abs, date.Year);
if (abs.Reason.Description.ToLower().Contains("urlaub"))
dc.TageUrlaub += dauerAbwesenheit * item.SollProTag;
else if (abs.Reason.Description.ToLower().Contains("krank"))
dc.TageKrank += dauerAbwesenheit * item.SollProTag;
dauer += dauerAbwesenheit;
//Dienste an einem ganzen Abwesenheitstag von den Stunden abziehen
foreach (var e in eintraegeFuerMitarbeiterMonat)
{
if (abs.AbsenceSpan.ContainsDate(e.Datum.Date))
{
if (dauerAbwesenheit > 0.5m)
stunden -= Convert.ToDecimal(e.DauerInStunden);
}
}
foreach (var v in vertretungenFuerMitarbeiterMonat)
{
if (abs.AbsenceSpan.ContainsDate(v.Datum.Date))
{
if (dauerAbwesenheit > 0.5m)
stunden -= Convert.ToDecimal(v.DauerInStunden);
}
}
}
stunden += dauer * item.SollProTag;
}
dc.Ist = stunden;
dc.Saldo = dc.Ist - dc.Soll;
monatsZusammenfassung.Add(dc);
}
return monatsZusammenfassung;
}
}
}

View File

@@ -274,11 +274,16 @@ namespace BeWo.Service.Plugins
//t = "7951718431"; // Ambulant Betreutes Wohnen Astrid Pulm
//t = "5850903700"; // Alzey Teilhabe
//t = "5929601293"; // Lebenshilfe Duisburg Frühförderung (Projekt heißt LebenshilfeDuisburgAtz)
//t = "6860475645"; // Lebenshilfe Duisburg Atz (Projekt heißt LebenshilfeDuisburgAtz6860475645)
//t = "6860475645"; // Lebenshilfe Duisburg ATZ (Projekt heißt LebenshilfeDuisburgAtz6860475645)
//t = "4823067940"; // Die Kette 2
//t = "8283849714"; // Forum e.V. (proviel GmbH)
//t = "3915346496"; // Sprungbrett 2. DB (Haus Theresia)
//t = "2387527289"; // Lebenshilfe Duisburg HPFH
//t = "2387527289"; // Lebenshilfe Duisburg HPFH
//t = "5595701056"; // Domiziel Ansbach
//t = "4823067940"; // Die Kette 2
//t = "8283849714"; // Forum e.V. (proviel GmbH)
//t = "3915346496"; // Sprungbrett 2. DB (Haus Theresia)
//t = "2387527289"; // Lebenshilfe Duisburg HPFH
//t = "5595701056"; // Domiziel Ansbach
//t = "9430188510"; // Pro INTEGRA
//t = "4820371076"; // Zuhause Wohnen Iris Thimm
@@ -291,7 +296,9 @@ namespace BeWo.Service.Plugins
//t = "6282665941"; // Diakonisches Werk Regensburg
//t = "7712740386"; // Heimstatt St. Marien e.V. (Carl-Sonnenscheinhaus)
//t = "5537187628"; // Verband Ev. Kirchengemeinden Dorsten
//t = "8375099271"; // Neustart - Ambulant Betreutes Wohnen
//t = "5478434972"; // LebensWert - Kai Lippel
//t = "5381886394"; // PZDDuesseldorf
return t;
#else
if (MultitenancyOperationContextExt.Current != null)

View File

@@ -575,7 +575,7 @@ namespace BeWo.Service.Plugins
var end = DateTimeExtensions.GetMin(absence.End, new DateTime(absYear, 12, 31));
// Dauer des Urlaubs unter Berücksichtigung von Wochenend- und Feiertagen berechnen
var dauer = BerechneAnzahlUrlaubstage(emp, absence, absYear);
var dauer = BerechneAnzahlUrlaubstage(absence, null, absYear);
// Verfallsdatum des Urlaubs festlegen
var expiration = GetExpirationDate(absYear);
current.UrlaubsVerfallsdatum = expiration;
@@ -711,43 +711,85 @@ namespace BeWo.Service.Plugins
return urlaubstage;
}
private decimal BerechneAnzahlUrlaubstage(Employee emp, AbsenceTime absence, int year)
public decimal BerechneAnzahlUrlaubstage(AbsenceTime absence, AbsenceTimeDC absenceDC, int year)
{
if (absence.Start.HasValue)
if (absence != null)
{
decimal days = 0;
//int days = 0;
//DateTime start = absence.Start.Value;
DateTime start = (absence.Start.Value.Year == year) ? absence.Start.Value : new DateTime(year, 1, 1);
DateTime end = start;
DateTime maxend = new DateTime(year, 12, 31);
if (absence.End.HasValue)
if (absence.Start.HasValue)
{
end = absence.End.Value;
}
decimal days = 0;
//int days = 0;
if (maxend < end)
{
end = maxend;
}
while (start <= end)
{
if (start.DayOfWeek != DayOfWeek.Saturday && start.DayOfWeek != DayOfWeek.Sunday && !IstFeiertag(start))
//DateTime start = absence.Start.Value;
DateTime start = (absence.Start.Value.Year == year) ? absence.Start.Value : new DateTime(year, 1, 1);
DateTime end = start;
DateTime maxend = new DateTime(year, 12, 31);
if (absence.End.HasValue)
{
if (start.Date == end.Date && start.TimeOfDay != end.TimeOfDay)
days += 0.5m;
else
days++;
end = absence.End.Value;
}
start = start.AddDays(1);
if (maxend < end)
{
end = maxend;
}
while (start <= end)
{
if (start.DayOfWeek != DayOfWeek.Saturday && start.DayOfWeek != DayOfWeek.Sunday && !IstFeiertag(start))
{
if (start.Date == end.Date && start.TimeOfDay != end.TimeOfDay)
days += 0.5m;
else
days++;
}
start = start.AddDays(1);
}
return (decimal)days;
}
return (decimal)days;
}
else if (absenceDC != null)
{
if (absenceDC.Start.HasValue)
{
decimal days = 0;
//int days = 0;
//DateTime start = absence.Start.Value;
DateTime start = (absenceDC.Start.Value.Year == year) ? absenceDC.Start.Value : new DateTime(year, 1, 1);
DateTime end = start;
DateTime maxend = new DateTime(year, 12, 31);
if (absenceDC.End.HasValue)
{
end = absenceDC.End.Value;
}
if (maxend < end)
{
end = maxend;
}
while (start <= end)
{
if (start.DayOfWeek != DayOfWeek.Saturday && start.DayOfWeek != DayOfWeek.Sunday && !IstFeiertag(start))
{
if (start.Date == end.Date && start.TimeOfDay != end.TimeOfDay)
days += 0.5m;
else
days++;
}
start = start.AddDays(1);
}
return (decimal)days;
}
}
return 0;
}
public Dictionary<long?, decimal> BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(List<long?> empOids, int year, string reason)

View File

@@ -896,7 +896,7 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<DienstInfoDC> GetAllDienste();
List<DienstInfoDC> GetAllDienste(long? wOid);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
@@ -1003,8 +1003,6 @@ namespace BeWo.Service.ServiceContracts
[OperationContract]
void DeleteRegelmaessigerDienst(RegelmaessigerDienstDC dienst);
List<RegelmaessigerDienstDC> GetRegelmaessigeDienste(long wOid);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
void InsertNewDienstvertretung(DienstvertretungDC dienstvertretung);
@@ -1025,10 +1023,6 @@ namespace BeWo.Service.ServiceContracts
[OperationContract]
void DeleteCertainDienstEintragOutOfTable(long dienstEintragOid);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<ServiceRecordDC> GetServiceRecordsByIds(List<long> serviceRecordOids);

View File

@@ -5965,11 +5965,11 @@ namespace BeWo.Service.ServiceImplementations
return MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDCs(costbearer2SupportConcepts);
}
public List<DienstInfoDC> GetAllDienste()
public List<DienstInfoDC> GetAllDienste(long? wOid)
{
try
{
return DienstplanungsManager.GetAllDienste();
return DienstplanungsManager.GetAllDienste(wOid);
}
catch (Exception e)
{
@@ -6353,31 +6353,7 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public List<RegelmaessigerDienstDC> GetRegelmaessigeDienste(long wOid)
{
try
{
return MapperFactory.RegelmaessigerDienstDC_RegelmaessigerDienst.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<RegelmaessigerDienst>())
.Where(x => x.WohnheimOid == wOid).ToList();
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month)
{
try
{
return DienstplanungsManager.GetAbsenceTimeVacationByWohnheim(wohnId, year, month);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertConfirmationReceiptSignature(ConfirmationReceiptSignatureDC confirmationReceiptSignature)
{
try
@@ -6917,68 +6893,9 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
var cs = new CustomerServiceImp();
var es = new EmployeeServiceImp();
DienstplanerRootDC root = DienstplanungsManager.BuildDienstplanerRootObject(date, wohnheimOid);
//root.Wohnheime = cs.GetAllActiveWohnheimeCompact();
root.Feiertage = GetDefaultFeiertageForYear(date.Year);
root.AbsenceTimes = GetAbsenceTimeVacationByWohnheim(wohnheimOid, date.Year, date.Month);
root.RegelmaessigeDienste = GetRegelmaessigeDienste(wohnheimOid);
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnheimOid);
List<long> empOids = new List<long>();
foreach (var item in wh.Employee2WohnheimList)
{
empOids.Add((long)item.EmployeeOid);
}
foreach (var item in root.AlleDienstvertretungen)
{
if (!empOids.Contains(item.EmployeeOid))
empOids.Add((long)item.EmployeeOid);
}
//root.AllEmployee = MapperFactory.EmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetActiveByIDs<Employee>(empOids));
var konto = MitarbeiterstundenkontoRO.Create(null, null, date, date.AddMonths(1), empOids);
var berechnung = new MitarbeiterstundenkontoBerechnung();
berechnung.CreateReport(konto);
root.MonatsZusammenfassung = new List<DienstplanerMonthlySummaryDC>();
foreach (var item in konto.EmployeeDetailList)
{
DienstplanerMonthlySummaryDC dc = new DienstplanerMonthlySummaryDC
{
Employee = MapperFactory.EmployeeDC_Employee.MapToNewDC(item.Employee),
Soll = item.StundenSollOhneUrlaubKrankheit,
ZeitkontoLetzterMonat = item.UeberstundenVormonat,
ZeitkontoAktualisiert = item.Ueberstunden,
TageUrlaub = item.TageUrlaub != null ? (decimal)item.TageUrlaub : 0,
TageKrank = item.TageKrankheit != null ? (decimal)item.TageKrankheit : 0
};
var eintraegeFuerMitarbeiterMonat = root.AlleDienstEintraege.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
var vertretungenFuerMitarbeiterMonat = root.AlleDienstvertretungen.FindAll(x => x.EmployeeOid == dc.Employee.EmployeeOid).ToList();
decimal stunden = 0;
if (eintraegeFuerMitarbeiterMonat.Count > 0)
{
foreach (var eintrag in eintraegeFuerMitarbeiterMonat)
stunden += Convert.ToDecimal(eintrag.DauerInStunden);
}
if (vertretungenFuerMitarbeiterMonat.Count > 0)
{
foreach (var vertretung in vertretungenFuerMitarbeiterMonat)
stunden += Convert.ToDecimal(vertretung.DauerInStunden);
}
dc.Ist = stunden;
dc.Saldo = dc.Ist - dc.Soll;
root.MonatsZusammenfassung.Add(dc);
}
return root;
}
catch (Exception e)

View File

@@ -33,5 +33,6 @@ namespace BS.Shared.DataContracts.Compact
[DataMember]
public List<long> EmployeeOids { get; set; }
}
}

View File

@@ -36,19 +36,14 @@ namespace BS.Shared.DataContracts
[DataMember]
public int Pause { get; set; }
[DataMember]
public WohnheimDC Wohnheim{ get; set; }
[DataMember]
public DienstInfoDC UmschließenderDienst { get; set; }
public override string ToString()
{
//string vonStunden = Start.TimeOfDay.Hours < 10 ? "0" + Start.TimeOfDay.Hours : Start.TimeOfDay.Hours.ToString();
//string vonMinuten = Start.TimeOfDay.Minutes < 10 ? "0" + Start.TimeOfDay.Minutes : Start.TimeOfDay.Minutes.ToString();
//string bisStunden = Ende.TimeOfDay.Hours < 10 ? "0" + Ende.TimeOfDay.Hours : Ende.TimeOfDay.Hours.ToString();
//string bisMinuten = Ende.TimeOfDay.Minutes < 10 ? "0" + Ende.TimeOfDay.Minutes : Ende.TimeOfDay.Minutes.ToString();
//string vonbis = vonStunden + ":" + vonMinuten + " Uhr - " + bisStunden + ":" + bisMinuten + " Uhr";
//return string.IsNullOrEmpty(Kurz) ? "" : vonbis + " (" + DienstName + ")";
//return $"ID:{Oid}|N:{DienstName}|K:{Kurz}";
return Kurz;
}
@@ -84,16 +79,6 @@ namespace BS.Shared.DataContracts
string vonbis = vonStunden + ":" + vonMinuten + " Uhr - " + bisStunden + ":" + bisMinuten + " Uhr";
return string.IsNullOrEmpty(Kurz) ? "" : vonbis + " (" + DienstName + ")";
//return ToString();
//var startHour = Start.Hour < 10 ? "0" + Start.Hour.ToString() : Start.Hour.ToString();
//var startMinute = Start.Minute < 10 ? "0" + Start.Minute.ToString() : Start.Minute.ToString();
//var endeHour = Ende.Hour < 10 ? "0" + Ende.Hour.ToString() : Ende.Hour.ToString();
//var endeMinute = Ende.Minute < 10 ? "0" + Ende.Minute.ToString() : Ende.Minute.ToString();
//if (DienstName == null)
// return "";
//else
// return DienstName + " | " + startHour + ":" + startMinute + " - " + endeHour + ":" + endeMinute;
}
}
}

View File

@@ -28,6 +28,9 @@ namespace BS.Shared.DataContracts
[DataMember]
public List<AbsenceTimeDC> AbsenceTimes { get; set; }
[DataMember]
public List<OvertimeDC> OverTimes { get; set; }
[DataMember]
public List<EmployeeDC> AllEmployee { get; set; }
@@ -52,5 +55,8 @@ namespace BS.Shared.DataContracts
[DataMember]
public List<DienstplanerMonthlySummaryDC> MonatsZusammenfassung { get; set; }
[DataMember]
public Dictionary<long?, decimal> StundenBeiAbwesenheit { get; set; }
}
}

View File

@@ -18,12 +18,5 @@ namespace BS.Shared.DataContracts
public List<GeschenkterUrlaubstagDC> GeschenkteUrlaubstage { get; set; }
[DataMember]
public List<AbwesenheitsInformationDC> AlleAbwesenheitsInformationDCs { get; set; }
//[DataMember]
//public List<AbsenceReasonDC> AlleAbwesenheitsgründe { get; set; }
//[DataMember]
//public List<EmploymentTypeDC> AlleVertragsArten { get; set; }
//[DataMember]
//public List<CompactTeamDC> AlleTeamsCompact { get; set; }
}
}

View File

@@ -33,7 +33,10 @@ namespace BS.Shared.DataContracts
[DataMember]
public List<WohnheimCustomerRelationDC> RelatedCustomers { get; set; }
public override string ToString()
{
return WohnheimName;
}
}