CB, Reports

This commit is contained in:
Christian
2020-10-12 13:03:05 +02:00
parent 4ae3a82f09
commit ef24988f0e
62 changed files with 12419 additions and 2151 deletions

4
.gitignore vendored
View File

@@ -465,3 +465,7 @@
/ReportImp/PsychosozialeHilfenBochum/obj/Release
/ReportImp/DieBrueckeHilfeUndHalt/obj/Debug
/ReportImp/DieBrueckeHilfeUndHalt/obj/Release
/ReportImp/DiakonischesWerkHerne/obj/Debug
/ReportImp/DiakonischesWerkHerne/obj/Release
/ReportImp/SabGmbH/obj/Debug
/ReportImp/SabGmbH/obj/Release

View File

@@ -1940,7 +1940,10 @@ namespace BeWo.Scheduler.View
foreach (var termin in mehrTaegigeTermine)
{
var tage = termin.StartDate.Value.GetDayNumberBetweenTwoDates(termin.EndDate.Value);
if (tage > 31)
{
tage = 31;
}
if (termin.AllDay)
{
tage -= 1;

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,7 @@
xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
x:Class="BeWo.View.Detail.Report.FlexibleReportView"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" Focusable="True">
@@ -137,17 +138,24 @@
<dxpg:PivotGridField x:Name="FlexibleLeistungskategorie" FieldName="Leistungskategorie" Area="FilterArea" Width="200" Caption="Leistungskategorie" AllowedAreas="All" DisplayFolder="Zeilen" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleLeistung" FieldName="Leistung" Area="FilterArea" Width="200" Caption="Leistung" AllowedAreas="All" DisplayFolder="Zeilen" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleOrganisation" FieldName="Organisation" Area="FilterArea" Width="200" Caption="Kostenträger" AllowedAreas="All" DisplayFolder="Zeilen" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleAnzahlMinIst" FieldName="IstMinuten" Area="FilterArea" Width="60" Caption="Ist Min." AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleAnzahlStdIst" FieldName="IstStunden" Area="DataArea" Width="80" Caption="Ist Std." AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleAnzahlMinSoll" FieldName="SollMinuten" Area="FilterArea" Width="60" Caption="Soll Min." AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleAnzahlStdSoll" FieldName="SollStunden" Area="DataArea" Width="80" Caption="Soll Std." AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleArbeitszeitMinIst" FieldName="IstArbeitszeitMinuten" Area="FilterArea" Width="60" Caption="{markup:Translate Arbeitszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleArbeitszeitStdIst" FieldName="IstArbeitszeitStunden" Area="DataArea" Width="80" Caption="{markup:Translate Arbeitszeit Std.}" AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleArbeitszeitMinSoll" FieldName="SollArbeitszeitMinuten" Area="FilterArea" Width="60" Caption="{markup:Translate Soll Arbeitszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleArbeitszeitStdSoll" FieldName="SollArbeitszeitStunden" Area="DataArea" Width="80" Caption="{markup:Translate Soll Arbeitszeit Std.}" AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleBetreuungszeitMinIst" FieldName="IstBetreuungszeitMinuten" Area="FilterArea" Width="60" Caption="{markup:Translate Betreuungszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleBetreuungszeitStdIst" FieldName="IstBetreuungszeitStunden" Area="DataArea" Width="80" Caption="{markup:Translate Betreuungszeit Std.}" AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleBetreuungszeitMinSoll" FieldName="SollBetreuungszeitMinuten" Area="FilterArea" Width="60" Caption="{markup:Translate Soll Betreuungszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleBetreuungszeitStdSoll" FieldName="SollBetreuungszeitStunden" Area="DataArea" Width="80" Caption="{markup:Translate Soll Betreuungszeit Std.}" AllowedAreas="All" DisplayFolder="Data" />
<dxpg:PivotGridField x:Name="FlexibleGefahreneKilometer" FieldName="Kilometer" Area="FilterArea" Width="200" Caption="Gefahrene Kilometer" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleBetrag" FieldName="Betrag" Area="FilterArea" Width="80" Caption="Betrag" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleStundensatz" FieldName="Stundensatz" Area="FilterArea" Width="80" Caption="Stundensatz" AllowedAreas="All" DisplayFolder="Data" Visible="True" />
<dxpg:PivotGridField x:Name="FlexibleRundungspotenzial" FieldName="Rundungspotenzial" Area="FilterArea" Width="80" Caption="Rundungspotenzial" AllowedAreas="All" DisplayFolder="Data" Visible="False" />
<dxpg:PivotGridField x:Name="FlexibleDifferenzIstSollMin" FieldName="DifferenzIstSollMinuten" Area="FilterArea" Width="80" Caption="Differenz Min." AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="FlexibleDifferenzIstSollStd" FieldName="DifferenzIstSollStunden" Area="DataArea" Width="80" Caption="Differenz Std." AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="UFlexibleProzentualeAbweichung" UnboundFieldName="ProzAbweichung" Area="DataArea" Width="80" Caption="Prozentual Abweichung" AllowedAreas="All" DisplayFolder="Data"/>
<dxpg:PivotGridField x:Name="FlexibleDifferenzArbeitszeitIstSollMin" FieldName="DifferenzArbeitszeitIstSollMinuten" Area="FilterArea" Width="80" Caption="{markup:Translate Differenz Arbeitszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="FlexibleDifferenzArbeitszeitIstSollStd" FieldName="DifferenzArbeitszeitIstSollStunden" Area="DataArea" Width="80" Caption="{markup:Translate Differenz Arbeitszeit Std.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="FlexibleDifferenzBetreuungszeitIstSollMin" FieldName="DifferenzBetreuungszeitIstSollMinuten" Area="FilterArea" Width="80" Caption="{markup:Translate Differenz Betreuungszeit Min.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="FlexibleDifferenzBetreuungszeitIstSollStd" FieldName="DifferenzBetreuungszeitIstSollStunden" Area="DataArea" Width="80" Caption="{markup:Translate Differenz Betreuungszeit Std.}" AllowedAreas="All" DisplayFolder="Data" Visible="True" HideEmptyVariationItems="True" />
<dxpg:PivotGridField x:Name="UFlexibleProzentualeAbweichungArbeitszeit" UnboundFieldName="ProzAbweichungArbeitszeit" Area="DataArea" Width="80" Caption="{markup:Translate Prozentual Abweichung Arbeitszeit}" AllowedAreas="All" DisplayFolder="Data"/>
<dxpg:PivotGridField x:Name="UFlexibleProzentualeAbweichungBetreuungszeit" UnboundFieldName="ProzAbweichungBetreuungszeit" Area="DataArea" Width="80" Caption="{markup:Translate Prozentual Abweichung Betreuungszeit}" AllowedAreas="All" DisplayFolder="Data"/>
</dxpg:PivotGridControl.Fields>
</dxpg:PivotGridControl>
</dxlc:LayoutGroup>

View File

@@ -42,8 +42,10 @@ namespace BeWo.View.Detail.Report
#region Fields
private readonly List<string> _Columns = new List<string>() { nameof(FlexibleJahr), nameof(FlexibleMonat), nameof(FlexibleWeek), nameof(FlexibleTag) };
private readonly List<string> _Rows = new List<string>() { nameof(FlexibleKlient), nameof(FlexibleMitarbeiter) };
private readonly List<string> _DataDiff = new List<string>() { nameof(FlexibleDifferenzIstSollMin), nameof(FlexibleDifferenzIstSollStd) };
private readonly List<string> _DataPer = new List<string>() { nameof(UFlexibleProzentualeAbweichung) };
private readonly List<string> _DataArbeitszeitDiff = new List<string>() { nameof(FlexibleDifferenzArbeitszeitIstSollMin), nameof(FlexibleDifferenzArbeitszeitIstSollStd) };
private readonly List<string> _DataArbeitszeitPer = new List<string>() { nameof(UFlexibleProzentualeAbweichungArbeitszeit) };
private readonly List<string> _DataBetreuungszeitDiff = new List<string>() { nameof(FlexibleDifferenzArbeitszeitIstSollMin), nameof(FlexibleDifferenzArbeitszeitIstSollStd) };
private readonly List<string> _DataBetreuungszeitPer = new List<string>() { nameof(UFlexibleProzentualeAbweichungArbeitszeit) };
#endregion
#region Constructor
@@ -51,14 +53,23 @@ namespace BeWo.View.Detail.Report
{
InitializeComponent();
FlexibleAnzahlMinIst.CellFormat = "{0:N0}";
FlexibleAnzahlStdIst.CellFormat = "{0:N2}";
FlexibleArbeitszeitMinIst.CellFormat = "{0:N0}";
FlexibleArbeitszeitStdIst.CellFormat = "{0:N2}";
FlexibleAnzahlMinSoll.CellFormat = "{0:N0}";
FlexibleAnzahlStdSoll.CellFormat = "{0:N2}";
FlexibleArbeitszeitMinSoll.CellFormat = "{0:N0}";
FlexibleArbeitszeitStdSoll.CellFormat = "{0:N2}";
FlexibleDifferenzIstSollMin.CellFormat = "{0:N0}";
FlexibleDifferenzIstSollStd.CellFormat = "{0:N2}";
FlexibleBetreuungszeitMinIst.CellFormat = "{0:N0}";
FlexibleBetreuungszeitStdIst.CellFormat = "{0:N2}";
FlexibleBetreuungszeitMinSoll.CellFormat = "{0:N0}";
FlexibleBetreuungszeitStdSoll.CellFormat = "{0:N2}";
FlexibleDifferenzArbeitszeitIstSollMin.CellFormat = "{0:N0}";
FlexibleDifferenzArbeitszeitIstSollStd.CellFormat = "{0:N2}";
FlexibleDifferenzBetreuungszeitIstSollMin.CellFormat = "{0:N0}";
FlexibleDifferenzBetreuungszeitIstSollStd.CellFormat = "{0:N2}";
FlexibleGefahreneKilometer.CellFormat = "{0:N0}";
FlexibleRundungspotenzial.CellFormat = "{0:N0}";
@@ -70,11 +81,17 @@ namespace BeWo.View.Detail.Report
FlexibleLeistungskategorie.TotalValueFormat = "{0}";
FlexibleQuarter.ValueFormat = "{0}. Quartal";
UFlexibleProzentualeAbweichung.UnboundExpressionMode = FieldUnboundExpressionMode.UseAggregateFunctions;
UFlexibleProzentualeAbweichung.UnboundType = FieldUnboundColumnType.Decimal;
UFlexibleProzentualeAbweichung.CellFormat = "{0:P2}";
UFlexibleProzentualeAbweichung.UnboundExpression = $"SUM([{FlexibleAnzahlStdIst.ExpressionFieldName}]) / SUM([{FlexibleAnzahlStdSoll.ExpressionFieldName}])";
UFlexibleProzentualeAbweichung.SummaryType = FieldSummaryType.Average;
UFlexibleProzentualeAbweichungArbeitszeit.UnboundExpressionMode = FieldUnboundExpressionMode.UseAggregateFunctions;
UFlexibleProzentualeAbweichungArbeitszeit.UnboundType = FieldUnboundColumnType.Decimal;
UFlexibleProzentualeAbweichungArbeitszeit.CellFormat = "{0:P2}";
UFlexibleProzentualeAbweichungArbeitszeit.UnboundExpression = $"SUM([{FlexibleArbeitszeitStdIst.ExpressionFieldName}]) / SUM([{FlexibleArbeitszeitStdSoll.ExpressionFieldName}])";
UFlexibleProzentualeAbweichungArbeitszeit.SummaryType = FieldSummaryType.Average;
UFlexibleProzentualeAbweichungBetreuungszeit.UnboundExpressionMode = FieldUnboundExpressionMode.UseAggregateFunctions;
UFlexibleProzentualeAbweichungBetreuungszeit.UnboundType = FieldUnboundColumnType.Decimal;
UFlexibleProzentualeAbweichungBetreuungszeit.CellFormat = "{0:P2}";
UFlexibleProzentualeAbweichungBetreuungszeit.UnboundExpression = $"SUM([{FlexibleBetreuungszeitStdIst.ExpressionFieldName}]) / SUM([{FlexibleBetreuungszeitStdSoll.ExpressionFieldName}])";
UFlexibleProzentualeAbweichungBetreuungszeit.SummaryType = FieldSummaryType.Average;
FlexibleStundensatz.SummaryType = FieldSummaryType.Average;
@@ -159,11 +176,11 @@ namespace BeWo.View.Detail.Report
private void GridControl_CustomCellDisplayText(object sender, PivotCellDisplayTextEventArgs e)
{
if (e.DataField.Name == nameof(FlexibleAnzahlStdSoll))
if (e.DataField.Name == nameof(FlexibleArbeitszeitStdSoll))
{
if (e.RowField != null && (e.RowField.Name == nameof(FlexibleLeistungskategorie) || e.RowField.Name == nameof(FlexibleLeistung)))
{
e.DisplayText = "";
//e.DisplayText = "";
}
}
@@ -224,15 +241,18 @@ namespace BeWo.View.Detail.Report
if (!checkBoxData.IsChecked.HasValue) return;
if (myPivotGridControl.DataSource == null) return;
var conditions = CreateDataBarConditions(_Columns, _Rows, _DataDiff, "GreenSolidDataBar");
var conditions = CreateDataBarConditions(_Columns, _Rows, _DataArbeitszeitDiff, "GreenSolidDataBar");
var conditions2 = CreateDataBarConditions(_Columns, _Rows, _DataBetreuungszeitDiff, "GreenSolidDataBar");
if (checkBoxData.IsChecked.Value)
{
myPivotGridControl.FormatConditions.AddRange(conditions);
myPivotGridControl.FormatConditions.AddRange(conditions2);
}
else
{
myPivotGridControl.FormatConditions.RemoveRange(conditions);
myPivotGridControl.FormatConditions.RemoveRange(conditions2);
}
}
@@ -404,15 +424,18 @@ namespace BeWo.View.Detail.Report
if (myPivotGridControl.DataSource == null) return;
if (!checkBoxDataPer.IsChecked.HasValue) return;
var conditions = CreateDataBarConditions(_Columns, _Rows, _DataPer, "BlueSolidDataBar", 0, 1);
var conditions = CreateDataBarConditions(_Columns, _Rows, _DataArbeitszeitPer, "BlueSolidDataBar", 0, 1);
var conditions2 = CreateDataBarConditions(_Columns, _Rows, _DataBetreuungszeitPer, "BlueSolidDataBar", 0, 1);
if (checkBoxDataPer.IsChecked.Value)
{
myPivotGridControl.FormatConditions.AddRange(conditions);
myPivotGridControl.FormatConditions.AddRange(conditions2);
}
else
{
myPivotGridControl.FormatConditions.RemoveRange(conditions);
myPivotGridControl.FormatConditions.RemoveRange(conditions2);
}
}
@@ -605,9 +628,13 @@ namespace BeWo.View.Detail.Report
public string Leistung { get; set; }
public decimal? IstMinuten { get; set; }
public decimal? IstArbeitszeitMinuten { get; set; }
public decimal? SollMinuten { get; set; }
public decimal? SollArbeitszeitMinuten { get; set; }
public decimal? IstBetreuungszeitMinuten { get; set; }
public decimal? SollBetreuungszeitMinuten { get; set; }
public DateTime StartDatum { get; set; }
@@ -635,13 +662,21 @@ namespace BeWo.View.Detail.Report
public string Notice5 { get; set; }
public decimal? IstStunden => IstMinuten / 60;
public decimal? IstArbeitszeitStunden => IstArbeitszeitMinuten / 60;
public decimal? SollStunden => SollMinuten / 60;
public decimal? SollArbeitszeitStunden => SollArbeitszeitMinuten / 60;
public decimal DifferenzIstSollMinuten => (IstMinuten ?? 0) - (SollMinuten ?? 0);
public decimal DifferenzArbeitszeitIstSollMinuten => (IstArbeitszeitMinuten ?? 0) - (SollArbeitszeitMinuten ?? 0);
public decimal DifferenzIstSollStunden => DifferenzIstSollMinuten / 60;
public decimal DifferenzArbeitszeitIstSollStunden => DifferenzArbeitszeitIstSollMinuten / 60;
public decimal? IstBetreuungszeitStunden => IstBetreuungszeitMinuten / 60;
public decimal? SollBetreuungszeitStunden => SollBetreuungszeitMinuten / 60;
public decimal DifferenzBetreuungszeitIstSollMinuten => (IstBetreuungszeitMinuten ?? 0) - (SollBetreuungszeitMinuten ?? 0);
public decimal DifferenzBetreuungszeitIstSollStunden => DifferenzBetreuungszeitIstSollMinuten / 60;
public static FlexibleReportEntry InitByFlexibleReportEntryDC(FlexibleReportEntryDC entryDC)
{
@@ -654,17 +689,19 @@ namespace BeWo.View.Detail.Report
EmployeeString = entryDC.EmployeeString ?? "<Nicht angegeben>",
SupportConceptOid = entryDC.SupportConceptOid,
SupportConceptString = entryDC.SupportConceptString ?? "<Nicht angegeben>",
IstMinuten = entryDC.IstMinuten,
IstArbeitszeitMinuten = entryDC.IstArbeitszeitMinuten,
IstBetreuungszeitMinuten = entryDC.IstBetreuungszeitMinuten,
StartDatum = entryDC.StartDatum,
EndDatum = entryDC.EndDatum,
Leistung = entryDC.Leistung,
Leistungskategorie = entryDC.Leistungskategorie,
Team = entryDC.Team,
SollMinuten = entryDC.SollMinuten,
SollArbeitszeitMinuten = entryDC.SollArbeitszeitMinuten,
SollBetreuungszeitMinuten = entryDC.SollBetreuungszeitMinuten,
Type = FlexibleReportEntryType.ServiceRecordEntry,
Kilometer = entryDC.Kilometer,
Organisation = entryDC.Organisation,
Rundungspotenzial = (entryDC.IstMinuten ?? 0) - ((decimal)entryDC.EndDatum.Subtract(entryDC.StartDatum).TotalMinutes),
Rundungspotenzial = (entryDC.IstBetreuungszeitMinuten ?? 0) - ((decimal)entryDC.EndDatum.Subtract(entryDC.StartDatum).TotalMinutes),
Betrag = entryDC.Betrag,
Stundensatz = entryDC.Stundensatz,
Notice = entryDC.Notice,
@@ -684,8 +721,10 @@ namespace BeWo.View.Detail.Report
{
flexibleReports.Add(new FlexibleReportEntry()
{
SollMinuten = dummyDC.Soll ?? 0,
IstMinuten = 0m,
SollArbeitszeitMinuten = dummyDC.SollArbeitszeit ?? 0,
IstArbeitszeitMinuten = 0m,
SollBetreuungszeitMinuten = dummyDC.SollBetreuungszeit ?? 0,
IstBetreuungszeitMinuten = 0m,
Betrag = 0,
CustomerOid = dummyDC.CustomerOid,
CustomerString = dummyDC.CustomerString,

View File

@@ -116,6 +116,8 @@ namespace BeWo.ViewModel
public static string PropertyName_DurationMonthYearGes = "DurationMonthYearGes";
public static string PropertyName_Betrag = "Betrag";
private static readonly DateTime NULL_TIME = new DateTime(2000, 1, 1, 0, 0, 1);
private static BitmapImage haekchenBitmapImage = null;
@@ -190,6 +192,8 @@ namespace BeWo.ViewModel
private string _RTFNotice5;
private decimal? _Betrag;
private decimal _RoundedDuration;
private ObservableSortCollection<ValueListEntryDC> _SelectedGoals;
@@ -1482,7 +1486,22 @@ namespace BeWo.ViewModel
get { return _RoundedDuration; }
set { _RoundedDuration = value; }
}
public decimal? Betrag
{
get { return _Betrag; }
set
{
if (AreDifferent(_Betrag, value))
{
_Betrag = value;
StoreDirtyInformation(AreDifferent(DataContract.Betrag, value), PropertyName_Betrag);
FirePropertyChanged(PropertyName_Betrag);
}
}
}
public Brush SelectedBackgroundBrush
{
@@ -2349,9 +2368,9 @@ namespace BeWo.ViewModel
copy.GroupOid = GroupOid;
copy.GroupRoundedDuration = GroupRoundedDuration;
copy.SignatureOid = SignatureOid;
copy.DurationInStunden = DurationInStunden;
copy.ServiceRecordFormat = ServiceRecordFormat;
copy.Betrag = Betrag;
copy.SelectedGoals.Clear();
foreach (var item in SelectedGoals)
@@ -2471,7 +2490,7 @@ namespace BeWo.ViewModel
_GroupOid = pDataContract.GroupOid;
_ServiceRecordType = pDataContract.ServiceRecordType;
_DistanceInMeter = pDataContract.DistanceInMeter;
_Betrag = pDataContract.Betrag;
_DurationInStunden = pDataContract.DurationInStunden;
_ServiceRecordFormat = pDataContract.ServiceRecordFormat;
_SignatureOid = pDataContract.SignatureOid;
@@ -2714,7 +2733,7 @@ namespace BeWo.ViewModel
pDataContract.CostBearer = _CostBearer;
pDataContract.RoundedDuration = RoundedDuration;
pDataContract.ServiceDescription = _ServiceDescription;
pDataContract.Betrag = _Betrag;
//Hack Story dirty information
SameRatingChecked(SelectedGoals, this.DataContract.Goals);

View File

@@ -68,6 +68,8 @@ namespace BeWo.Data.Entities
public static string PropertyName_Notice5 = "Notice5";
public static string PropertyName_Betrag = "Betrag";
private long? _WohnheimbuchungsOid;
private bool _isCreatedInMobileClient;
@@ -138,6 +140,8 @@ namespace BeWo.Data.Entities
private string _Notice5;
private decimal? _Betrag;
public virtual bool IsCreatedInMobileClient
{
@@ -767,5 +771,20 @@ namespace BeWo.Data.Entities
}
}
public virtual decimal? Betrag
{
get
{
return this._Betrag;
}
set
{
if (this.AreDifferent(this._Betrag, value))
{
this._Betrag = value;
}
}
}
}
}

View File

@@ -43,6 +43,7 @@
<property column="RTFNotice3" type="String" name="RTFNotice3" length="1024" />
<property column="RTFNotice4" type="String" name="RTFNotice4" length="1024" />
<property column="RTFNotice5" type="String" name="RTFNotice5" length="1024" />
<property column="Betrag" type="Decimal" name="Betrag" />
<many-to-one name="Group" column="GroupOid" class="BeWo.Data.Entities.ServiceRecordGroup,BeWo.Data" cascade="none" />
<many-to-one name="Employee" column="EmployeeOid" class="BeWo.Data.Entities.Employee,BeWo.Data" cascade="none" />

View File

@@ -17,7 +17,7 @@
<property name="connection.connection_string">
Server=localhost;Password=root;User ID=root; Initial Catalog=bewodemo
Server=localhost;Password=root;User ID=root; Initial Catalog=sab
</property>
<property name="dialect">

View File

@@ -44,6 +44,7 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell50 = new DevExpress.XtraReports.UI.XRTableCell();
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrTableServiceRecords1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -61,7 +62,6 @@ namespace BeWo.Report.DefaultReports
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();
@@ -114,13 +114,13 @@ namespace BeWo.Report.DefaultReports
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((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
@@ -287,6 +287,18 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell50.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell50.Weight = 0.20202019042968572D;
//
// picSignature
//
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(1F, 1F);
this.picSignature.Name = "picSignature";
this.picSignature.SizeF = new System.Drawing.SizeF(158F, 18F);
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
this.picSignature.StylePriority.UseBorders = false;
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -519,10 +531,6 @@ namespace BeWo.Report.DefaultReports
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]";
@@ -1164,17 +1172,9 @@ namespace BeWo.Report.DefaultReports
this.fieldKontaktArt.FieldType = DevExpress.XtraReports.UI.FieldType.String;
this.fieldKontaktArt.Name = "fieldKontaktArt";
//
// picSignature
// bindingSource1
//
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(1F, 1F);
this.picSignature.Name = "picSignature";
this.picSignature.SizeF = new System.Drawing.SizeF(158F, 18F);
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
this.picSignature.StylePriority.UseBorders = false;
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// Quittierungsbeleg
//
@@ -1201,10 +1201,10 @@ namespace BeWo.Report.DefaultReports
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();
}

View File

@@ -53,8 +53,27 @@ namespace AlphaEv.Validation
}
}
bool hasZukunftResult = false;
foreach (var r in list)
{
if (r.ResultType == ServiceRecordValidationResult.Custom && r.Message.Contains("Zukunft"))
{
hasZukunftResult = true;
}
}
if (!hasZukunftResult)
{
if (newServiceRecord.End.Value > DateTime.Now)
{
list.Add(new ServiceRecordValidationResultDC
{
ResultType = ServiceRecordValidationResult.Custom,
Message = "Das gewählte Datum darf nicht in der Zukunft liegen."
});
}
}
return list;
}

View File

@@ -68,8 +68,20 @@ namespace BeWoHeinsberg
{
int newRows = 0;
int index = 1;
DateTime monatStart = new DateTime(pRo.StartDate.Year, pRo.StartDate.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1).AddDays(-1);
foreach (var at in pRo.Abwesenheiten)
{
if (at.Start.HasValue && at.Start < monatStart)
{
at.Start = monatStart;
}
if (!at.End.HasValue || at.End > monatEnde)
{
at.End = monatEnde;
}
DevExpress.XtraReports.UI.XRTableRow row = null;
if (index < xrTableAbwesenheiten.Rows.Count)
{

View File

@@ -68,8 +68,20 @@ namespace BeWoNeuss
{
int newRows = 0;
int index = 1;
DateTime monatStart = new DateTime(pRo.StartDate.Year, pRo.StartDate.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1).AddDays(-1);
foreach (var at in pRo.Abwesenheiten)
{
if (at.Start.HasValue && at.Start < monatStart)
{
at.Start = monatStart;
}
if (!at.End.HasValue || at.End > monatEnde)
{
at.End = monatEnde;
}
DevExpress.XtraReports.UI.XRTableRow row = null;
if (index < xrTableAbwesenheiten.Rows.Count)
{

View File

@@ -61,8 +61,9 @@ namespace BhsSolingen
ServicesOverviewRO flsRo = CopyFromRO(ro);
ServicesOverviewRO assiRo = CopyFromRO(ro);
if (ro.Services != null)
ServicesOverviewRO freizeitRo = CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
@@ -74,7 +75,11 @@ namespace BhsSolingen
}
ServicesOverviewRO.CreateSignatureString(s);
if (s.ServiceCategory.ToLower().StartsWith("assistenz"))
if (s.ServiceCategory.ToLower().Contains("freizeit"))
{
freizeitRo.Services.Add(s);
}
else if (s.ServiceCategory.ToLower().StartsWith("assistenz"))
{
assiRo.Services.Add(s);
}
@@ -88,10 +93,11 @@ namespace BhsSolingen
}
report = AddReportToReport(report, flsRo, false);
report = AddReportToReport(report, assiRo, true);
//report = AddReportToReport(report, eingliederungshilfe);
report = AddReportToReport(report, freizeitRo, true);
if (report == null)
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}

View File

@@ -5,7 +5,9 @@ using System.IO;
using System.Text.RegularExpressions;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.ServiceImplementations;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
namespace BhsSolingen
@@ -21,6 +23,8 @@ namespace BhsSolingen
{
bool hatGruppen = false;
bool isAssistenz = false;
bool isFreizeit = false;
String cat = "";
double minutes = 0;
if (pRO.Services != null)
@@ -38,11 +42,17 @@ namespace BhsSolingen
hatGruppen = true;
}
if (sd.ServiceCategory.StartsWith("Assistenz"))
if (sd.ServiceCategory.ToLower().Contains("freizeit"))
{
isFreizeit = true;
}
else if (sd.ServiceCategory.StartsWith("Assistenz"))
{
isAssistenz = true;
}
cat = sd.ServiceCategory;
minutes += sd.Minutes;
servicesBillable.Add(sd);
}
@@ -77,8 +87,21 @@ namespace BhsSolingen
lblOhneFactor.Text = "";
cellFLSHeader.Text = "Minuten";
cellMinOhne12.Text = "";
}
SetBewilligung(pRO, cat);
}
else if (isFreizeit)
{
lbltitel.Text = "Quittierungsbeleg über Freizeitassistenz";
lblFachleistungInMinuten.Text = "Leistungen in Minuten";
lblLeistungInStd.Text = "Leistungen in Stunden";
lblBewilligteFLSWoche.Text = "Bewilligte Std. wöchentlich";
lblOhneFactor.Text = "";
cellFLSHeader.Text = "Minuten";
cellMinOhne12.Text = "";
SetBewilligung(pRO, cat);
}
bindingSource1.DataSource = pRO;
}
@@ -153,5 +176,44 @@ namespace BhsSolingen
return returnImage;
}
private void SetBewilligung(ServicesOverviewRO pRO, String name)
{
var stats = GetStatistics(pRO, name);
if (stats != null)
{
pRO.ApprovedFLSPerWeek = stats.MinutesApprovedPerWeek / 60;
}
}
private SupportConceptPeriodStatisticsDC GetStatistics(ServicesOverviewRO ro, String name)
{
if (ro.CostBearer2SupportConceptList != null && ro.CostBearer2SupportConceptList.Count > 0)
{
var service = new OperationsServiceImp();
foreach (var cb2sc in ro.CostBearer2SupportConceptList)
{
long cb2scOid = cb2sc.Oid.Value;
var stats = service.CreateSupportConceptStatistics(cb2scOid, ro.EndDate);
if (stats.PeriodStatistics != null && stats.PeriodStatistics.Count > 0)
{
foreach (var ps in stats.PeriodStatistics)
{
if (ps.SupportConceptApprovalPeriod != null && ps.SupportConceptApprovalPeriod.ServiceCategory != null &&
ps.SupportConceptApprovalPeriod.ServiceCategory.Name.StartsWith(name))
{
return ps;
}
}
}
}
}
return null;
}
}
}

View File

@@ -39,6 +39,7 @@ namespace BeWo.Club74
this.xrTableRowDetail = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -51,6 +52,7 @@ namespace BeWo.Club74
this.xrTableRowHeader = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -80,8 +82,6 @@ namespace BeWo.Club74
this.fieldTotalEmp = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldMinutenAnteilOhneFaktor = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldMinutenAnteilGesamt = new DevExpress.XtraReports.UI.CalculatedField();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
@@ -184,6 +184,14 @@ namespace BeWo.Club74
this.xrTableCell19.Text = "xrTableCell19";
this.xrTableCell19.Weight = 0.11722272317403068D;
//
// xrTableCell14
//
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.Name")});
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.Weight = 0.085662717965403784D;
//
// xrTableCell2
//
this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
@@ -204,7 +212,7 @@ namespace BeWo.Club74
// xrTableCell28
//
this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.fieldMinutenAnteilOhneFaktor", "{0:0.##}")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerWeekWithRateFactor", "{0:0.00}")});
this.xrTableCell28.Name = "xrTableCell28";
this.xrTableCell28.Weight = 0.10820581076701984D;
//
@@ -298,6 +306,12 @@ namespace BeWo.Club74
this.xrTableCell4.Text = "Zeitraum";
this.xrTableCell4.Weight = 0.11722272456230544D;
//
// xrTableCell13
//
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Rolle";
this.xrTableCell13.Weight = 0.085662759944653735D;
//
// xrTableCell1
//
this.xrTableCell1.Name = "xrTableCell1";
@@ -315,7 +329,7 @@ namespace BeWo.Club74
//
this.xrTableCell9.Multiline = true;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Text = "Minuten / Woche\r\nAnteil der Betreuung\r\nohne mittelbare Leistungen";
this.xrTableCell9.Text = "Stunden / Woche\r\nAnteil der Betreuung\r\nincl. Mittelbare Leistungen";
this.xrTableCell9.Weight = 0.10820559083698016D;
//
// xrTableCell7
@@ -390,9 +404,9 @@ namespace BeWo.Club74
// cellSollGesamt
//
this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.fieldMinutenAnteilOhneFaktor")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.ApprovedHoursPerWeekWithRateFactor")});
this.cellSollGesamt.Name = "cellSollGesamt";
xrSummary1.FormatString = "{0:0.##}";
xrSummary1.FormatString = "{0:0.00}";
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellSollGesamt.Summary = xrSummary1;
this.cellSollGesamt.Weight = 0.10820555799335835D;
@@ -433,9 +447,9 @@ namespace BeWo.Club74
//
this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F);
this.xrPageInfo2.Format = "Seite {0} von {1}";
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(369.9997F, 25F);
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(660.0001F, 25F);
this.xrPageInfo2.Name = "xrPageInfo2";
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(320.0003F, 23F);
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(85.00006F, 23F);
this.xrPageInfo2.StyleName = "PageInfo";
this.xrPageInfo2.StylePriority.UseFont = false;
this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
@@ -524,7 +538,7 @@ namespace BeWo.Club74
// fieldMinutenAnteilOhneFaktor
//
this.fieldMinutenAnteilOhneFaktor.DataMember = "EmployeeDetailList.SupportConceptDetailList";
this.fieldMinutenAnteilOhneFaktor.Expression = "[ApprovedHoursPerWeek] * 60";
this.fieldMinutenAnteilOhneFaktor.Expression = "[ApprovedHoursPerWeek]";
this.fieldMinutenAnteilOhneFaktor.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldMinutenAnteilOhneFaktor.Name = "fieldMinutenAnteilOhneFaktor";
//
@@ -533,20 +547,6 @@ namespace BeWo.Club74
this.fieldMinutenAnteilGesamt.DataMember = "EmployeeDetailList";
this.fieldMinutenAnteilGesamt.Name = "fieldMinutenAnteilGesamt";
//
// xrTableCell13
//
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Rolle";
this.xrTableCell13.Weight = 0.085662759944653735D;
//
// xrTableCell14
//
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.Name")});
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.Weight = 0.085662717965403784D;
//
// Mitarbeiterauslastung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {

View File

@@ -0,0 +1,95 @@
<?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>{25AE0253-30AC-4E85-9FA4-2F8FADA62787}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DiakonischesWerkHerne</RootNamespace>
<AssemblyName>3257905806_Reports</AssemblyName>
<TargetFrameworkVersion>v4.5</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="Properties\AssemblyInfo.cs" />
<Compile Include="QuittierungsbelegBlanko.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="QuittierungsbelegBlanko.Designer.cs">
<DependentUpon>QuittierungsbelegBlanko.cs</DependentUpon>
</Compile>
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.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="Properties\licenses.licx" />
<EmbeddedResource Include="QuittierungsbelegBlanko.resx">
<DependentUpon>QuittierungsbelegBlanko.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,72 @@
<?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>{C1FED668-ADB9-47E0-B589-1389618E1B6E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>KundeXyz</RootNamespace>
<AssemblyName>0000000000_Reports</AssemblyName>
<TargetFrameworkVersion>v4.5</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="Properties\AssemblyInfo.cs" />
</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>
<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("KundeXyz")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KundeXyz")]
[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,132 @@
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 DiakonischesWerkHerne
{
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;
}
}
}
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)
{
Image returnImage = null;
MemoryStream ms = new System.IO.MemoryStream(byteArrayIn);
returnImage = Image.FromStream(ms);
return returnImage;
}
}
}

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>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Services;
using DevExpress.XtraReports.UI;
namespace DiakonischesWerkHerne
{
public partial class QuittierungsbelegBlanko : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
public QuittierungsbelegBlanko()
{
InitializeComponent();
}
public void SetReportDataSource(QueryRO pRO)
{
InitTable(pRO);
this.bindingSource1.DataSource = pRO;
}
private void InitTable(QueryRO ro)
{
DateTime startMonat = DateTime.MinValue;
DateTime endMonat = DateTime.MinValue;
long c2sOid = 0;
foreach (BeWo.Report.ReportObjects.QueryRO.Row row in ro.Rows)
{
if (startMonat == DateTime.MinValue)
{
startMonat = DateTime.Parse(row.Field1.ToString());
}
long oid = 0;
//if (Int64.TryParse(row.Field3.ToString(), out oid))
//{
// var emp = DAOFactory.GenericDAO.LoadByID<Employee>(oid);
// lblMitarbeiter.Text = String.Format("{0} {1}", emp.Person.FirstName, emp.Person.LastName);
//}
//oid = 0;
if (Int64.TryParse(row.Field2.ToString(), out oid))
{
c2sOid = oid;
//lblKlient.Text = String.Format("{0} {1}", cust.Person.FirstName, cust.Person.LastName);
}
}
List<CostBearer2SupportConcept> c2sList = new List<CostBearer2SupportConcept>();
if (c2sOid > 0)
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid);
c2sList.Add(c2s);
}
else
{
var all = DAOFactory.GenericDAO.GetAllActive<CostBearer2SupportConcept>();
foreach (var c2s in all)
{
if (c2s.SupportConcept.IsActive == ActivationTypeId.Active &&
c2s.SupportConcept.Customer.IsActive == ActivationTypeId.Active)
{
if (c2s.StartDate < startMonat.AddDays(1) && c2s.EndDate >= startMonat)
{
c2sList.Add(c2s);
}
//if (c2s.CostBearer.Organisation.Name == "LVR")
//{
// if (c2s.StartDate < startMonat.AddDays(1) && c2s.EndDate >= startMonat)
// {
// c2sList.Add(c2s);
// }
//}
}
}
}
ro.Rows.Clear();
var calc = new Calculations();
foreach (var c in c2sList)
{
var customerRow = new QueryRO.Row();
customerRow.ChildRows1 = new List<QueryRO.Row>();
ro.Rows.Add(customerRow);
customerRow.Field1 = String.Format("{0:MMMM yyyy}", startMonat);
customerRow.Field2 = String.Format("{0} {1}", c.SupportConcept.Customer.Person.FirstName, c.SupportConcept.Customer.Person.LastName);
customerRow.Field3 = String.Format("{0}", c.CustomerReferenceNumber);
customerRow.Field4 = String.Format("{0:0.##}", calc.GetApprovedHoursPerWeek(MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(c), startMonat, false));
customerRow.Field5 = String.Format("{0} {1}", c.SupportConcept.Customer.Person.LastName, c.SupportConcept.Customer.Person.FirstName);
for (int i = 1; i <= 20; i++)
{
var dayRow = new QueryRO.Row();
customerRow.ChildRows1.Add(dayRow);
}
}
ro.Rows.Sort((a, b) => a.Field5.ToString().CompareTo(b.Field5));
}
}
}

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

View File

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

View File

@@ -97,7 +97,7 @@ namespace KontaktUndKrisenhilfe.Invoicing
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc, bool summaryPerMonth)
{
var items = base.CreateSummaryInvoiceItems(itemList, invoicePeriod, scap, calc, summaryPerMonth);
var items = base.CreateSummaryInvoiceItems(itemList, invoicePeriod, scap, calc, summaryPerMonth, true);
foreach (var ii in items)
{
ii.ItemDescription = "Direkte Leistung";

View File

@@ -24,7 +24,162 @@ namespace LebenshilfeFrankfurtOder
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateAdditionalServiceBookingReport(long addServiceRegionOid, Monat month, int year)
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
if (lROs.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
if (rootReport.Pages.Count == 0)
{
rootReport.CreateDocument();
}
for (int i = 1; i < lROs.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
if (lNext.Pages.Count == 0)
{
lNext.CreateDocument();
}
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
XtraReport report = null;
ServicesOverviewRO entRo = CopyFromRO(ro);
ServicesOverviewRO kurzRo = CopyFromRO(ro);
ServicesOverviewRO verRo = CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
if (s.IsBillable)
{
ServicesOverviewRO.CreateSignatureString(s);
var cat = s.ServiceCategory.ToLower().Replace(" ", "");
if (cat.Contains("§45"))
{
entRo.Services.Add(s);
}
else if (s.ServiceCategory.ToLower().StartsWith("§42"))
{
kurzRo.Services.Add(s);
}
else if (s.ServiceCategory.ToLower().StartsWith("§39"))
{
verRo.Services.Add(s);
}
}
}
}
report = AddReportToReport(report, new LeistungsnachweisVerhinderungspflege(), verRo);
report = AddReportToReport(report, new LeistungsnachweisKurzzeitpflege(), kurzRo);
report = AddReportToReport(report, new LeistungsnachweisEntlastungsleistungen(), entRo);
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private ServicesOverviewRO CopyFromRO(ServicesOverviewRO ro)
{
ServicesOverviewRO newRo = new ServicesOverviewRO();
newRo.StartDate = ro.StartDate;
newRo.Abwesenheiten = ro.Abwesenheiten;
newRo.AbsenceTimes = ro.AbsenceTimes;
newRo.ApprovedEndDate = ro.ApprovedEndDate;
newRo.ApprovedFLSPerMonth = ro.ApprovedFLSPerMonth;
newRo.ApprovedFLSPerMonthTotal = ro.ApprovedFLSPerMonthTotal;
newRo.ApprovedFLSPerWeek = ro.ApprovedFLSPerWeek;
newRo.ApprovedFLSPerWeekTotal = ro.ApprovedFLSPerWeekTotal;
newRo.ApprovedFLSTotal = ro.ApprovedFLSTotal;
newRo.ApprovedStartDate = ro.ApprovedStartDate;
newRo.ContactEmployee = ro.ContactEmployee;
newRo.CostBearer2SupportConceptList = ro.CostBearer2SupportConceptList;
newRo.Costbearer = ro.Costbearer;
newRo.CustomerBirthday = ro.CustomerBirthday;
newRo.CustomerLastName = ro.CustomerLastName;
newRo.CustomerCity = ro.CustomerCity;
newRo.CustomerFirstName = ro.CustomerFirstName;
newRo.CustomerName = ro.CustomerName;
newRo.CustomerPostalCode = ro.CustomerPostalCode;
newRo.CustomerStreet = ro.CustomerStreet;
newRo.EndDate = ro.EndDate;
newRo.FreeMinutesThisMonth = ro.FreeMinutesThisMonth;
newRo.Month = ro.Month;
newRo.Year = ro.Year;
newRo.MainAttendant = ro.MainAttendant;
newRo.MainAttendantCommaSeperated = ro.MainAttendantCommaSeperated;
newRo.ReferenceNumber = ro.ReferenceNumber;
newRo.TotalFLMBillable = ro.TotalFLMBillable;
newRo.TotalFLM = ro.TotalFLM;
newRo.TotalFLMQualified = ro.TotalFLMQualified;
newRo.TotalFLMUnqualified = ro.TotalFLMUnqualified;
newRo.TotalFLS = ro.TotalFLS;
newRo.TotalFLSQualified = ro.TotalFLSQualified;
newRo.TotalFLSUnqualified = ro.TotalFLSUnqualified;
newRo.TotalFLSPerCostBearer = ro.TotalFLSPerCostBearer;
newRo.TotalGefahreneKilometer = ro.TotalGefahreneKilometer;
newRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
newRo.Mandator = ro.Mandator;
return newRo;
}
private XtraReport AddReportToReport(XtraReport masterReport, IBeWoReport<ServicesOverviewRO> newReport, ServicesOverviewRO ro)
{
if (ro.Services.Count > 0)
{
newReport.SetReportDataSource(ro);
((XtraReport)newReport).CreateDocument();
if (masterReport == null)
{
masterReport = newReport as XtraReport;
}
else
{
if (masterReport.Pages.Count == 0)
{
masterReport.CreateDocument();
}
masterReport.Pages.AddRange(((XtraReport)newReport).Pages);
}
}
return masterReport;
}
public override XtraReport CreateAdditionalServiceBookingReport(long addServiceRegionOid, Monat month, int year)
{
IBeWoReport<AdditionalServiceBookingRO> report = null;

View File

@@ -69,6 +69,18 @@
<Compile Include="Invoicing\TagesstrukturInvoiceCreation.cs" />
<Compile Include="Invoicing\DefaultInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="LeistungsnachweisEntlastungsleistungen.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="LeistungsnachweisEntlastungsleistungen.Designer.cs">
<DependentUpon>LeistungsnachweisEntlastungsleistungen.cs</DependentUpon>
</Compile>
<Compile Include="LeistungsnachweisKurzzeitpflege.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="LeistungsnachweisKurzzeitpflege.Designer.cs">
<DependentUpon>LeistungsnachweisKurzzeitpflege.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RechnungWstEinzel.cs">
<SubType>Component</SubType>
@@ -112,6 +124,12 @@
<Compile Include="RechnungTagesstruktur.Designer.cs">
<DependentUpon>RechnungTagesstruktur.cs</DependentUpon>
</Compile>
<Compile Include="LeistungsnachweisVerhinderungspflege.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="LeistungsnachweisVerhinderungspflege.Designer.cs">
<DependentUpon>LeistungsnachweisVerhinderungspflege.cs</DependentUpon>
</Compile>
<Compile Include="Statistics\CustomServiceRecordStatisticFactory.cs" />
<Compile Include="Utils\FrankfurtOderHelper.cs" />
</ItemGroup>
@@ -122,6 +140,14 @@
<EmbeddedResource Include="AdditionalServiceBookingReport.resx">
<DependentUpon>AdditionalServiceBookingReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LeistungsnachweisEntlastungsleistungen.resx">
<DependentUpon>LeistungsnachweisEntlastungsleistungen.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="LeistungsnachweisKurzzeitpflege.resx">
<DependentUpon>LeistungsnachweisKurzzeitpflege.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="RechnungWstEinzel.resx">
<DependentUpon>RechnungWstEinzel.cs</DependentUpon>
@@ -151,6 +177,10 @@
<DependentUpon>RechnungTagesstruktur.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="LeistungsnachweisVerhinderungspflege.resx">
<DependentUpon>LeistungsnachweisVerhinderungspflege.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,193 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Extensions;
using DevExpress.Entity.Model.Metadata;
using DevExpress.XtraPrinting;
using DevExpress.XtraReports.UI;
namespace LebenshilfeFrankfurtOder
{
public partial class LeistungsnachweisEntlastungsleistungen : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public LeistungsnachweisEntlastungsleistungen()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
SetzeDaten(pRO);
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
{
if (s.IsBillable)
{
servicesBillable.Add(s);
}
}
if (servicesBillable.Count < 16)
{
for (int i = servicesBillable.Count; i < 16; i++)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
}
if (servicesBillable.Count % 2 == 1)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
decimal? gesamtPreis = null;
decimal? gesamtDauer = null;
decimal? gesamtKm = null;
foreach (ServicesOverviewRO.ServiceDetail s in servicesBillable)
{
s.Notice3 = "";
s.Notice4 = "";
s.Notice5 = "";
if (s.StartDate > DateTime.MinValue)
{
s.Notice4 = String.Format("{0:dd.MM.yyyy}", s.StartDate);
s.Notice3 = String.Format("{0:0.00}", s.Minutes / 60);
if (s.ServiceRecordOid > 0)
{
decimal? preis = GetPreisUndSetzeDauer(s);
if (preis.HasValue)
{
s.Notice5 = String.Format("{0:0.00}", preis);
gesamtPreis = (gesamtPreis ?? 0) + preis.Value;
}
gesamtDauer = (gesamtDauer ?? 0) + (decimal)s.Minutes;
if (!String.IsNullOrWhiteSpace(s.GefahreneKilometer) && s.GefahreneKilometer != "0")
{
decimal km = 0;
if (Decimal.TryParse(s.GefahreneKilometer, out km))
{
gesamtKm = (gesamtKm ?? 0) + km;
}
}
}
}
}
cellKmGesamt.Text = String.Format("{0:0.##}", gesamtKm);
//cellStundenGesamt.Text = String.Format("{0:0.00}", gesamtDauer / 60);
cellPreisGesamt.Text = String.Format("{0:0.00}€", gesamtPreis);
servicesBillable = SortServices(servicesBillable);
pRO.Services = servicesBillable;
}
bindingSource1.DataSource = pRO;
}
private List<ServicesOverviewRO.ServiceDetail> SortServices(List<ServicesOverviewRO.ServiceDetail> servicesBillable)
{
List<ServicesOverviewRO.ServiceDetail> sorted = new List<ServicesOverviewRO.ServiceDetail>();
int halb = servicesBillable.Count / 2;
for (int i = 1; i <= halb; i++)
{
int targetIdx = i;
sorted.Add(servicesBillable[targetIdx-1]);
sorted.Add(servicesBillable[targetIdx + halb - 1]);
}
return sorted;
}
private decimal? GetPreisUndSetzeDauer(ServicesOverviewRO.ServiceDetail sd)
{
decimal? preis = null;
if (sd.ServiceRecordOid > 0)
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(sd.ServiceRecordOid);
var crList = sr.ServiceDescription.CostRatePeriods;
if (crList != null && crList.Count > 0)
{
var dcList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(crList);
var crp = dcList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, sd.StartDate);
if (crp != null)
{
preis = crp.CostRateValue;
}
}
if (sr.ServiceDescription.AccountingInterval.HasValue && (sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.Daily || sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.FlatRate))
{
sd.Notice3 = "1";
}
}
return preis;
}
public void SetzeDaten(ServicesOverviewRO pRO)
{
if (pRO.CostBearer2SupportConceptList != null && pRO.CostBearer2SupportConceptList.Count > 0)
{
var c2s = pRO.CostBearer2SupportConceptList[0];
Customer c = c2s.SupportConcept.Customer;
if (c.Pflegegrad.HasValue && c.Pflegegrad.Value != Pflegegrad.KeinGrad &&
c.Pflegegrad.Value != Pflegegrad.PflegegradBeantragt)
{
lblPflegegrad.Text = EnumTranslations.PflegegradTranslations[c.Pflegegrad].Replace("Pflegegrad", "")
.Trim();
}
else
{
lblPflegegrad.Text = "";
}
String kvnummer = ""; // Oid = 4
foreach (var vv in c.VarFieldValueList)
{
var varFieldValue =
BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
if (varFieldValue != null)
{
if (vv.VarFieldDefOid.Value == 4)
{
kvnummer = varFieldValue.ToString();
}
}
}
lblKvNummer.Text = kvnummer;
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,188 @@
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;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace LebenshilfeFrankfurtOder
{
public partial class LeistungsnachweisKurzzeitpflege : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public LeistungsnachweisKurzzeitpflege()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
SetzeDaten(pRO);
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
{
if (s.IsBillable)
{
servicesBillable.Add(s);
}
}
if (servicesBillable.Count < 16)
{
for (int i = servicesBillable.Count; i < 16; i++)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
}
if (servicesBillable.Count % 2 == 1)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
decimal? gesamtPreis = null;
decimal? gesamtDauer = null;
decimal? gesamtKm = null;
foreach (ServicesOverviewRO.ServiceDetail s in servicesBillable)
{
s.Notice3 = "";
s.Notice4 = "";
s.Notice5 = "";
if (s.StartDate > DateTime.MinValue)
{
s.Notice4 = String.Format("{0:dd.MM.yyyy}", s.StartDate);
s.Notice3 = String.Format("{0:0.00}", s.Minutes / 60);
if (s.ServiceRecordOid > 0)
{
decimal? preis = GetPreisUndSetzeDauer(s);
if (preis.HasValue)
{
s.Notice5 = String.Format("{0:0.00}", preis);
gesamtPreis = (gesamtPreis ?? 0) + preis.Value;
}
gesamtDauer = (gesamtDauer ?? 0) + (decimal)s.Minutes;
if (!String.IsNullOrWhiteSpace(s.GefahreneKilometer) && s.GefahreneKilometer != "0")
{
decimal km = 0;
if (Decimal.TryParse(s.GefahreneKilometer, out km))
{
gesamtKm = (gesamtKm ?? 0) + km;
}
}
}
}
}
cellKmGesamt.Text = String.Format("{0:0.##}", gesamtKm);
//cellStundenGesamt.Text = String.Format("{0:0.00}", gesamtDauer / 60);
cellPreisGesamt.Text = String.Format("{0:0.00}€", gesamtPreis);
servicesBillable = SortServices(servicesBillable);
pRO.Services = servicesBillable;
}
bindingSource1.DataSource = pRO;
}
private List<ServicesOverviewRO.ServiceDetail> SortServices(List<ServicesOverviewRO.ServiceDetail> servicesBillable)
{
List<ServicesOverviewRO.ServiceDetail> sorted = new List<ServicesOverviewRO.ServiceDetail>();
int halb = servicesBillable.Count / 2;
for (int i = 1; i <= halb; i++)
{
int targetIdx = i;
sorted.Add(servicesBillable[targetIdx-1]);
sorted.Add(servicesBillable[targetIdx + halb - 1]);
}
return sorted;
}
private decimal? GetPreisUndSetzeDauer(ServicesOverviewRO.ServiceDetail sd)
{
decimal? preis = null;
if (sd.ServiceRecordOid > 0)
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(sd.ServiceRecordOid);
var crList = sr.ServiceDescription.CostRatePeriods;
if (crList != null && crList.Count > 0)
{
var dcList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(crList);
var crp = dcList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, sd.StartDate);
if (crp != null)
{
preis = crp.CostRateValue;
}
}
if (sr.ServiceDescription.AccountingInterval.HasValue && (sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.Daily || sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.FlatRate))
{
sd.Notice3 = "1";
}
}
return preis;
}
public void SetzeDaten(ServicesOverviewRO pRO)
{
if (pRO.CostBearer2SupportConceptList != null && pRO.CostBearer2SupportConceptList.Count > 0)
{
var c2s = pRO.CostBearer2SupportConceptList[0];
Customer c = c2s.SupportConcept.Customer;
if (c.Pflegegrad.HasValue && c.Pflegegrad.Value != Pflegegrad.KeinGrad &&
c.Pflegegrad.Value != Pflegegrad.PflegegradBeantragt)
{
lblPflegegrad.Text = EnumTranslations.PflegegradTranslations[c.Pflegegrad].Replace("Pflegegrad", "")
.Trim();
}
else
{
lblPflegegrad.Text = "";
}
String kvnummer = ""; // Oid = 4
foreach (var vv in c.VarFieldValueList)
{
var varFieldValue =
BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
if (varFieldValue != null)
{
if (vv.VarFieldDefOid.Value == 4)
{
kvnummer = varFieldValue.ToString();
}
}
}
lblKvNummer.Text = kvnummer;
}
}
}
}

View File

@@ -0,0 +1,217 @@
<?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>
<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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
</value>
</data>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AewBcAGYAMwBcAGYAYwBoAGEAcgBzAGUAdAAyACAAVwBpAG4AZwBkAGkAbgBnAHMAOwB9AH0AewBcAGMAbwBsAG8AcgB0AGIAbAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADAAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAyADUANQAgADsAfQB7AFwAKgBcAGQAZQBmAGMAaABwACAAXABmADEAXABmAHMAMgA0AH0AewBcAHMAdAB5AGwAZQBzAGgAZQBlAHQAIAB7AFwAcQBsAFwAZgAxAFwAZgBzADIANAAgAE4AbwByAG0AYQBsADsAfQB7AFwAcwAxAFwAcwBiAGEAcwBlAGQAbwBuADAAXABzAG4AZQB4AHQAMQBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AIABTAHAAYQBjAGkAbgBnADsAfQB7AFwAKgBcAGMAcwAyAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAARABlAGYAYQB1AGwAdAAgAFAAYQByAGEAZwByAGEAcABoACAARgBvAG4AdAA7AH0AewBcACoAXABjAHMAMwBcAHMAYgBhAHMAZQBkAG8AbgAyAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAATABpAG4AZQAgAE4AdQBtAGIAZQByADsAfQB7AFwAKgBcAGMAcwA0AFwAdQBsAFwAZgAxAFwAZgBzADIANABcAGMAZgAyACAASAB5AHAAZQByAGwAaQBuAGsAOwB9AHsAXAAqAFwAdABzADUAXAB0AHMAcgBvAHcAZABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAdAAzAFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABOAG8AcgBtAGEAbAAgAFQAYQBiAGwAZQA7AH0AewBcACoAXAB0AHMANgBcAHQAcwByAG8AdwBkAFwAcwBiAGEAcwBlAGQAbwBuADUAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdAByAGIAcgBkAHIAdABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBsAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAcgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBoAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHYAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAFQAYQBiAGwAZQAgAFMAaQBtAHAAbABlACAAMQA7AH0AfQB7AFwAKgBcAGwAaQBzAHQAbwB2AGUAcgByAGkAZABlAHQAYQBiAGwAZQB9AFwAbgBvAHUAaQBjAG8AbQBwAGEAdABcAHMAcABsAHkAdAB3AG4AaQBuAGUAXABoAHQAbQBhAHUAdABzAHAAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcwAxAFwAcQBsAHsAXABmAGkAZQBsAGQAewBcACoAXABmAGwAZABpAG4AcwB0AHsAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABTAFkATQBCAE8ATAAgADEAMQAxACAAXABcAGYAIAAiAFcAaQBuAGcAZABpAG4AZwBzACIAIABcAFwAcwAgADEAMAB9AH0AewBcAGYAbABkAHIAcwBsAHQAewBcAGYAMwBcAGYAcwAyADAAXABjAGYAMQAgAG8AfQB9AH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAIABJAGMAaAAgAGgAYQBiAGUAIABkAGkAZQAgAGkAbQAgAEwAZQBpAHMAdAB1AG4AZwBzAG4AYQBjAGgAdwBlAGkAcwAgAGQAbwBrAHUAbQBlAG4AdABpAGUAcgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBlAG4AIABpAG4AIABBAG4AcwBwAHIAdQBjAGgAIABnAGUAbgBvAG0AbQBlAG4AIAB1AG4AZAAgAGIAZQBzAHQAXAB1ADIAMgA4AFwAJwBlADQAdABpAGcAZQAgAGQAaQBlACAAQQByAHQAIAB1AG4AZAAgAGQAaQBlACAATQBlAG4AZwBlACAAZABlAHIAIABnAGUAbgBhAG4AbgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBlAG4ALgB9AFwAZgAyAFwAZgBzADIAMABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcwAxAFwAcQBsAHsAXABmAGkAZQBsAGQAewBcACoAXABmAGwAZABpAG4AcwB0AHsAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABTAFkATQBCAE8ATAAgADEAMQAxACAAXABcAGYAIAAiAFcAaQBuAGcAZABpAG4AZwBzACIAIABcAFwAcwAgADEAMAB9AH0AewBcAGYAbABkAHIAcwBsAHQAewBcAGYAMwBcAGYAcwAyADAAXABjAGYAMQAgAG8AfQB9AH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAIABJAGMAaAAgAGIAZQBhAHUAZgB0AHIAYQBnAGUAIABkAGkAZQAgAFAAZgBsAGUAZwBlAGsAYQBzAHMAZQAsACAAZABlAG4AIABzAGkAYwBoACAAYQB1AGYAIABkAGUAcgAgAEcAcgB1AG4AZABsAGEAZwBlACAAZABlAHIAIABvAC4AZwAuACAARQBpAG4AegBlAGwAcAByAGUAaQBzAGUAIABlAHIAZwBlAGIAZQBuAGUAbgAgAEcAZQBzAGEAbQB0AGIAZQB0AHIAYQBnACAAZgBcAHUAMgA1ADIAXAAnAGYAYwByACAAZABpAGUAIABtAGkAcgAgAHoAdQBzAHQAZQBoAGUAbgBkAGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBlAG4AIABuAGEAYwBoACAAXAB1ADEANgA3AFwAJwBhADcAfQB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAANAAyAH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAUwBHAEIAIABYAEkAIABmAFwAdQAyADUAMgBcACcAZgBjAHIAIABkAGUAbgAgAG8ALgBnAC4AIABaAGUAaQB0AHIAYQB1AG0AIABhAG4AIABmAG8AbABnAGUAbgBkAGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBzAGUAcgBiAHIAaQBuAGcAZQByACAAegB1ACAAegBhAGgAbABlAG4ALgAgAEkAYwBoACAAdAByAGUAdABlACAAaQBuAHMAbwB3AGUAaQB0ACAAbQBlAGkAbgBlACAAQQBuAHMAcAByAFwAdQAyADUAMgBcACcAZgBjAGMAaABlACAAYQBuACAAZABlAG4AIABnAGUAbgBhAG4AbgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBzAGUAcgBiAHIAaQBuAGcAZQByACAAYQBiAC4AfQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHMAMQBcAHEAbAB7AFwAYgBcAGYAMgBcAGYAcwAyADQAXABjAGYAMQAgAEwAZQBiAGUAbgBzAGgAaQBsAGYAZQAgAEYAcgBhAG4AawBmAHUAcgB0ACAAKABPAGQAZQByACkAIABlAC4AVgAuACwAIABIAGEAbgBzAGEAcwB0AHIAYQBcAHUAMgAyADMAXAAnAGQAZgBlACAAMwAsACAAMQA1ADIAMwA0ACAARgByAGEAbgBrAGYAdQByAHQAIAAoAE8AZABlAHIAKQAuAH0AXABiAFwAZgAyAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQBcAHAAYQByAH0A</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,188 @@
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;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace LebenshilfeFrankfurtOder
{
public partial class LeistungsnachweisVerhinderungspflege : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public LeistungsnachweisVerhinderungspflege()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
SetzeDaten(pRO);
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
{
if (s.IsBillable)
{
servicesBillable.Add(s);
}
}
if (servicesBillable.Count < 16)
{
for (int i = servicesBillable.Count; i < 16; i++)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
}
if (servicesBillable.Count % 2 == 1)
{
ServicesOverviewRO.ServiceDetail emptyDetail = new ServicesOverviewRO.ServiceDetail();
servicesBillable.Add(emptyDetail);
}
decimal? gesamtPreis = null;
decimal? gesamtDauer = null;
decimal? gesamtKm = null;
foreach (ServicesOverviewRO.ServiceDetail s in servicesBillable)
{
s.Notice3 = "";
s.Notice4 = "";
s.Notice5 = "";
if (s.StartDate > DateTime.MinValue)
{
s.Notice4 = String.Format("{0:dd.MM.yyyy}", s.StartDate);
s.Notice3 = String.Format("{0:0.00}", s.Minutes / 60);
if (s.ServiceRecordOid > 0)
{
decimal? preis = GetPreisUndSetzeDauer(s);
if (preis.HasValue)
{
s.Notice5 = String.Format("{0:0.00}", preis);
gesamtPreis = (gesamtPreis ?? 0) + preis.Value;
}
gesamtDauer = (gesamtDauer ?? 0) + (decimal)s.Minutes;
if (!String.IsNullOrWhiteSpace(s.GefahreneKilometer) && s.GefahreneKilometer != "0")
{
decimal km = 0;
if (Decimal.TryParse(s.GefahreneKilometer, out km))
{
gesamtKm = (gesamtKm ?? 0) + km;
}
}
}
}
}
cellKmGesamt.Text = String.Format("{0:0.##}", gesamtKm);
//cellStundenGesamt.Text = String.Format("{0:0.00}", gesamtDauer / 60);
cellPreisGesamt.Text = String.Format("{0:0.00}€", gesamtPreis);
servicesBillable = SortServices(servicesBillable);
pRO.Services = servicesBillable;
}
bindingSource1.DataSource = pRO;
}
private List<ServicesOverviewRO.ServiceDetail> SortServices(List<ServicesOverviewRO.ServiceDetail> servicesBillable)
{
List<ServicesOverviewRO.ServiceDetail> sorted = new List<ServicesOverviewRO.ServiceDetail>();
int halb = servicesBillable.Count / 2;
for (int i = 1; i <= halb; i++)
{
int targetIdx = i;
sorted.Add(servicesBillable[targetIdx-1]);
sorted.Add(servicesBillable[targetIdx + halb - 1]);
}
return sorted;
}
private decimal? GetPreisUndSetzeDauer(ServicesOverviewRO.ServiceDetail sd)
{
decimal? preis = null;
if (sd.ServiceRecordOid > 0)
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(sd.ServiceRecordOid);
var crList = sr.ServiceDescription.CostRatePeriods;
if (crList != null && crList.Count > 0)
{
var dcList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(crList);
var crp = dcList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, sd.StartDate);
if (crp != null)
{
preis = crp.CostRateValue;
}
}
if (sr.ServiceDescription.AccountingInterval.HasValue && (sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.Daily || sr.ServiceDescription.AccountingInterval.Value == AccountingIntervalType.FlatRate))
{
sd.Notice3 = "1";
}
}
return preis;
}
public void SetzeDaten(ServicesOverviewRO pRO)
{
if (pRO.CostBearer2SupportConceptList != null && pRO.CostBearer2SupportConceptList.Count > 0)
{
var c2s = pRO.CostBearer2SupportConceptList[0];
Customer c = c2s.SupportConcept.Customer;
if (c.Pflegegrad.HasValue && c.Pflegegrad.Value != Pflegegrad.KeinGrad &&
c.Pflegegrad.Value != Pflegegrad.PflegegradBeantragt)
{
lblPflegegrad.Text = EnumTranslations.PflegegradTranslations[c.Pflegegrad].Replace("Pflegegrad", "")
.Trim();
}
else
{
lblPflegegrad.Text = "";
}
//String kvnummer = ""; // Oid = 4
//foreach (var vv in c.VarFieldValueList)
//{
// var varFieldValue =
// BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
// if (varFieldValue != null)
// {
// if (vv.VarFieldDefOid.Value == 4)
// {
// kvnummer = varFieldValue.ToString();
// }
// }
//}
//lblKvNummer.Text = kvnummer;
}
}
}
}

View File

@@ -0,0 +1,217 @@
<?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>
<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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
</value>
</data>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AewBcAGYAMwBcAGYAYwBoAGEAcgBzAGUAdAAyACAAVwBpAG4AZwBkAGkAbgBnAHMAOwB9AH0AewBcAGMAbwBsAG8AcgB0AGIAbAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADAAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAyADUANQAgADsAfQB7AFwAKgBcAGQAZQBmAGMAaABwACAAXABmADEAXABmAHMAMgA0AH0AewBcAHMAdAB5AGwAZQBzAGgAZQBlAHQAIAB7AFwAcQBsAFwAZgAxAFwAZgBzADIANAAgAE4AbwByAG0AYQBsADsAfQB7AFwAcwAxAFwAcwBiAGEAcwBlAGQAbwBuADAAXABzAG4AZQB4AHQAMQBcAHEAbABcAGYAMQBcAGYAcwAyADQAIABOAG8AIABTAHAAYQBjAGkAbgBnADsAfQB7AFwAKgBcAGMAcwAyAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAARABlAGYAYQB1AGwAdAAgAFAAYQByAGEAZwByAGEAcABoACAARgBvAG4AdAA7AH0AewBcACoAXABjAHMAMwBcAHMAYgBhAHMAZQBkAG8AbgAyAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAATABpAG4AZQAgAE4AdQBtAGIAZQByADsAfQB7AFwAKgBcAGMAcwA0AFwAdQBsAFwAZgAxAFwAZgBzADIANABcAGMAZgAyACAASAB5AHAAZQByAGwAaQBuAGsAOwB9AHsAXAAqAFwAdABzADUAXAB0AHMAcgBvAHcAZABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAdAAzAFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABOAG8AcgBtAGEAbAAgAFQAYQBiAGwAZQA7AH0AewBcACoAXAB0AHMANgBcAHQAcwByAG8AdwBkAFwAcwBiAGEAcwBlAGQAbwBuADUAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdAByAGIAcgBkAHIAdABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBsAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAcgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBoAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHYAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAFQAYQBiAGwAZQAgAFMAaQBtAHAAbABlACAAMQA7AH0AfQB7AFwAKgBcAGwAaQBzAHQAbwB2AGUAcgByAGkAZABlAHQAYQBiAGwAZQB9AFwAbgBvAHUAaQBjAG8AbQBwAGEAdABcAHMAcABsAHkAdAB3AG4AaQBuAGUAXABoAHQAbQBhAHUAdABzAHAAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcwAxAFwAcQBsAHsAXABmAGkAZQBsAGQAewBcACoAXABmAGwAZABpAG4AcwB0AHsAXABmADIAXABmAHMAMgAwAFwAYwBmADAAIABTAFkATQBCAE8ATAAgADEAMQAxACAAXABcAGYAIAAiAFcAaQBuAGcAZABpAG4AZwBzACIAIABcAFwAcwAgADEAMAB9AH0AewBcAGYAbABkAHIAcwBsAHQAewBcAGYAMwBcAGYAcwAyADAAXABjAGYAMQAgAG8AfQB9AH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMAAgACAAIABJAGMAaAAgAGgAYQBiAGUAIABkAGkAZQAgAGkAbQAgAEwAZQBpAHMAdAB1AG4AZwBzAG4AYQBjAGgAdwBlAGkAcwAgAGQAbwBrAHUAbQBlAG4AdABpAGUAcgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBlAG4AIABpAG4AIABBAG4AcwBwAHIAdQBjAGgAIABnAGUAbgBvAG0AbQBlAG4AIAB1AG4AZAAgAGIAZQBzAHQAXAB1ADIAMgA4AFwAJwBlADQAdABpAGcAZQAgAGQAaQBlACAAQQByAHQAIAB1AG4AZAAgAGQAaQBlACAATQBlAG4AZwBlACAAZABlAHIAIABnAGUAbgBhAG4AbgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBlAG4ALgB9AFwAZgAyAFwAZgBzADIAMABcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHMAMQBcAHEAbAB7AFwAZgBpAGUAbABkAHsAXAAqAFwAZgBsAGQAaQBuAHMAdAB7AFwAZgAyAFwAZgBzADIAMABcAGMAZgAwACAAUwBZAE0AQgBPAEwAIAAxADEAMQAgAFwAXABmACAAIgBXAGkAbgBnAGQAaQBuAGcAcwAiACAAXABcAHMAIAAxADAAfQB9AHsAXABmAGwAZAByAHMAbAB0AHsAXABmADMAXABmAHMAMgAwAFwAYwBmADEAIABvAH0AfQB9AHsAXABmADIAXABmAHMAMgAwAFwAYwBmADAAIAAgACAASQBjAGgAIABiAGUAYQB1AGYAdAByAGEAZwBlACAAZABpAGUAIABQAGYAbABlAGcAZQBrAGEAcwBzAGUALAAgAGQAZQBuACAAcwBpAGMAaAAgAGEAdQBmACAAZABlAHIAIABHAHIAdQBuAGQAbABhAGcAZQAgAGQAZQByACAAbwAuAGcALgAgAEUAaQBuAHoAZQBsAHAAcgBlAGkAcwBlACAAZQByAGcAZQBiAGUAbgBlAG4AIABHAGUAcwBhAG0AdABiAGUAdAByAGEAZwAgAGYAXAB1ADIANQAyAFwAJwBmAGMAcgAgAGQAaQBlACAAbQBpAHIAIAB6AHUAcwB0AGUAaABlAG4AZABlAG4AIABMAGUAaQBzAHQAdQBuAGcAZQBuACAAbgBhAGMAaAAgAFwAdQAxADYANwBcACcAYQA3ACAAMwA5ACAAUwBHAEIAIABYAEkAIABmAFwAdQAyADUAMgBcACcAZgBjAHIAIABkAGUAbgAgAG8ALgBnAC4AIABaAGUAaQB0AHIAYQB1AG0AIABhAG4AIABmAG8AbABnAGUAbgBkAGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBzAGUAcgBiAHIAaQBuAGcAZQByACAAegB1ACAAegBhAGgAbABlAG4ALgAgAEkAYwBoACAAdAByAGUAdABlACAAaQBuAHMAbwB3AGUAaQB0ACAAbQBlAGkAbgBlACAAQQBuAHMAcAByAFwAdQAyADUAMgBcACcAZgBjAGMAaABlACAAYQBuACAAZABlAG4AIABnAGUAbgBhAG4AbgB0AGUAbgAgAEwAZQBpAHMAdAB1AG4AZwBzAGUAcgBiAHIAaQBuAGcAZQByACAAYQBiAC4AfQBcAGYAMgBcAGYAcwAyADAAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABzADEAXABxAGwAewBcAGIAXABmADIAXABmAHMAMgA0AFwAYwBmADAAIABMAGUAYgBlAG4AcwBoAGkAbABmAGUAIABGAHIAYQBuAGsAZgB1AHIAdAAgACgATwBkAGUAcgApACAAZQAuAFYALgAsACAASABhAG4AcwBhAHMAdAByAGEAXAB1ADIAMgAzAFwAJwBkAGYAZQAgADMALAAgADEANQAyADMANAAgAEYAcgBhAG4AawBmAHUAcgB0ACAAKABPAGQAZQByACkALgB9AFwAYgBcAGYAMgBcAGYAcwAyADQAXABwAGEAcgBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
</root>

View File

@@ -182,6 +182,11 @@ namespace PraxisPusteblume
foreach (var i in sip.ServiceInvoiceItems)
{
if (i.ServiceDescription == null)
{
i.ServiceDescription = "";
}
if (i.ServiceDescription == "Team")
{
teamPreis += i.NetAmount ?? 0;

View File

@@ -71,7 +71,10 @@ namespace PraxisPusteblume.Invoicing
return new DefaultInvoiceCreation();
}
if (sr.CostBearer.Name.Contains("Hort der Philipp-Neri-Schule"))
{
return new IndividualbegleitungInvoiceCreation();
}
if (sr.CostBearer.Name.Contains("Selbstzahler"))
{
return new SelbstzahlerInvoiceCreation();

View File

@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<FibuBelege>
<firmaNr>02</firmaNr>
<datumFormat>ddMMyy</datumFormat>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606643</belegnummer>
<referenznr> 606643</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>St-R.08.2020 Duck, Daisy</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>10042 </kontonummer>
<betrag>-3099,60</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606643</opNr>
<opText>St-R.08.2020 Duck, Daisy</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8145</kontonummer>
<betrag>-3099,60</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8145</kostenart>
<kostenstelle>6000</kostenstelle>
<nettobetrag>-3099,60</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606642</belegnummer>
<referenznr> 606642</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>St-R.08.2020 Duck, Daisy</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>20501 </kontonummer>
<betrag>-1995,00</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606642</opNr>
<opText>St-R.08.2020 Duck, Daisy</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8144</kontonummer>
<betrag>-1995,00</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8144</kostenart>
<kostenstelle>6000</kostenstelle>
<nettobetrag>-1995,00</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606623</belegnummer>
<referenznr> 606623</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>St-R.08.2020 Gaukeley, Gundula</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>16502 </kontonummer>
<betrag>-9908,30</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606623</opNr>
<opText>St-R.08.2020 Gaukeley, Gundula</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8027</kontonummer>
<betrag>-9908,30</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8027</kostenart>
<kostenstelle>6003</kostenstelle>
<nettobetrag>-9908,30</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606667</belegnummer>
<referenznr> 606667</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>R.08.2020 Duck, Daisy</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>20501 </kontonummer>
<betrag>+1995,00</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606667</opNr>
<opText>R.08.2020 Duck, Daisy</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8144</kontonummer>
<betrag>+1995,00</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8144</kostenart>
<kostenstelle>6000</kostenstelle>
<nettobetrag>+1995,00</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606668</belegnummer>
<referenznr> 606668</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>R.08.2020 Duck, Daisy</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>10042 </kontonummer>
<betrag>+1450,00</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606668</opNr>
<opText>R.08.2020 Duck, Daisy</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8145</kontonummer>
<betrag>+1450,00</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8145</kostenart>
<kostenstelle>6000</kostenstelle>
<nettobetrag>+1450,00</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606669</belegnummer>
<referenznr> 606669</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>R.08.2020 Gaukeley, Gundula</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>16502 </kontonummer>
<betrag>+10422,80</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606669</opNr>
<opText>R.08.2020 Gaukeley, Gundula</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8027</kontonummer>
<betrag>+10422,80</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8027</kostenart>
<kostenstelle>6003</kostenstelle>
<nettobetrag>+10422,80</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
<FibuBeleg>
<Belegkopf>
<belegart>ra</belegart>
<belegnummer> 606670</belegnummer>
<referenznr> 606670</referenznr>
<belegdatum>080920</belegdatum>
<belegperiode>2020/08</belegperiode>
<belegwaehrung>EUR</belegwaehrung>
<belegwaehrungskurs>1.00000</belegwaehrungskurs>
<bruttoErfassung>j</bruttoErfassung>
<buchungstext>R.08.2020 Duck, Wastel</buchungstext>
</Belegkopf>
<FibuBelegpositionen>
<FibuBelegposition>
<buchungsschluessel>210</buchungsschluessel>
<kontonummer>16522 </kontonummer>
<betrag>+23234,01</betrag>
<OpInfos>
<OpAngaben>
<opNr> 606670</opNr>
<opText>R.08.2020 Duck, Wastel</opText>
</OpAngaben>
</OpInfos>
</FibuBelegposition>
<FibuBelegposition>
<buchungsschluessel>150</buchungsschluessel>
<kontonummer>8010</kontonummer>
<betrag>+23234,01</betrag>
<FibuKoreBelegpositionen>
<FibuKoreBelegposition>
<kostenart>8010</kostenart>
<kostenstelle>6028</kostenstelle>
<nettobetrag>+23234,01</nettobetrag>
</FibuKoreBelegposition>
</FibuKoreBelegpositionen>
</FibuBelegposition>
</FibuBelegpositionen>
</FibuBeleg>
</FibuBelege>

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Core;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using Utils = BS.Shared.Core.Utils;
namespace SabGmbH.Export
{
public class CustomDataExporter : DataExporter
{
public override QueryDC CreateQuery(QueryDC query)
{
return LohnExporter.CreateQuery(query);
}
}
}

View File

@@ -0,0 +1,421 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Xml;
using BeWo.Data.Access;
using BS.Shared.DataContracts;
namespace SabGmbH.Export
{
public class EGeckoExporter
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("Export{0:yyyyMM}.csv", dt);
query.QueryResult = GetAbrechnungenString(dt);
return query;
}
public static string CreateExportString(string[] pHeaderCaption, string[][] pContent)
{
if (pHeaderCaption != null && pHeaderCaption.Length > 1 && pHeaderCaption[0].Contains("EGecko"))
{
DateTime dt = DateTime.Now;
DateTime.TryParse(pHeaderCaption[1], out dt);
return GetAbrechnungenString(dt);
}
return null;
}
public static String GetAbrechnungenString(DateTime date)
{
return GetMonatlicheRechnungenString(date);
//if (!String.IsNullOrWhiteSpace(s))
//{
// sb.Append(s);
//}
//if (sb.Length > 0)
// sb.AppendLine();
//s = GetAbschlagszahlungenString(date);
//if (!String.IsNullOrWhiteSpace(s))
//{
// sb.Append(s);
//}
////if (sb.Length > 0)
//// sb.AppendLine();
////s = GetSelbstzahlerString(date);
////if (!String.IsNullOrWhiteSpace(s))
////{
//// sb.Append(s);
////}
//return sb.ToString();
}
public static String GetMonatlicheRechnungenString(DateTime date)
{
var dt = ExecuteQuery(GetMonatlicheRechnungenSql(date), date);
XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "iso-8859-1", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement belege = doc.CreateElement("FibuBelege");
doc.AppendChild(belege);
AppendXmlElement(doc, belege, "firmaNr", "02");
AppendXmlElement(doc, belege, "datumFormat", "ddMMyy");
foreach (DataRow row in dt.Rows)
{
belege.AppendChild(CreateBelegElement(doc, row));
}
//F,0,050,,BEWO,DA,01012016,012016,iBelegNr1,Belegnr1,220001,,,,999.99, "Name AZ Abrechnung 01/2016 LVR",,,EUR,,,,,,,,,,,R,,,
//G,0,1695,,,-999.99,"Name AZ Abrechnung 01/2016 LVR",
return doc.OuterXml;
}
private static XmlElement CreateBelegElement(XmlDocument doc, DataRow row)
{
/*
0: ib.InvoiceDate,
1: c.DebitorNumber,
2: c.CostCenter,
3: sip.Claim,
4: CONCAT(p.LastName, ', ', p.FirstName),
5: ib.invoicenumber,
(select t.name from team t inner join team2customer t2c on t2c.teamoid = t.oid where t2c.customeroid = c.Oid limit 1)
*/
var beleg = doc.CreateElement("FibuBeleg");
var kopf = doc.CreateElement("Belegkopf");
var posList = doc.CreateElement("FibuBelegpositionen");
beleg.AppendChild(kopf);
beleg.AppendChild(posList);
DateTime belegDatum = (DateTime) row[0];
AppendXmlElement(doc, kopf, "belegart", "ra");
AppendXmlElement(doc, kopf, "belegnummer", row[5] as String);
AppendXmlElement(doc, kopf, "referenznr", row[5] as String);
AppendXmlElement(doc, kopf, "belegdatum", String.Format("{0:ddMMyy}", belegDatum));
AppendXmlElement(doc, kopf, "belegperiode", String.Format("{0:yyyy}/{0:MM}", belegDatum));
AppendXmlElement(doc, kopf, "belegwaehrung", "EUR");
AppendXmlElement(doc, kopf, "belegwaehrungskurs", "1.00000");
AppendXmlElement(doc, kopf, "bruttoErfassung", "j");
AppendXmlElement(doc, kopf, "buchungstext", row[4] as String);
posList.AppendChild(CreateBelegpositionDebitorElement(doc, row));
posList.AppendChild(CreateBelegpositionSachkontoElement(doc, row));
return beleg;
}
private static XmlElement CreateBelegpositionDebitorElement(XmlDocument doc, DataRow row)
{
var pos = doc.CreateElement("FibuBelegposition");
AppendXmlElement(doc, pos, "buchungsschluessel", "210");
AppendXmlElement(doc, pos, "kontonummer", row[1] as String);
AppendXmlElement(doc, pos, "betrag", String.Format("{0:0.00}", row[3]));
var opinfos = doc.CreateElement("OpInfos");
var opangaben = doc.CreateElement("OpAngaben");
pos.AppendChild(opinfos);
opinfos.AppendChild(opangaben);
AppendXmlElement(doc, opangaben, "opNr", row[5] as String);
AppendXmlElement(doc, opangaben, "opText", row[4] as String);
return pos;
}
private static XmlElement CreateBelegpositionSachkontoElement(XmlDocument doc, DataRow row)
{
var pos = doc.CreateElement("FibuBelegposition");
AppendXmlElement(doc, pos, "buchungsschluessel", "150");
AppendXmlElement(doc, pos, "kontonummer", "8145"); // Welches Sachkonto?
AppendXmlElement(doc, pos, "betrag", String.Format("{0:0.00}", row[3]));
var kposliste = doc.CreateElement("FibuKoreBelegpositionen");
var kpos = doc.CreateElement("FibuKoreBelegposition");
pos.AppendChild(kposliste);
kposliste.AppendChild(kpos);
AppendXmlElement(doc, kpos, "kostenart", "8145"); // Welche Kostenart?
AppendXmlElement(doc, kpos, "kostenstelle", "6000"); // Welche Kostenstelle?
AppendXmlElement(doc, kpos, "nettobetrag", String.Format("{0:0.00}", row[3]));
return pos;
}
private static XmlElement AppendXmlElement(XmlDocument doc, XmlElement parent, string tag, string text)
{
XmlElement e = doc.CreateElement(tag);
e.InnerText = text;
parent.AppendChild(e);
return e;
}
public static String GetAbschlagszahlungenString(DateTime date)
{
var dt = ExecuteQuery(GetAbschlagszahlungenSql(date), date);
//Dictionary<long, int> oid2Index = new Dictionary<long, int>();
//foreach (DataRow row in dt.Rows)
//{
// var oid = (long)row[0];
// var belegnr = row[2] as String;
// if (belegnr.EndsWith("-a"))
// {
// if (!oid2Index.ContainsKey(oid))
// {
// oid2Index.Add(oid, 0);
// }
// oid2Index[oid]++;
// }
//}
Dictionary<long, int> oid2Index = new Dictionary<long, int>();
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
var oid = (long)row[0];
for (int i = 1; i < row.ItemArray.Length; i++)
{
if (i > 1)
{
sb.Append(";");
}
if (i == 2)
{
var belegnr = row[2] as String;
if (belegnr.EndsWith("-a"))
{
belegnr = belegnr.Replace("-a", "-");
if (!oid2Index.ContainsKey(oid))
{
oid2Index.Add(oid, 0);
}
oid2Index[oid]++;
belegnr += String.Format("{0}", oid2Index[oid]);
}
sb.Append(belegnr);
}
else
{
var item = row[i];
sb.Append(item);
}
}
}
//F,0,050,,BEWO,DA,02012016,012016,iBelegNr2,Belegnr2,220001,,,,-888.88, "Name AZ Abschlagszahlung LVR 01/2016",,,EUR,,,,,,,,,,,R,,,
//G,0,4473,,,888.88,"Name AZ Abschlagszahlung LVR 05/2016",
return sb.ToString();
}
public static String GetSelbstzahlerString(DateTime date)
{
var dt = ExecuteQuery(GetSelbstzahlerSql(date), date);
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
for (int i = 0; i < row.ItemArray.Length; i++)
{
if (i > 0)
{
sb.Append(";");
}
var item = row[i];
sb.Append(item);
}
}
return sb.ToString();
}
private static String GetMonatlicheRechnungenSql(DateTime date)
{
String sql = @"
select
ib.InvoiceDate,
c.DebitorNumber,
c.CostCenter,
sip.Claim,
CONCAT(p.LastName, ', ', p.FirstName),
ib.invoicenumber,
(select t.name from team t inner join team2customer t2c on t2c.teamoid = t.oid where t2c.customeroid = c.Oid limit 1)
from
person p
inner join customer c on c.personoid = p.oid
inner join supportconcept sc on sc.customeroid = c.oid
inner join costbearer2supportconcept c2s on c2s.supportconceptoid = sc.oid
inner join invoicebase ib on ib.costbearer2supportconceptoid = c2s.oid
inner join serviceinvoice si on si.invoicebaseoid = ib.oid
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
WHERE ib.`AccountingPeriodEnd` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' and ib.IsActive = 1
order by ib.invoicenumber
";
return sql;
}
private static String GetMonatlicheAbrechnungLvrSql(DateTime date)
{
String sql = @"
SELECT
':Abrechnungsmonat',
':Belegnr',
c.DebitorNumber as 'Konto Soll',
'' as 'Kostenstelle Soll',
'S86400' as 'Konto Haben',
c.CostCenter as 'Kostenstelle Haben',
IF(crpRateFactor.`CostRateValue` is null, ROUND((sr.`GeleisteteFLM` / 60) * (SELECT crp.`CostRateValue` FROM `costrateperiod` crp WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 0 AND crp.`ObjectOid` = cb2sc.`CostBearerOid` AND (crp.`EndDate` is null or crp.`EndDate` > ':Monat_Start') order by IF(crp.`EndDate` is null, MAKEDATE(9999,365),crp.`EndDate`) LIMIT 1 )),
ROUND(ROUND((sr.`GeleisteteFLM` / 60), 2) * (SELECT crp.`CostRateValue` FROM `costrateperiod` crp WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 0 AND crp.`ObjectOid` = cb2sc.`CostBearerOid` AND (crp.`EndDate` is null or crp.`EndDate` > ':Monat_Start') order by IF(crp.`EndDate` is null, MAKEDATE(9999,365),crp.`EndDate`) LIMIT 1 ) * ((100 + crpRateFactor.`CostRateValue`)/100), 2)) AS 'Betrag',
CONCAT('Leistungsabrechnung, ', p.`FirstName`, ' ', p.`LastName`) as 'Buchungstext'
FROM `supportconcept` sc
INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid`
INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid`
LEFT JOIN
(SELECT crp.`ObjectOid`, crp.`CostRateValue` FROM `costrateperiod` crp
WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 2 AND (crp.`EndDate` is null or crp.`EndDate` > NOW()))
AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid`
INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid`
INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid`
INNER JOIN `person` p on c.`PersonOid` = p.`Oid`
LEFT JOIN
(SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM FROM `servicerecord` sr2
INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid`
INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid`
WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 GROUP BY sr2.`CostBearer2SupportConceptOid`)
AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid`
WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0
and (sr.`GeleisteteFLM` is not null)
HAVING Betrag > 0
ORDER BY p.`LastName`, p.`FirstName`, cb2sc.`ApprovedStartDate`
";
return sql;
}
private static String GetAbschlagszahlungenSql(DateTime date)
{
//"Abrechnung" = OID -ab
// "Monatliche Abschlagszahlungen" OID 77 "-a"
String sql = @"
SELECT
c.Oid,
date_format(If(at.ValidityDate is null, at.Bookingdate, at.ValidityDate), '%d.%m.%Y') as 'Belegdatum',
CASE ve.Oid
WHEN 78
THEN ':Belegnr-ab'
ELSE ':Belegnr-a'
End,
'S13690' as 'Konto Soll',
'' as 'Kostenstelle Soll',
c.DebitorNumber as 'Konto Haben',
'' as 'Kostenstelle Haben',
Round(at.Amount, 2) as 'Betrag',
CONCAT('Abschlagszahlung, ', p.FirstName, ' ', p.LastName, ', ', at.notice) as 'Buchungstext'
from accountingtransaction at
join costbearer2supportconcept c2s on c2s.oid = at.costbearer2supportconceptoid
join supportconcept sc on sc.oid = c2s.supportconceptoid
join customer c on sc.customeroid = c.oid
join person p on c.personoid = p.oid
left join valuelistentry2object v2o on v2o.objectoid = at.oid and v2o.objecttid = 26
left join valuelistentry ve on v2o.valuelistentryoid = ve.oid
WHERE If (at.ValidityDate is null, at.Bookingdate, at.ValidityDate) >= ':Monat_Start' AND If (at.ValidityDate is null, at.Bookingdate, at.ValidityDate) < ':Monat_End' and c.`IsActive` <> 0 AND sc.`IsActive` <> 0
ORDER BY p.`LastName`, p.`FirstName`
";
return sql;
}
private static String GetSelbstzahlerSql(DateTime date)
{
String sql = @"
SELECT
date_format(ib.InvoiceDate, '%d.%m.%Y') as 'Belegdatum',
ib.InvoiceNumber as 'Belegnummer',
c.DebitorNumber as 'Konto Soll',
'' as 'Kostenstelle Soll',
'S86400' as 'Konto Haben',
c.CostCenter as 'Kostenstelle Haben',
Round(ii.AmountTotal, 2) as 'Betrag',
CONCAT('Eigenanteil, ', p.`FirstName`, ' ', p.`LastName`) as 'Buchungstext'
from invoicebase ib
join invoiceitem ii on ii.invoicebaseoid = ib.oid
join customer c on c.oid = ib.recipientcustomeroid
join `person` p on c.`PersonOid` = p.`Oid`
where ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End'
and ib.type = 0 and ib.isactive = 1 and c.isactive <> 0
";
return sql;
}
public static DataTable ExecuteQuery(String sql, DateTime dt)
{
var newsql = sql;
newsql = newsql.Replace(":Abrechnungsmonat", String.Format("{0:dd.MM.yyyy}", dt));
newsql = newsql.Replace(":Belegnr", String.Format("{0:yyMM}", dt));
newsql = newsql.Replace(":Monat_Start", String.Format("{0:yyyy-MM}-01", dt));
dt = dt.AddMonths(1);
newsql = newsql.Replace(":Monat_End", String.Format("{0:yyyy-MM}-01", dt));
return DAOFactory.AdoDAO.ExecuteQuery(newsql).Tables[0];
}
}
}

View File

@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace SabGmbH.Export
{
public class LohnExporter
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("Zulagen{0:yyyy-MM}-ABW.txt", dt);
query.QueryResult = GetSchnittstellenString(dt);
return query;
}
public static String GetSchnittstellenString(DateTime monat)
{
StringBuilder sb = new StringBuilder();
var ro = MitarbeiterstundenkontoRO.Create(null, null, monat, monat.AddMonths(1), null);
var msb = new MitarbeiterstundenkontoBerechnung();
msb.CreateReport(ro);
var sro = Lohnschnittstellenhelper.CreateSchnittstellendruckRo(monat, ro);
foreach (var ed in sro.EmployeeDaten)
{
foreach (var sd in ed.Daten)
{
sb.AppendLine(CreateString(ed, sd, monat));
}
}
return sb.ToString();
}
private static string CreateString(EmployeeDaten ed, SchnittstellenDaten sd, DateTime monat)
{
StringBuilder sb = new StringBuilder();
sb.Append("06");
String pnrString = ed.Personalnr;
while (pnrString.Length < 10)
{
pnrString = "0" + pnrString;
}
sb.Append(pnrString);
sb.Append("0000000");
DateTime dt = new DateTime(monat.Year, monat.Month, 1).AddMonths(1);
sb.Append(String.Format("{0:yyyyMMdd}", dt));
sb.Append("10");
sb.Append(sd.Code);
sb.Append(" ");
sb.Append(String.Format("+{0:000.00}", sd.Wert));
sb.Append("+000.00");
sb.Append("+000.00");
sb.Append("+000.00");
sb.Append("+000.00");
sb.Append("+000.00");
return sb.ToString();
}
}
}

View File

@@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using BeWo.Report.ReportObjects;
namespace SabGmbH.Export
{
public class Lohnschnittstellenhelper
{
public static SchnittstellendruckRo CreateSchnittstellendruckRo(DateTime monat, MitarbeiterstundenkontoRO mro)
{
var sro = new SchnittstellendruckRo();
sro.Monat = monat;
sro.EmployeeDaten = new List<EmployeeDaten>();
foreach (var ed in mro.EmployeeDetailList)
{
EmployeeDaten edat = new EmployeeDaten();
edat.Daten = new List<SchnittstellenDaten>();
edat.Personalnr = ed.Employee.PersonnelNumber;
edat.Vorname = ed.FirstName;
edat.Nachname = ed.LastName;
AddSchnittstellenDaten(edat, ed.TageKrankheit ?? 0, "Tage", "181", "Krank", 0, 1);
decimal nachtarbeit = 0;
decimal sonntag = 0;
if (ed.Days != null)
{
foreach (var dd in ed.Days)
{
nachtarbeit += dd.SpecialHours;
sonntag += dd.HoursSunday;
}
}
AddSchnittstellenDaten(edat, nachtarbeit, "Stunden", "162", "Nacht", 0, 0);
AddSchnittstellenDaten(edat, sonntag, "Stunden", "166", "Sonntag", 0, 0);
AddSchnittstellenDaten(edat, ed.Ueberstunden ?? 0, "Stunden", "141", "Überstd", 0, 0);
AddSchnittstellenDaten(edat, ed.TageUrlaub ?? 0, "Tage", "181", "Urlaub", 0, 1);
if (edat.Daten.Count > 0)
{
sro.EmployeeDaten.Add(edat);
}
}
return sro;
}
private static void AddSchnittstellenDaten(EmployeeDaten edat, decimal wert, string einheit, string code, string art, decimal punkte, decimal pauschal)
{
if (wert > 0)
{
var sd = new SchnittstellenDaten()
{
Wert = wert,
Einheit = einheit,
Code = code,
Art = art,
Punkte = punkte,
Pauschal = pauschal
};
edat.Daten.Add(sd);
}
}
}
public class SchnittstellendruckRo
{
public DateTime Monat { get; set; }
public IList<EmployeeDaten> EmployeeDaten { get; set; }
}
public class EmployeeDaten
{
public String Personalnr { get; set; }
public String Vorname { get; set; }
public String Nachname { get; set; }
public IList<SchnittstellenDaten> Daten { get; set; }
}
public class SchnittstellenDaten
{
public decimal Wert { get; set; }
public String Einheit { get; set; }
public String Code { get; set; }
public String Art { get; set; }
public decimal Punkte { get; set; }
public decimal Pauschal { get; set; }
}
}

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("KundeXyz")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KundeXyz")]
[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,79 @@
<?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>{491FE69C-49BF-4003-85CE-755DE9C99E7C}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SabGmbH</RootNamespace>
<AssemblyName>5098825926_Reports</AssemblyName>
<TargetFrameworkVersion>v4.5</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="Export\CustomDataExporter.cs" />
<Compile Include="Export\LohnExporter.cs" />
<Compile Include="Export\EGeckoExporter.cs" />
<Compile Include="Export\Lohnschnittstellenhelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</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>
<Content Include="Export\BeispielBuchungsexport.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,147 @@
using System;
using System.Linq;
using BS.Shared;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Data.Entities;
using BeWo.Data.Access;
using System.Collections.Generic;
using BS.Shared.Core;
using BS.Shared.Services;
using BS.Shared.DataContracts;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.ServiceImplementations;
namespace SozialeDienstleistungenBeckerReports
{
public partial class MitarbeiterVertraege : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
public MitarbeiterVertraege()
{
InitializeComponent();
}
public void SetReportDataSource(QueryRO pRO)
{
this.bindingSource1.DataSource = CreateDataSource(pRO);
}
private QueryRO CreateDataSource(QueryRO ro)
{
/* Altes SQL für die Verträge
select distinct
e.PersonnelNumber,
p.Lastname as Nachname,
p.FirstName as Vorname,
p.Abbreviation as 'Kuerzel',
DATE_FORMAT(p.DateOfBirth, '%d.%m.%Y') as Geburtstag,
a.Street as Strasse,
a.PostalCode as PLZ,
a.Town as Ort,
c0.`value` as Telefon,
c1.`value` as Handy,
c2.`value` as Fax,
c3.`value` as Mail,
DATE_FORMAT(ctr.EntryDate, '%d.%m.%Y') as 'Vertragsbeginn',
DATE_FORMAT(ctr.ContractEndDate, '%d.%m.%Y') as 'Befristet bis',
Round(ctr.WeeklyFls,2) as 'FLS/Woche',
Round(ctr.WeeklyTotalHours,2) as 'Gesamtstunden/Woche',
Round(ctr.WeeklyDays,2) as 'Arbeitstage/Woche',
Round(ctr.LeaveDays,2) as 'Urlaubstage',
ctr.Notice as 'Bemerkungen'
from employee e inner join Person p on e.personoid = p.oid
left join Address a on p.addressoid = a.oid
left join Contact c0 on p.Oid = c0.PersonOid and c0.`Type` = 3
left join Contact c1 on p.Oid = c1.PersonOid and c1.`Type` = 1
left join Contact c2 on p.Oid = c2.PersonOid and c2.`Type` = 5
left join Contact c3 on p.Oid = c3.PersonOid and c3.`Type` = 7
left join Contract ctr on ctr.employeeoid = e.oid
where e.isactive=1
and (ctr.ContractEndDate is not null && (ctr.ContractEndDate <= ':Datum'))
order by p.LastName, p.FirstName, ctr.EntryDate
*/
QueryRO newQueryRo = new QueryRO();
DateTime stichtag = DateTime.Now;
if (ro.Rows != null)
{
DateTime.TryParse(ro.Rows[0].Field1.ToString(), out stichtag);
}
lblTitel.Text = String.Format("Befristete Verträge bis {0:dd.MM.yyyy}", stichtag);
var employees = DAOFactory.GenericDAO.GetAllActive<Employee>();
foreach (var e in employees)
{
var contract = GetLastContractUntilDatum(e, stichtag);
if (contract != null)
{
QueryRO.Row row = new QueryRO.Row();
row.Field1 = e.PersonnelNumber;
row.Field2 = e.Person.LastName;
row.Field3 = e.Person.FirstName;
row.Field4 = e.Person.Abbreviation;
row.Field5 = string.Format("{0:dd.MM.yyyy}", e.Person.DateOfBirth);
if (e.Person.Address != null)
{
row.Field6 = e.Person.Address.Street;
row.Field7 = e.Person.Address.PostalCode;
row.Field8 = e.Person.Address.Town;
}
row.Field9 = e.Person.Contacts.FirstOrDefault(c => c.Type == ContactType.business_Phone)?.Value;
row.Field10 = e.Person.Contacts.FirstOrDefault(c => c.Type == ContactType.business_MobilePhone)?.Value;
row.Field11 = e.Person.Contacts.FirstOrDefault(c => c.Type == ContactType.business_Fax)?.Value;
row.Field12 = e.Person.Contacts.FirstOrDefault(c => c.Type == ContactType.business_Mail)?.Value;
row.Field13 = string.Format("{0:dd.MM.yyyy}", contract.EntryDate);
row.Field14 = string.Format("{0:dd.MM.yyyy}", contract.ContractEndDate);
row.Field15 = string.Format("{0:0.00}", contract.WeeklyFLS);
row.Field16 = string.Format("{0:0.00}", contract.WeeklyTotalHours);
row.Field17 = string.Format("{0:0.##}", contract.WeeklyDays);
row.Field18 = string.Format("{0:0.##}", contract.LeaveDays);
row.Field19 = contract.Notice;
newQueryRo.Rows.Add(row);
}
}
newQueryRo.Rows.Sort((a, b) => String.Format("{0}_{1}", a.Field2, a.Field3).CompareTo(String.Format("{0}_{1}", b.Field2, b.Field3)));
return newQueryRo;
}
//Soll nur den letzte Vertrag zurückgeben falls, dieser vor dem Stichtag liegt. Also alle Verträge die bis zum Stichtag auslaufen und keinen Folgevertrag haben.
private Contract GetLastContractUntilDatum(Employee employee, DateTime stichtag)
{
var c = employee.LastContract;
if (c != null)
{
//Wenn letzter Vertrag unbefristet ist, gib null zurück
if (!c.ContractEndDate.HasValue)
{
return null;
}
else
{
if (c.ContractEndDate > stichtag)
{
return null;
}
}
}
return c;
}
}
}

View File

@@ -0,0 +1,685 @@
using BeWo.Report.ReportObjects;
namespace SozialeDienstleistungenBeckerReports
{
partial class MitarbeiterVertraege
{
/// <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);
}
#region Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.lblTitel = new DevExpress.XtraReports.UI.XRLabel();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellBewilligtImZeitraumHeader = new DevExpress.XtraReports.UI.XRTableCell();
this.cellGeleistetImZeitraumHeader = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
this.DataField = new DevExpress.XtraReports.UI.XRControlStyle();
this.fieldFLS = new DevExpress.XtraReports.UI.CalculatedField();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell24 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell29 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell31 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.Expanded = false;
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;
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable2});
this.Detail1.Font = new System.Drawing.Font("Arial", 9F);
this.Detail1.HeightF = 25F;
this.Detail1.KeepTogetherWithDetailReports = true;
this.Detail1.Name = "Detail1";
this.Detail1.StylePriority.UseFont = false;
//
// xrTable2
//
this.xrTable2.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F);
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTable2.SizeF = new System.Drawing.SizeF(2050F, 25F);
this.xrTable2.StylePriority.UseBorders = false;
this.xrTable2.StylePriority.UseFont = false;
this.xrTable2.StylePriority.UsePadding = false;
this.xrTable2.StylePriority.UseTextAlignment = false;
this.xrTable2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell6,
this.xrTableCell7,
this.xrTableCell8,
this.xrTableCell9,
this.xrTableCell10,
this.xrTableCell14,
this.xrTableCell12,
this.xrTableCell16,
this.xrTableCell13,
this.xrTableCell27,
this.xrTableCell28,
this.xrTableCell29,
this.xrTableCell30,
this.xrTableCell31,
this.xrTableCell32,
this.xrTableCell33,
this.xrTableCell34,
this.xrTableCell35,
this.xrTableCell36});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 1D;
//
// xrTableCell6
//
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field1")});
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Text = "Klient/in";
this.xrTableCell6.Weight = 0.17725264677327868D;
//
// xrTableCell7
//
this.xrTableCell7.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field2")});
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.Text = "Mitarbeiter/in";
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell7.Weight = 0.5317577529262556D;
//
// xrTableCell8
//
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field3")});
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "FLS";
this.xrTableCell8.Weight = 0.53175776040924894D;
//
// xrTableCell9
//
this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field4")});
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.Text = "Stundensatz";
this.xrTableCell9.Weight = 0.53175768820530789D;
//
// xrTableCell10
//
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field5")});
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "Gesamt";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell10.Weight = 0.35450517037766649D;
//
// xrTableCell14
//
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field6")});
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.Weight = 0.53175775505589384D;
//
// xrTableCell12
//
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field7")});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "xrTableCell12";
this.xrTableCell12.Weight = 0.22156573129456469D;
//
// xrTableCell16
//
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field8")});
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.StylePriority.UseTextAlignment = false;
this.xrTableCell16.Text = "xrTableCell16";
this.xrTableCell16.Weight = 0.53175775492824262D;
//
// lblTitel
//
this.lblTitel.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F);
this.lblTitel.Multiline = true;
this.lblTitel.Name = "lblTitel";
this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblTitel.SizeF = new System.Drawing.SizeF(400F, 23F);
this.lblTitel.StylePriority.UseFont = false;
this.lblTitel.Text = "Stammdaten Mitarbeiter/Verträge";
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.GroupHeader2});
this.DetailReport.DataMember = "Rows";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// GroupHeader2
//
this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.GroupHeader2.HeightF = 50F;
this.GroupHeader2.Name = "GroupHeader2";
//
// xrTable1
//
this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold);
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F);
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(2050F, 50F);
this.xrTable1.StylePriority.UseBorders = false;
this.xrTable1.StylePriority.UseFont = false;
this.xrTable1.StylePriority.UsePadding = false;
this.xrTable1.StylePriority.UseTextAlignment = false;
this.xrTable1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell17,
this.xrTableCell1,
this.xrTableCell2,
this.xrTableCell3,
this.xrTableCell4,
this.xrTableCell5,
this.cellBewilligtImZeitraumHeader,
this.cellGeleistetImZeitraumHeader,
this.xrTableCell15,
this.xrTableCell11,
this.xrTableCell18,
this.xrTableCell19,
this.xrTableCell20,
this.xrTableCell21,
this.xrTableCell22,
this.xrTableCell23,
this.xrTableCell24,
this.xrTableCell25,
this.xrTableCell26});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1.3953493323567705D;
//
// xrTableCell1
//
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Text = "Nachname";
this.xrTableCell1.Weight = 0.53175775186563068D;
//
// xrTableCell2
//
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "Vorname";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 0.53175775289519767D;
//
// xrTableCell3
//
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Kürzel";
this.xrTableCell3.Weight = 0.53175776044030676D;
//
// xrTableCell4
//
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableCell4.StylePriority.UsePadding = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Geb.-Datum";
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell4.Weight = 0.35450517085721478D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Straße";
this.xrTableCell5.Weight = 0.53175775534225456D;
//
// cellBewilligtImZeitraumHeader
//
this.cellBewilligtImZeitraumHeader.Name = "cellBewilligtImZeitraumHeader";
this.cellBewilligtImZeitraumHeader.StylePriority.UseTextAlignment = false;
this.cellBewilligtImZeitraumHeader.Text = "PLZ";
this.cellBewilligtImZeitraumHeader.Weight = 0.22156573134457125D;
//
// cellGeleistetImZeitraumHeader
//
this.cellGeleistetImZeitraumHeader.Name = "cellGeleistetImZeitraumHeader";
this.cellGeleistetImZeitraumHeader.StylePriority.UseTextAlignment = false;
this.cellGeleistetImZeitraumHeader.Text = "Ort";
this.cellGeleistetImZeitraumHeader.Weight = 0.53175775495930022D;
//
// xrTableCell15
//
this.xrTableCell15.Name = "xrTableCell15";
this.xrTableCell15.StylePriority.UseTextAlignment = false;
this.xrTableCell15.Text = "Telefon";
this.xrTableCell15.Weight = 0.44313146246147717D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.QueryRO);
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.lblTitel});
this.ReportHeader.HeightF = 52.08333F;
this.ReportHeader.Name = "ReportHeader";
//
// Title
//
this.Title.BackColor = System.Drawing.Color.White;
this.Title.BorderColor = System.Drawing.SystemColors.ControlText;
this.Title.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.Title.BorderWidth = 1F;
this.Title.Font = new System.Drawing.Font("Times New Roman", 24F);
this.Title.ForeColor = System.Drawing.Color.Black;
this.Title.Name = "Title";
//
// FieldCaption
//
this.FieldCaption.BackColor = System.Drawing.Color.White;
this.FieldCaption.BorderColor = System.Drawing.SystemColors.ControlText;
this.FieldCaption.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.FieldCaption.BorderWidth = 1F;
this.FieldCaption.Font = new System.Drawing.Font("Times New Roman", 10F, System.Drawing.FontStyle.Bold);
this.FieldCaption.ForeColor = System.Drawing.Color.Black;
this.FieldCaption.Name = "FieldCaption";
//
// PageInfo
//
this.PageInfo.BackColor = System.Drawing.Color.White;
this.PageInfo.BorderColor = System.Drawing.SystemColors.ControlText;
this.PageInfo.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.PageInfo.BorderWidth = 1F;
this.PageInfo.Font = new System.Drawing.Font("Times New Roman", 8F);
this.PageInfo.ForeColor = System.Drawing.Color.Black;
this.PageInfo.Name = "PageInfo";
//
// DataField
//
this.DataField.BackColor = System.Drawing.Color.White;
this.DataField.BorderColor = System.Drawing.SystemColors.ControlText;
this.DataField.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.DataField.BorderWidth = 1F;
this.DataField.Font = new System.Drawing.Font("Times New Roman", 8F);
this.DataField.ForeColor = System.Drawing.SystemColors.ControlText;
this.DataField.Name = "DataField";
//
// fieldFLS
//
this.fieldFLS.DataMember = "FLSReportGroups";
this.fieldFLS.DataSource = this.bindingSource1;
this.fieldFLS.Expression = "[TotalFLM] / 60";
this.fieldFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldFLS.Name = "fieldFLS";
//
// topMarginBand1
//
this.topMarginBand1.HeightF = 50F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.HeightF = 30F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// xrTableCell17
//
this.xrTableCell17.Name = "xrTableCell17";
this.xrTableCell17.Text = "Nr.";
this.xrTableCell17.Weight = 0.17725258348934359D;
//
// xrTableCell11
//
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Text = "Handy";
this.xrTableCell11.Weight = 0.44313146246147717D;
//
// xrTableCell18
//
this.xrTableCell18.Name = "xrTableCell18";
this.xrTableCell18.Text = "Fax";
this.xrTableCell18.Weight = 0.44313146246147717D;
//
// xrTableCell19
//
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.Text = "Mail";
this.xrTableCell19.Weight = 0.44313146246147717D;
//
// xrTableCell20
//
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.Text = "Vertragsbeginn";
this.xrTableCell20.Weight = 0.44313146246147717D;
//
// xrTableCell21
//
this.xrTableCell21.Name = "xrTableCell21";
this.xrTableCell21.Text = "Befristet bis";
this.xrTableCell21.Weight = 0.44313146246147717D;
//
// xrTableCell22
//
this.xrTableCell22.Name = "xrTableCell22";
this.xrTableCell22.StylePriority.UseTextAlignment = false;
this.xrTableCell22.Text = "FLS/Woche";
this.xrTableCell22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell22.Weight = 0.44313146246147717D;
//
// xrTableCell23
//
this.xrTableCell23.Multiline = true;
this.xrTableCell23.Name = "xrTableCell23";
this.xrTableCell23.StylePriority.UseTextAlignment = false;
this.xrTableCell23.Text = "Gesamtstd.\r\n/Woche";
this.xrTableCell23.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell23.Weight = 0.44313146246147717D;
//
// xrTableCell24
//
this.xrTableCell24.Multiline = true;
this.xrTableCell24.Name = "xrTableCell24";
this.xrTableCell24.StylePriority.UseTextAlignment = false;
this.xrTableCell24.Text = "Arbeitstage\r\n/Woche";
this.xrTableCell24.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell24.Weight = 0.44313146246147717D;
//
// xrTableCell25
//
this.xrTableCell25.Name = "xrTableCell25";
this.xrTableCell25.StylePriority.UseTextAlignment = false;
this.xrTableCell25.Text = "Urlaubstage";
this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell25.Weight = 0.44313146246147717D;
//
// xrTableCell26
//
this.xrTableCell26.Name = "xrTableCell26";
this.xrTableCell26.StylePriority.UseTextAlignment = false;
this.xrTableCell26.Text = "Bemerkungen";
this.xrTableCell26.Weight = 1.2407680949152804D;
//
// xrTableCell13
//
this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field9")});
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "xrTableCell13";
this.xrTableCell13.Weight = 0.4431314624586089D;
//
// xrTableCell27
//
this.xrTableCell27.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field10")});
this.xrTableCell27.Name = "xrTableCell27";
this.xrTableCell27.Text = "xrTableCell27";
this.xrTableCell27.Weight = 0.4431314624586089D;
//
// xrTableCell28
//
this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field11")});
this.xrTableCell28.Name = "xrTableCell28";
this.xrTableCell28.Text = "xrTableCell28";
this.xrTableCell28.Weight = 0.4431314624586089D;
//
// xrTableCell29
//
this.xrTableCell29.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field12")});
this.xrTableCell29.Name = "xrTableCell29";
this.xrTableCell29.Text = "xrTableCell29";
this.xrTableCell29.Weight = 0.4431314624586089D;
//
// xrTableCell30
//
this.xrTableCell30.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field13")});
this.xrTableCell30.Name = "xrTableCell30";
this.xrTableCell30.Text = "xrTableCell30";
this.xrTableCell30.Weight = 0.4431314624586089D;
//
// xrTableCell31
//
this.xrTableCell31.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field14")});
this.xrTableCell31.Name = "xrTableCell31";
this.xrTableCell31.Text = "xrTableCell31";
this.xrTableCell31.Weight = 0.4431314624586089D;
//
// xrTableCell32
//
this.xrTableCell32.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field15")});
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "xrTableCell32";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell32.Weight = 0.4431314624586089D;
//
// xrTableCell33
//
this.xrTableCell33.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field16")});
this.xrTableCell33.Name = "xrTableCell33";
this.xrTableCell33.StylePriority.UseTextAlignment = false;
this.xrTableCell33.Text = "xrTableCell33";
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell33.Weight = 0.4431314624586089D;
//
// xrTableCell34
//
this.xrTableCell34.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field17")});
this.xrTableCell34.Name = "xrTableCell34";
this.xrTableCell34.StylePriority.UseTextAlignment = false;
this.xrTableCell34.Text = "xrTableCell34";
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell34.Weight = 0.4431314624586089D;
//
// xrTableCell35
//
this.xrTableCell35.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field18")});
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "xrTableCell35";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell35.Weight = 0.4431314624586089D;
//
// xrTableCell36
//
this.xrTableCell36.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field19")});
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Text = "xrTableCell36";
this.xrTableCell36.Weight = 1.2407680947916189D;
//
// MitarbeiterVertraege
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.DetailReport,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1});
this.DataSource = this.bindingSource1;
this.Landscape = true;
this.Margins = new System.Drawing.Printing.Margins(50, 50, 50, 30);
this.PageHeight = 827;
this.PageWidth = 2150;
this.PaperKind = System.Drawing.Printing.PaperKind.Custom;
this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
this.Title,
this.FieldCaption,
this.PageInfo,
this.DataField});
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
#endregion
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.DetailBand Detail1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.XRControlStyle Title;
private DevExpress.XtraReports.UI.XRControlStyle FieldCaption;
private DevExpress.XtraReports.UI.XRControlStyle PageInfo;
private DevExpress.XtraReports.UI.XRControlStyle DataField;
private DevExpress.XtraReports.UI.CalculatedField fieldFLS;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.XRLabel lblTitel;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell cellGeleistetImZeitraumHeader;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell cellBewilligtImZeitraumHeader;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell24;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell29;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell32;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
}
}

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

@@ -123,6 +123,12 @@
<Compile Include="SettlementReport.designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
<Compile Include="MitarbeiterVertraege.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="MitarbeiterVertraege.designer.cs">
<DependentUpon>MitarbeiterVertraege.cs</DependentUpon>
</Compile>
<Compile Include="Teamstundenkonto.cs">
<SubType>Component</SubType>
</Compile>
@@ -165,6 +171,9 @@
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MitarbeiterVertraege.resx">
<DependentUpon>MitarbeiterVertraege.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Teamstundenkonto.resx">
<DependentUpon>Teamstundenkonto.cs</DependentUpon>
</EmbeddedResource>

View File

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

View File

@@ -97,7 +97,12 @@ namespace BeWo.Service.DCEntityMapper
pEntity.EmployeeList = DAOFactory.GenericDAO.LoadByIDs<Employee2SchedulerAppointment>(pDataContract.EmployeeList.Select(e => e.Employee2SchedulerAppointmentOid.Value));
pEntity.CustomerList = DAOFactory.GenericDAO.LoadByIDs<Customer>(pDataContract.CustomerList.Select(c => c.CustomerOid));
pEntity.ResourceList = DAOFactory.GenericDAO.LoadByIDs<Resource>(pDataContract.ResourceList.Select(r => r.ResourceOid.Value));
pEntity.SupportConceptList = DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(pDataContract.SupportConceptList.Select(s => s.SupportConceptOid));
if (pDataContract.SupportConceptList != null)
{
pEntity.SupportConceptList =
DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(
pDataContract.SupportConceptList.Select(s => s.SupportConceptOid));
}
}
catch (Exception e)
{

View File

@@ -31,7 +31,7 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Relevance = pEntity.Relevance;
pDataContract.SignatureOid = pEntity.SignatureOid;
pDataContract.ServiceRecordType = pEntity.ServiceRecordType ?? ServiceRecordTypeId.DefaultActivity;
pDataContract.Betrag = pEntity.Betrag;
if (pEntity.DurationInStunden != null)
{
@@ -139,6 +139,8 @@ namespace BeWo.Service.DCEntityMapper
pEntity.RTFNotice4 = pDataContract.RTFNotice4;
pEntity.RTFNotice5 = pDataContract.RTFNotice5;
pEntity.Start = pDataContract.Start;
pEntity.End = pDataContract.End;
pEntity.RoundedDuration = pDataContract.RoundedDuration;
@@ -214,8 +216,8 @@ namespace BeWo.Service.DCEntityMapper
}
pEntity.IsCreatedInMobileClient = pDataContract.IsCreatedInMobileClient;
var globalGoalCats =
pEntity.Betrag = pDataContract.Betrag;
var globalGoalCats =
pDataContract.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptGoalCategoryType).ToList();
var globalGoals =
pDataContract.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptGoalType).ToList();

View File

@@ -255,21 +255,29 @@ namespace BeWo.Service.Plugins
Notice3 = serviceRecord.Notice3,
Notice4 = serviceRecord.Notice4,
Notice5 = serviceRecord.Notice5,
SollMinuten = null,
SollArbeitszeitMinuten = null,
SollBetreuungszeitMinuten = null,
StartDatum = serviceRecord.Start.Value,
Leistung = serviceRecord.ServiceDescription.Name,
Leistungskategorie = serviceRecord.ServiceDescription.ServiceCategory.Name
};
if (zeigeIst)
if (zeigeIst || zeigeBetrag)
{
entry.IstMinuten = serviceRecord.RoundedDuration;
entry.IstArbeitszeitMinuten = serviceRecord.RoundedDuration;
entry.IstBetreuungszeitMinuten = serviceRecord.RoundedDuration;
if (serviceRecord.GroupEmployeeCount.HasValue && serviceRecord.GroupEmployeeCount.Value > 1)
{
entry.IstBetreuungszeitMinuten /= serviceRecord.GroupEmployeeCount.Value;
}
}
if (zeigeBetrag)
{
entry.Stundensatz = GetStundensatz(serviceRecord);
entry.Betrag = serviceRecord.RoundedDuration / 60 * entry.Stundensatz;
entry.Betrag = (entry.IstBetreuungszeitMinuten / 60) * entry.Stundensatz;
}
if (zeigeKilometer)
@@ -326,7 +334,7 @@ namespace BeWo.Service.Plugins
// Wenn der Klient keine Hauptbetreuer hat
if (hauptbetreuer.Count == 0)
{
yield return GetFlexibleReportDummy(hilfePlan.Customer, null, zeitraum, hilfePlan, approvalPeriod, soll);
yield return GetFlexibleReportDummy(hilfePlan.Customer, null, zeitraum, hilfePlan, approvalPeriod, soll, null);
}
// Wenn der Klient ein oder mehr Hauptbetreuer hat
else
@@ -335,7 +343,7 @@ namespace BeWo.Service.Plugins
foreach (var betreuer in hauptbetreuer)
{
yield return GetFlexibleReportDummy(hilfePlan.Customer, betreuer, zeitraum, hilfePlan, approvalPeriod, sollAnteil);
yield return GetFlexibleReportDummy(hilfePlan.Customer, betreuer, zeitraum, hilfePlan, approvalPeriod, sollAnteil, null);
}
}
}
@@ -346,7 +354,7 @@ namespace BeWo.Service.Plugins
{
var soll = zeigeSoll ? GetSollPerDayEmployee(hilfePlan.Customer, s2e.Employee, approvalPeriod.StartDate.Value, approvalPeriod, calc) : null;
yield return GetFlexibleReportDummy(hilfePlan.Customer, s2e.Employee, zeitraum, hilfePlan, approvalPeriod, soll);
yield return GetFlexibleReportDummy(hilfePlan.Customer, s2e.Employee, zeitraum, hilfePlan, approvalPeriod, soll, null);
}
}
}
@@ -354,7 +362,7 @@ namespace BeWo.Service.Plugins
}
}
protected virtual FlexibleReportDummyDC GetFlexibleReportDummy(Customer customer, Employee employee, DateTimeSpan timeSpan, SupportConcept supportConcept, SupportConceptApprovalPeriod approvalPeriod, decimal? soll)
protected virtual FlexibleReportDummyDC GetFlexibleReportDummy(Customer customer, Employee employee, DateTimeSpan timeSpan, SupportConcept supportConcept, SupportConceptApprovalPeriod approvalPeriod, decimal? sollBetreuungszeit, decimal? sollArbeitszeit)
{
var dummy = new FlexibleReportDummyDC
{
@@ -367,7 +375,8 @@ namespace BeWo.Service.Plugins
StartDate = timeSpan.StartDate.Date,
EndDate = timeSpan.EndDate.Date,
Soll = soll
SollBetreuungszeit = sollBetreuungszeit,
SollArbeitszeit = sollArbeitszeit
};
if (employee != null)

View File

@@ -19,7 +19,7 @@ namespace BeWo.Service.Plugins
#if DEBUG
var t = "demo";
//t = "irgendwaswasesnichtgibt";
t = "irgendwaswasesnichtgibt";
//t = "5473568546"; //Interner Chat
//t = "2356097460"; // Lebenshilfe Würzburg
//t = "1234567890"; // Präsentationsdatenbank
@@ -122,7 +122,7 @@ namespace BeWo.Service.Plugins
//t = "5430005891"; // Marienhospital Eickel
//t = "3265049248"; // Gerdas Pflegedienst
//t = "1549622397"; // Kontakt und Krisenhilfe
//t = "4782194565"; // Skm Rheydt
t = "4782194565"; // Skm Rheydt
//t = "7535795843"; // Sozialwerk Dürener Christen
//t = "6388340414"; // Weitblick
//t = "0288588964"; // BeWo Marin
@@ -164,7 +164,7 @@ namespace BeWo.Service.Plugins
//t = "1873138856"; // BUG e.V.
//t = "6463422907"; // Caritas Leverkusen
//t = "6149463003"; // Diakonisches Werk Bad Windsheim Neustadt a. d. Aisch
t = "6548202677"; // VKM Aachen SBD
//t = "6548202677"; // VKM Aachen SBD
//t = "7803602698"; // Taubblindendienst
//t = "5518600303"; // Wetterleuchten e.V.
//t = "4096649015"; // AWO Dortmund
@@ -194,7 +194,7 @@ namespace BeWo.Service.Plugins
//t = "6265842607"; // BeWo Dienstleistungen Pougin und Klaasen
//t = "9273332501"; // Pflegedienst Wessel
//t = "4693476852"; // HSH Netzwerk
t = "3884496709"; // Wahl e.V.
//t = "3884496709"; // Wahl e.V.
//t = "9883255779"; // VKM Menden
//t = "9556218062"; // Diakonie Landshut
//t = "2279593936"; // Diakonie Mülheim
@@ -246,6 +246,7 @@ namespace BeWo.Service.Plugins
//t = "2547623489"; // Sprungbrett
//t = "5076807716"; // Psychosoziale Hilfen Bochum e.V.
//t ="1601313225"; // Bella Donna
t = "5098825926"; // SAB GmbH
return t;
#else

View File

@@ -42,6 +42,9 @@ namespace BS.Shared.DataContracts
public string Organisation { get; set; }
[DataMember]
public decimal? Soll { get; set; }
public decimal? SollArbeitszeit { get; set; }
[DataMember]
public decimal? SollBetreuungszeit { get; set; }
}
}

View File

@@ -43,10 +43,16 @@ namespace BS.Shared.DataContracts
public string Leistung { get; set; }
[DataMember]
public decimal? IstMinuten { get; set; }
public decimal? IstArbeitszeitMinuten { get; set; }
[DataMember]
public decimal? SollMinuten { get; set; }
public decimal? SollArbeitszeitMinuten { get; set; }
[DataMember]
public decimal? IstBetreuungszeitMinuten { get; set; }
[DataMember]
public decimal? SollBetreuungszeitMinuten { get; set; }
[DataMember]
public decimal? Betrag { get; set; }

View File

@@ -114,7 +114,10 @@ namespace BS.Shared.DataContracts
[DataMember]
public long? WohnheimbuchungsOid { get; set; }
public bool AlreadyAccounted { get; set; }
[DataMember]
public decimal? Betrag { get; set; }
public bool AlreadyAccounted { get; set; }
[DataMember]
public ZeiterfassungsDauer? DurationInStunden { get; set; }