SHK Service: Ausgleichsbericht + Abweichungen Arbeitszeit Bericht, HPH Bersenbrück ATZ: Anpassungen Soll/Ist THE, Überarbeitung LVR Avise Import,

This commit is contained in:
Christian
2024-03-26 01:01:03 +01:00
parent 07121e25b0
commit a982d59f81
40 changed files with 7316 additions and 163 deletions

View File

@@ -256,6 +256,8 @@ namespace BeWo.View.Detail
//ViewModel.PersonRelations.AddNewVMToList();
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewPerson2OrganisationRelation(ldc.OrganisationOid.Value, (ValueListEntryDC) Combobox_Rolle.SelectedItem, pes.PersonOid, mail, fax, phone.ToString(), notice.ToString()));
Save();
}
@@ -265,7 +267,7 @@ namespace BeWo.View.Detail
textbox_phone.Text = "";
textbox_notice.Text = "";
Save();
//ReloadViewModel();
pes = null;
}

View File

@@ -1,4 +1,5 @@
using BS.Shared;
using System;
namespace BeWo.Data.Entities
{
@@ -114,5 +115,40 @@ namespace BeWo.Data.Entities
public virtual Employee Employee { get; set; }
public virtual Customer Customer { get; set; }
public virtual bool IstAmGleichenWochentag(DateTime date)
{
var day = date.DayOfWeek;
if (day == DayOfWeek.Monday && Tag == AppointmentDayOfWeek.Montag)
{
return true;
}
if (day == DayOfWeek.Tuesday && Tag == AppointmentDayOfWeek.Dienstag)
{
return true;
}
if (day == DayOfWeek.Wednesday && Tag == AppointmentDayOfWeek.Mittwoch)
{
return true;
}
if (day == DayOfWeek.Thursday && Tag == AppointmentDayOfWeek.Donnerstag)
{
return true;
}
if (day == DayOfWeek.Friday && Tag == AppointmentDayOfWeek.Freitag)
{
return true;
}
if (day == DayOfWeek.Saturday && Tag == AppointmentDayOfWeek.Samstag)
{
return true;
}
if (day == DayOfWeek.Sunday && Tag == AppointmentDayOfWeek.Sonntag)
{
return true;
}
return false;
}
}
}

View File

@@ -870,11 +870,10 @@ namespace BeWo.Report.ReportObjects
protected decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
{
var day = tag.DayOfWeek;
decimal stunden = 0;
foreach (var ae in az.ArbeitszeitEintraege)
{
if (SindAmGleichenWochentag(day, ae.Tag))
if (ae.IstAmGleichenWochentag(tag))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
@@ -893,35 +892,6 @@ namespace BeWo.Report.ReportObjects
return stunden;
}
private bool SindAmGleichenWochentag(DayOfWeek day, AppointmentDayOfWeek aeTag)
{
if (day == DayOfWeek.Monday && aeTag == AppointmentDayOfWeek.Montag)
{
return true;
}
if (day == DayOfWeek.Tuesday && aeTag == AppointmentDayOfWeek.Dienstag)
{
return true;
}
if (day == DayOfWeek.Wednesday && aeTag == AppointmentDayOfWeek.Mittwoch)
{
return true;
}
if (day == DayOfWeek.Thursday && aeTag == AppointmentDayOfWeek.Donnerstag)
{
return true;
}
if (day == DayOfWeek.Friday && aeTag == AppointmentDayOfWeek.Freitag)
{
return true;
}
if (day == DayOfWeek.Saturday && aeTag == AppointmentDayOfWeek.Samstag)
{
return true;
}
return false;
}
protected virtual void CalculateEmployeeSalary(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime start, DateTime ende)
{
decimal maxpayment = 0;
@@ -2400,11 +2370,9 @@ namespace BeWo.Report.ReportObjects
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
{
var day = tag.DayOfWeek;
foreach (var ae in az.ArbeitszeitEintraege)
{
if (SindAmGleichenWochentag(day, ae.Tag))
if (ae.IstAmGleichenWochentag(tag))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
@@ -2808,10 +2776,9 @@ namespace BeWo.Report.ReportObjects
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
{
var day = tag.DayOfWeek;
foreach (var ae in az.ArbeitszeitEintraege)
{
if (SindAmGleichenWochentag(day, ae.Tag))
if (ae.IstAmGleichenWochentag(tag))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
namespace HphBersenbrueckAtz
{
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
{
public override bool ShouldCreateDayDetails()
{
return true;
}
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
{
var dd = base.CreateDayDetail(date, ed);
dd.MaxHoursUntilBreak = 6;
dd.MaxHoursUntilBreak2 = 9;
dd.BreakMinutes = null;
dd.BreakMinutes2 = null;
return dd;
}
protected override decimal BerechneFlsSoll(Employee emp, Contract contract, DateTime berichtsAnfang, DateTime berichtsEnde, decimal tatSollStdImVertragsUndBerichtzeitraum, decimal? stundenSollProMonat)
{
Contract c = GetContractForDate(emp, berichtsAnfang, berichtsEnde);
//Die Felder FLS/Woche und FLS/Monat wurden umbenannt in FLS Bersenbrück und FLS Diepholz und sollen getrennt ausgewertet werden können.
decimal sollBeBr = 0;
decimal sollDiep = 0;
if (c != null)
{
if (c.WeeklyFLS.HasValue)
{
sollBeBr = c.WeeklyFLS.Value;
}
if (c.MonthlyFLS.HasValue)
{
sollDiep = c.MonthlyFLS.Value;
}
}
// Die HPH ATZ hat eine seltsame Formel zum Ausrechnen der monatlichen Soll Stunden.
// Die wöchentlichen Stunden werden mit 43 multipliziert um das Jahressoll zu berechnen (weil die im Schnitt 43 Wochen im Jahr arbeiten, rest fällt pauschal durch Urlaub und Krankheit weg) und dann durch 12 geteilt
sollBeBr *= 43 / 12;
sollDiep *= 43 / 12;
if (AktuellBearbeitetesEmployeeDetail != null)
{
AktuellBearbeitetesEmployeeDetail.Custom1 = sollBeBr;
AktuellBearbeitetesEmployeeDetail.Custom2 = sollDiep;
}
var sollGesamt = sollBeBr + sollDiep;
return sollGesamt;
}
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using BeWo.Report;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
namespace HphBersenbrueckAtz
{
public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate
{
public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung()
{
return new CustomMitarbeiterstundenkontoBerechnung();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,287 @@
using System;
using System.Collections.Generic;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using DevExpress.XtraReports.UI;
using System.Data;
using System.Drawing;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using DevExpress.XtraPrinting;
using DevExpress.XtraReports.Native;
using DevExpress.XtraCharts;
using BeWo.Data.Security;
namespace HphBersenbrueckAtz
{
public partial class ListeTherapieeinheitenSollIstGesamt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
private VacationService vacationService;
public ListeTherapieeinheitenSollIstGesamt()
{
InitializeComponent();
}
public VacationService VacationService
{
get
{
if (vacationService == null)
{
vacationService = PluginLoader.FindClass<VacationService>();
}
return vacationService;
}
}
public void SetReportDataSource(QueryRO pRO)
{
CreateData(pRO);
this.bindingSource1.DataSource = pRO;
}
private void CreateData(QueryRO ro)
{
DateTime abfrageMonat = DateTime.Now;
if (ro.Rows != null && ro.Rows.Count > 0)
{
if (ro.Rows[0].Field1 != null)
{
DateTime dtTemp = DateTime.Now;
if (DateTime.TryParse(ro.Rows[0].Field1.ToString(), out dtTemp))
{
abfrageMonat = dtTemp;
}
}
}
CreateTabelle(abfrageMonat);
cellUeberschrift.Text = String.Format("Therapieeinheiten Soll/Ist Stand {0:MMMM yyyy}", abfrageMonat);
}
private void CreateTabelle(DateTime abfrageMonat)
{
DateTimeSpan span = new DateTimeSpan();
span.StartDateTime = abfrageMonat;
span.EndDateTime = abfrageMonat.AddYears(1).AddTicks(-1);
var srList = DAOFactory.SearchDAO.FindServiceRecordsInSpan(span, null);
var daten = new TherapieEinheitenSollIstGesamt();
var allEmps = DAOFactory.GenericDAO.GetAllActive<Employee>();
InsertIstDaten(allEmps, srList, daten);
InsertSollDaten(allEmps, abfrageMonat, daten);
FillTable(daten);
CreateChart(daten);
}
private void InsertIstDaten(IList<Employee> employees, IEnumerable<ServiceRecord> srList, TherapieEinheitenSollIstGesamt daten)
{
foreach (var sr in srList)
{
if (sr.CustomerOid.HasValue)
{
daten.IstProMonat[sr.Start.Value.Month - 1] += sr.RoundedDuration;
}
}
}
private void InsertSollDaten(IList<Employee> employees, DateTime abfrageMonat, TherapieEinheitenSollIstGesamt daten)
{
var starttime = DateTime.Now.Ticks;
for (int i = 0; i < 12; i++)
{
var mb = new CustomMitarbeiterstundenkontoBerechnung();
var ro = MitarbeiterstundenkontoRO.Create(null, null, new DateTime(abfrageMonat.Year, i + 1, 1), new DateTime(abfrageMonat.Year, i + 1, 1).AddMonths(1), null);
foreach (var ed in ro.EmployeeDetailList)
{
ed.AllServiceRecords = new List<ServiceRecord>(); //verhindert das Laden aller Servicerecords in der Stundenkonto Berechnung
}
mb.CreateReport(ro);
foreach (var ed in ro.EmployeeDetailList)
{
daten.SollBSBProMonat[i] += ed.Custom1 * 60;
daten.SollDHProMonat[i] += ed.Custom2 * 60;
daten.SollProMonat[i] += ed.FlsSoll * 60;
}
}
long endtime = DateTime.Now.Ticks;
long diff = endtime - starttime;
double secs = diff / (double)10000000;
}
private void CreateChart(TherapieEinheitenSollIstGesamt daten)
{
var series = new Series("Soll/Ist", ViewType.Pie);
series.Label.TextPattern = "{S}: {V}";
series.Label.Border.Visibility = DevExpress.Utils.DefaultBoolean.False;
series.Label.Font = new System.Drawing.Font("Arial", 10F);
series.Label.LineVisibility = DevExpress.Utils.DefaultBoolean.True;
series.Label.TextPattern = "{A}: {V:0.00} ({VP:0.00}%)";
decimal rest = daten.SollGesamt - daten.IstGesamt;
if (rest < 0)
{
rest = 0;
}
var soll = new SeriesPoint("Soll", rest);
soll.Tag = daten;
soll.Color = Color.Red;
var ist = new SeriesPoint("Ist", daten.IstGesamt);
ist.Tag = daten;
ist.Color = Color.Green;
series.Points.Add(soll);
series.Points.Add(ist);
xrChart1.Series.Clear();
xrChart1.Series.Add(series);
}
private void FillTable(TherapieEinheitenSollIstGesamt daten)
{
decimal summeIst = 0;
decimal summeSoll = 0;
for (int i = 0; i < 12; i++)
{
summeIst += daten.IstProMonat[i];
summeSoll += daten.SollProMonat[i];
tblRowIst.Cells[i + 1].Text = String.Format("{0:0.0#}", daten.IstProMonat[i] / 60);
tblRowIstGesamt.Cells[i + 1].Text = String.Format("{0:0.0#}", summeIst / 60);
tblRowSollBSB.Cells[i + 1].Text = String.Format("{0:0.0#}", daten.SollBSBProMonat[i] / 60);
tblRowSollDH.Cells[i + 1].Text = String.Format("{0:0.0#}", daten.SollDHProMonat[i] / 60);
tblRowSollGesamt.Cells[i + 1].Text = String.Format("{0:0.0#}", summeSoll / 60);
tblRowDiff.Cells[i + 1].Text = String.Format("{0:0.0#}", (daten.IstProMonat[i] - daten.SollProMonat[i]) / 60);
var diff = (summeIst - summeSoll) / 60;
tblRowDiffGesamt.Cells[i + 1].Text = String.Format("{0:0.0#}", diff);
if (diff >= 0)
{
tblRowDiffGesamt.Cells[i + 1].ForeColor = Color.Green;
}
else
{
tblRowDiffGesamt.Cells[i + 1].ForeColor = Color.Red;
}
}
}
private void xrChart1_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e)
{
var daten = e.SeriesPoint.Tag as TherapieEinheitenSollIstGesamt;
if (daten != null)
{
decimal gesamt = daten.SollGesamt;
decimal rest = daten.SollGesamt - daten.IstGesamt;
if (rest < 0)
{
rest = 0;
}
decimal prozent = 0;
if (gesamt > 0)
{
prozent = (rest / gesamt) * 100;
}
if (e.SeriesPoint.Argument == "Soll")
{
e.LabelText = String.Format("Soll Gesamt: {0:0.00}, Rest: {1:0.00} ({2:0.00}%)", gesamt, rest, prozent);
}
else
{
e.LabelText = String.Format("Ist Gesamt: {0:0.00} ({1:0.00}%)", daten.IstGesamt, 100 - prozent);
}
}
}
}
class TherapieEinheitenSollIstGesamt
{
public TherapieEinheitenSollIstGesamt()
{
SollBSBProMonat = new decimal[12];
SollDHProMonat = new decimal[12];
SollProMonat = new decimal[12];
IstProMonat = new decimal[12];
}
public decimal[] SollBSBProMonat { get; set; }
public decimal[] SollDHProMonat { get; set; }
public decimal[] SollProMonat { get; set; }
public decimal[] IstProMonat { get; set; }
public decimal GetDiff(int monat)
{
return SollProMonat[monat - 1] - IstProMonat[monat - 1];
}
public decimal SollGesamt
{
get
{
decimal sum = 0;
for (int i = 0; i < 12; i++)
{
sum += SollProMonat[i];
}
return sum / 60;
}
}
public decimal IstGesamt
{
get
{
decimal sum = 0;
for (int i = 0; i < 12; i++)
{
sum += IstProMonat[i];
}
return sum / 60;
}
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace HphBersenbrueckAtz
{
[IDSpecificClass(Identifier = "Mitarbeiterarbeitszeitkonto")]
public partial class Mitarbeiterarbeitszeitkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoRO>
{
public Mitarbeiterarbeitszeitkonto()
{
InitializeComponent();
}
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnung();
msb.CreateReport(pRO);
foreach (var ed in pRO.EmployeeDetailList)
{
var c = ed.Employee.GetValidContractForDate(pRO.ReportStartDate);
if (c != null)
{
if (c.MonthlyTotalHours.HasValue)
{
ed.Regelarbeitszeit = String.Format("{0:0.00} Stunden im Monat", c.MonthlyTotalHours);
}
else if (c.WeeklyTotalHours.HasValue)
{
ed.Regelarbeitszeit = String.Format("{0:0.00} Stunden pro Woche", c.WeeklyTotalHours);
}
}
ed.UrlaubUndKrankheit = 0;
foreach (var day in ed.Days)
{
ed.UrlaubUndKrankheit += (day.HoursSick + day.HoursInVacation);
}
}
this.bindingSource1.DataSource = pRO;
}
}
}

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -0,0 +1,28 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
namespace HphBersenbrueckAtz
{
[IDSpecificClass(Identifier = "Mitarbeiterstundenkonto")]
public partial class Mitarbeiterstundenkonto : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoRO>
{
public Mitarbeiterstundenkonto()
{
InitializeComponent();
}
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnung();
msb.CreateReport(pRO);
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,716 @@
using BeWo.Report.ReportObjects;
namespace HphBersenbrueckAtz
{
partial class Mitarbeiterstundenkonto
{
/// <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.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSIstGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSPlusMinusGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellGesamtGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellRelationGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.lblMonat = new DevExpress.XtraReports.UI.XRLabel();
this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
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.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell39 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell48 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell51 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRowHeader = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableHeader = new DevExpress.XtraReports.UI.XRTable();
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell24 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRowDetail = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableDetail = new DevExpress.XtraReports.UI.XRTable();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableDetail});
this.Detail1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Detail1.HeightF = 25F;
this.Detail1.Name = "Detail1";
this.Detail1.StylePriority.UseFont = false;
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.GroupHeader1,
this.GroupFooter1});
this.DetailReport.DataMember = "EmployeeDetailList";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableHeader});
this.GroupHeader1.HeightF = 70F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.RepeatEveryPage = true;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.GroupFooter1.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.GroupFooter1.HeightF = 48.95833F;
this.GroupFooter1.Name = "GroupFooter1";
this.GroupFooter1.StylePriority.UseFont = false;
//
// xrTable1
//
this.xrTable1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(1005F, 25F);
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.MiddleCenter;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell35,
this.xrTableCell37,
this.xrTableCell39,
this.cellSollGesamt,
this.cellFLSSollGesamt,
this.cellFLSIstGesamt,
this.cellFLSPlusMinusGesamt,
this.cellGesamtGesamt,
this.cellRelationGesamt,
this.xrTableCell47,
this.xrTableCell48,
this.xrTableCell51});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1D;
//
// xrTableCell35
//
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell35.StylePriority.UseFont = false;
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "Gesamt";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell35.Weight = 0.15329126714047708D;
//
// cellSollGesamt
//
this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "SollGesamt", "{0:0.00}")});
this.cellSollGesamt.Name = "cellSollGesamt";
this.cellSollGesamt.Text = "cellSollGesamt";
this.cellSollGesamt.Weight = 0.0721370604147881D;
//
// cellFLSSollGesamt
//
this.cellFLSSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FlsSollGesamt", "{0:0.00}")});
this.cellFLSSollGesamt.Name = "cellFLSSollGesamt";
this.cellFLSSollGesamt.Text = "cellFLSSollGesamt";
this.cellFLSSollGesamt.Weight = 0.063119927862939587D;
//
// cellFLSIstGesamt
//
this.cellFLSIstGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FlsIstGesamt", "{0:0.00}")});
this.cellFLSIstGesamt.Name = "cellFLSIstGesamt";
this.cellFLSIstGesamt.Text = "cellFLSIstGesamt";
this.cellFLSIstGesamt.Weight = 0.063119927862939615D;
//
// cellFLSPlusMinusGesamt
//
this.cellFLSPlusMinusGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FlsDiffGesamt", "{0:0.00}")});
this.cellFLSPlusMinusGesamt.Name = "cellFLSPlusMinusGesamt";
this.cellFLSPlusMinusGesamt.Text = "cellFLSPlusMinusGesamt";
this.cellFLSPlusMinusGesamt.Weight = 0.063119927862939587D;
//
// cellGesamtGesamt
//
this.cellGesamtGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "StundenGesamt", "{0:0.00}")});
this.cellGesamtGesamt.Name = "cellGesamtGesamt";
this.cellGesamtGesamt.Text = "cellGesamtGesamt";
this.cellGesamtGesamt.Weight = 0.063119927862939573D;
//
// cellRelationGesamt
//
this.cellRelationGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "RelationFlsZuMittelbar", "{0:0.00}")});
this.cellRelationGesamt.Name = "cellRelationGesamt";
this.cellRelationGesamt.Text = "cellRelationGesamt";
this.cellRelationGesamt.Weight = 0.0631199278629396D;
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.lblMonat});
this.ReportHeader.HeightF = 35F;
this.ReportHeader.Name = "ReportHeader";
//
// lblMonat
//
this.lblMonat.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReportStartDate", "Stundenkonto {0:MMMM yyyy}")});
this.lblMonat.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
this.lblMonat.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.lblMonat.Multiline = true;
this.lblMonat.Name = "lblMonat";
this.lblMonat.SizeF = new System.Drawing.SizeF(1007F, 25F);
this.lblMonat.StyleName = "Title";
this.lblMonat.StylePriority.UseFont = false;
//
// pageFooterBand1
//
this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPageInfo2,
this.xrPageInfo1});
this.pageFooterBand1.HeightF = 48F;
this.pageFooterBand1.Name = "pageFooterBand1";
//
// xrPageInfo2
//
this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F);
this.xrPageInfo2.Format = "Seite {0} von {1}";
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(864.9999F, 25F);
this.xrPageInfo2.Name = "xrPageInfo2";
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(139.9999F, 23F);
this.xrPageInfo2.StyleName = "PageInfo";
this.xrPageInfo2.StylePriority.UseFont = false;
this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// xrPageInfo1
//
this.xrPageInfo1.Font = new System.Drawing.Font("Arial", 8F);
this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
this.xrPageInfo1.Name = "xrPageInfo1";
this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
this.xrPageInfo1.SizeF = new System.Drawing.SizeF(260.0001F, 23F);
this.xrPageInfo1.StyleName = "PageInfo";
this.xrPageInfo1.StylePriority.UseFont = false;
//
// 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.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";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
//
// xrTableCell37
//
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Weight = 0.081154151689479551D;
//
// xrTableCell39
//
this.xrTableCell39.Name = "xrTableCell39";
this.xrTableCell39.Weight = 0.094679919312514085D;
//
// xrTableCell48
//
this.xrTableCell48.Name = "xrTableCell48";
this.xrTableCell48.Weight = 0.063119927862939587D;
//
// xrTableCell51
//
this.xrTableCell51.Name = "xrTableCell51";
this.xrTableCell51.Weight = 0.063119927862939573D;
//
// xrTableCell47
//
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.Weight = 0.063119927862939587D;
//
// xrTableCell15
//
this.xrTableCell15.Name = "xrTableCell15";
this.xrTableCell15.Text = "Überstd. Gesamt";
this.xrTableCell15.Weight = 0.0631199213956443D;
//
// xrTableCell14
//
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.StylePriority.UseBackColor = false;
this.xrTableCell14.Text = "Überstd. Vormonat";
this.xrTableCell14.Weight = 0.063119928275170531D;
//
// xrTableCell13
//
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Überstd. neu";
this.xrTableCell13.Weight = 0.063119928687401447D;
//
// xrTableCell12
//
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Text = "Relation FLS IST zu Mittelbare IST (in %)";
this.xrTableCell12.Weight = 0.063119929511863376D;
//
// xrTableCell11
//
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.Text = "Gesamt-\r\nstunden lfd. Monat";
this.xrTableCell11.Weight = 0.063119927721024011D;
//
// xrTableCell7
//
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "FLS Plus/Minus lfd. Monat";
this.xrTableCell7.Weight = 0.06311992757910842D;
//
// xrTableCell10
//
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseBackColor = false;
this.xrTableCell10.Text = "FLS IST lfd. Monat";
this.xrTableCell10.Weight = 0.063119927721024D;
//
// xrTableCell8
//
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Text = "FLS Stunden SOLL";
this.xrTableCell8.Weight = 0.063119927721024038D;
//
// xrTableCell9
//
this.xrTableCell9.Multiline = true;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Text = "Tatsächliche SOLL Stunden";
this.xrTableCell9.Weight = 0.072137063712635591D;
//
// xrTableCell2
//
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Text = "Fehlzeiten Urlaub Krankheit(Tage)";
this.xrTableCell2.Weight = 0.094679896646570338D;
//
// xrTableCell4
//
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "Reguläre SOLL Stunden";
this.xrTableCell4.Weight = 0.081154192324637608D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Name";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell5.Weight = 0.15329125016467182D;
//
// xrTableRowHeader
//
this.xrTableRowHeader.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell4,
this.xrTableCell2,
this.xrTableCell9,
this.xrTableCell8,
this.xrTableCell10,
this.xrTableCell7,
this.xrTableCell11,
this.xrTableCell12,
this.xrTableCell13,
this.xrTableCell14,
this.xrTableCell15});
this.xrTableRowHeader.Name = "xrTableRowHeader";
this.xrTableRowHeader.Weight = 2.8D;
//
// xrTableHeader
//
this.xrTableHeader.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableHeader.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableHeader.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTableHeader.Name = "xrTableHeader";
this.xrTableHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableHeader.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRowHeader});
this.xrTableHeader.SizeF = new System.Drawing.SizeF(1005F, 70F);
this.xrTableHeader.StylePriority.UseBorders = false;
this.xrTableHeader.StylePriority.UseFont = false;
this.xrTableHeader.StylePriority.UsePadding = false;
this.xrTableHeader.StylePriority.UseTextAlignment = false;
this.xrTableHeader.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrTableCell26
//
this.xrTableCell26.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.UeberstundenGesamt", "{0:0.00}")});
this.xrTableCell26.Name = "xrTableCell26";
this.xrTableCell26.Text = "xrTableCell26";
this.xrTableCell26.Weight = 0.063119927862939573D;
//
// xrTableCell24
//
this.xrTableCell24.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.UeberstundenVormonat", "{0:0.00}")});
this.xrTableCell24.Name = "xrTableCell24";
this.xrTableCell24.Text = "xrTableCell24";
this.xrTableCell24.Weight = 0.0631199278629396D;
//
// xrTableCell25
//
this.xrTableCell25.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Ueberstunden", "{0:0.00}")});
this.xrTableCell25.Name = "xrTableCell25";
this.xrTableCell25.Text = "xrTableCell25";
this.xrTableCell25.Weight = 0.063119927862939587D;
//
// xrTableCell21
//
this.xrTableCell21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.RelationFlsZuMittelbar", "{0:0.00}")});
this.xrTableCell21.Name = "xrTableCell21";
this.xrTableCell21.Text = "xrTableCell21";
this.xrTableCell21.Weight = 0.063119927862939615D;
//
// xrTableCell23
//
this.xrTableCell23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.StundenGesamtIst", "{0:0.00}")});
this.xrTableCell23.Name = "xrTableCell23";
this.xrTableCell23.Text = "xrTableCell23";
this.xrTableCell23.Weight = 0.063119927862939559D;
//
// xrTableCell22
//
this.xrTableCell22.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FlsDiff", "{0:0.00}")});
this.xrTableCell22.Name = "xrTableCell22";
this.xrTableCell22.Text = "xrTableCell22";
this.xrTableCell22.Weight = 0.063119927862939587D;
//
// xrTableCell27
//
this.xrTableCell27.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FlsIst", "{0:0.00}")});
this.xrTableCell27.Name = "xrTableCell27";
this.xrTableCell27.Text = "xrTableCell27";
this.xrTableCell27.Weight = 0.063119927862939615D;
//
// xrTableCell16
//
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FlsSoll", "{0:0.00}")});
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.Text = "xrTableCell16";
this.xrTableCell16.Weight = 0.063119927862939587D;
//
// xrTableCell28
//
this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.StundenSollOhneUrlaubKrankheit", "{0:0.00}")});
this.xrTableCell28.Name = "xrTableCell28";
this.xrTableCell28.Text = "xrTableCell28";
this.xrTableCell28.Weight = 0.0721370604147881D;
//
// xrTableCell20
//
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.UrlaubUndKrankheit", "{0:0.00}")});
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.Text = "xrTableCell20";
this.xrTableCell20.Weight = 0.094679933071566441D;
//
// xrTableCell19
//
this.xrTableCell19.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.StundenSollMax", "{0:0.00}")});
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.Text = "xrTableCell19";
this.xrTableCell19.Weight = 0.081154151689479551D;
//
// xrTableCell3
//
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FullName")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UsePadding = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell3.Weight = 0.15329125338142471D;
//
// xrTableRowDetail
//
this.xrTableRowDetail.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell19,
this.xrTableCell20,
this.xrTableCell28,
this.xrTableCell16,
this.xrTableCell27,
this.xrTableCell22,
this.xrTableCell23,
this.xrTableCell21,
this.xrTableCell25,
this.xrTableCell24,
this.xrTableCell26});
this.xrTableRowDetail.Name = "xrTableRowDetail";
this.xrTableRowDetail.Weight = 1D;
//
// xrTableDetail
//
this.xrTableDetail.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableDetail.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableDetail.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTableDetail.Name = "xrTableDetail";
this.xrTableDetail.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableDetail.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRowDetail});
this.xrTableDetail.SizeF = new System.Drawing.SizeF(1005F, 25F);
this.xrTableDetail.StylePriority.UseBorders = false;
this.xrTableDetail.StylePriority.UseFont = false;
this.xrTableDetail.StylePriority.UsePadding = false;
this.xrTableDetail.StylePriority.UseTextAlignment = false;
this.xrTableDetail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// Mitarbeiterstundenkonto
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.DetailReport,
this.ReportHeader,
this.pageFooterBand1,
this.topMarginBand1,
this.bottomMarginBand1});
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
this.fieldFLS});
this.DataSource = this.bindingSource1;
this.Landscape = true;
this.Margins = new System.Drawing.Printing.Margins(75, 75, 50, 30);
this.PageHeight = 827;
this.PageWidth = 1169;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
this.Title,
this.FieldCaption,
this.PageInfo,
this.DataField});
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).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.XRLabel lblMonat;
private DevExpress.XtraReports.UI.PageFooterBand pageFooterBand1;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
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.GroupHeaderBand GroupHeader1;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell cellSollGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSSollGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSIstGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSPlusMinusGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellGesamtGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellRelationGesamt;
private DevExpress.XtraReports.UI.XRTable xrTableDetail;
private DevExpress.XtraReports.UI.XRTableRow xrTableRowDetail;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell24;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
private DevExpress.XtraReports.UI.XRTable xrTableHeader;
private DevExpress.XtraReports.UI.XRTableRow xrTableRowHeader;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell39;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell48;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell51;
}
}

View File

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

View File

@@ -0,0 +1,28 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
namespace HphBersenbrueckAtz
{
[IDSpecificClass(Identifier = "MitarbeiterstundenkontoJahr")]
public partial class MitarbeiterstundenkontoJahr : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterstundenkontoMonateRO>
{
public MitarbeiterstundenkontoJahr()
{
InitializeComponent();
}
public void SetReportDataSource(MitarbeiterstundenkontoMonateRO pRO)
{
var msb = new CustomMitarbeiterstundenkontoBerechnungMonate();
msb.CreateReport(pRO);
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,761 @@
using BeWo.Report.ReportObjects;
namespace HphBersenbrueckAtz
{
partial class MitarbeiterstundenkontoJahr
{
/// <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();
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary2 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary3 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary4 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary5 = new DevExpress.XtraReports.UI.XRSummary();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.xrTableDetail = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRowDetail = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell24 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableHeader = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRowHeader = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell39 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSIstGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellFLSPlusMinusGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellGesamtGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.cellRelationGesamt = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell48 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell51 = new DevExpress.XtraReports.UI.XRTableCell();
this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
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.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail3 = new DevExpress.XtraReports.UI.DetailBand();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.GroupHeader3 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.fieldRelationGesamt = new DevExpress.XtraReports.UI.CalculatedField();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrTableDetail
//
this.xrTableDetail.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableDetail.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableDetail.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTableDetail.Name = "xrTableDetail";
this.xrTableDetail.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableDetail.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRowDetail});
this.xrTableDetail.SizeF = new System.Drawing.SizeF(1005F, 25F);
this.xrTableDetail.StylePriority.UseBorders = false;
this.xrTableDetail.StylePriority.UseFont = false;
this.xrTableDetail.StylePriority.UsePadding = false;
this.xrTableDetail.StylePriority.UseTextAlignment = false;
this.xrTableDetail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrTableRowDetail
//
this.xrTableRowDetail.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell19,
this.xrTableCell20,
this.xrTableCell28,
this.xrTableCell16,
this.xrTableCell27,
this.xrTableCell22,
this.xrTableCell23,
this.xrTableCell21,
this.xrTableCell25,
this.xrTableCell24,
this.xrTableCell26});
this.xrTableRowDetail.Name = "xrTableRowDetail";
this.xrTableRowDetail.Weight = 1D;
//
// xrTableCell3
//
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.Monat", "{0:MMMM}")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UsePadding = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell3.Weight = 0.15329125338142471D;
//
// xrTableCell19
//
this.xrTableCell19.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.StundenSollMax", "{0:0.00}")});
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.Text = "xrTableCell19";
this.xrTableCell19.Weight = 0.081154151689479551D;
//
// xrTableCell20
//
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.UrlaubUndKrankheit", "{0:0.00}")});
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.Text = "xrTableCell20";
this.xrTableCell20.Weight = 0.094679933071566441D;
//
// xrTableCell28
//
this.xrTableCell28.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.StundenSollOhneUrlaubKrankheit", "{0:0.00}")});
this.xrTableCell28.Name = "xrTableCell28";
this.xrTableCell28.Text = "xrTableCell28";
this.xrTableCell28.Weight = 0.0721370604147881D;
//
// xrTableCell16
//
this.xrTableCell16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsSoll", "{0:0.00}")});
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.Text = "xrTableCell16";
this.xrTableCell16.Weight = 0.063119927862939587D;
//
// xrTableCell27
//
this.xrTableCell27.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsIst", "{0:0.00}")});
this.xrTableCell27.Name = "xrTableCell27";
this.xrTableCell27.Text = "xrTableCell27";
this.xrTableCell27.Weight = 0.063119927862939615D;
//
// xrTableCell22
//
this.xrTableCell22.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsDiff", "{0:0.00}")});
this.xrTableCell22.Name = "xrTableCell22";
this.xrTableCell22.Text = "xrTableCell22";
this.xrTableCell22.Weight = 0.063119927862939587D;
//
// xrTableCell23
//
this.xrTableCell23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.StundenGesamtIst", "{0:0.00}")});
this.xrTableCell23.Name = "xrTableCell23";
this.xrTableCell23.Text = "xrTableCell23";
this.xrTableCell23.Weight = 0.063119927862939559D;
//
// xrTableCell21
//
this.xrTableCell21.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.RelationFlsZuMittelbar", "{0:0.00}")});
this.xrTableCell21.Name = "xrTableCell21";
this.xrTableCell21.Text = "xrTableCell21";
this.xrTableCell21.Weight = 0.063119927862939615D;
//
// xrTableCell25
//
this.xrTableCell25.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.Ueberstunden", "{0:0.00}")});
this.xrTableCell25.Name = "xrTableCell25";
this.xrTableCell25.Text = "xrTableCell25";
this.xrTableCell25.Weight = 0.063119927862939587D;
//
// xrTableCell24
//
this.xrTableCell24.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.LaufendeGesamtsumme", "{0:0.00}")});
this.xrTableCell24.Name = "xrTableCell24";
this.xrTableCell24.Text = "xrTableCell24";
this.xrTableCell24.Weight = 0.0631199278629396D;
//
// xrTableCell26
//
this.xrTableCell26.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.UeberstundenGesamt", "{0:0.00}")});
this.xrTableCell26.Name = "xrTableCell26";
this.xrTableCell26.Text = "xrTableCell26";
this.xrTableCell26.Weight = 0.063119927862939573D;
//
// xrTableHeader
//
this.xrTableHeader.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableHeader.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableHeader.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTableHeader.Name = "xrTableHeader";
this.xrTableHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableHeader.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRowHeader});
this.xrTableHeader.SizeF = new System.Drawing.SizeF(1005F, 70F);
this.xrTableHeader.StylePriority.UseBorders = false;
this.xrTableHeader.StylePriority.UseFont = false;
this.xrTableHeader.StylePriority.UsePadding = false;
this.xrTableHeader.StylePriority.UseTextAlignment = false;
this.xrTableHeader.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrTableRowHeader
//
this.xrTableRowHeader.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5,
this.xrTableCell4,
this.xrTableCell2,
this.xrTableCell9,
this.xrTableCell8,
this.xrTableCell10,
this.xrTableCell7,
this.xrTableCell11,
this.xrTableCell12,
this.xrTableCell13,
this.xrTableCell14,
this.xrTableCell15});
this.xrTableRowHeader.Name = "xrTableRowHeader";
this.xrTableRowHeader.Weight = 2.8D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Monat";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell5.Weight = 0.15329125016467182D;
//
// xrTableCell4
//
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "Reguläre SOLL Stunden";
this.xrTableCell4.Weight = 0.081154192324637608D;
//
// xrTableCell2
//
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Text = "Fehlzeiten Urlaub Krankheit(Tage)";
this.xrTableCell2.Weight = 0.094679896646570338D;
//
// xrTableCell9
//
this.xrTableCell9.Multiline = true;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Text = "Tatsächliche SOLL Stunden";
this.xrTableCell9.Weight = 0.072137063712635591D;
//
// xrTableCell8
//
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Text = "FLS Stunden SOLL";
this.xrTableCell8.Weight = 0.063119927721024038D;
//
// xrTableCell10
//
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseBackColor = false;
this.xrTableCell10.Text = "FLS IST lfd. Monat";
this.xrTableCell10.Weight = 0.063119927721024D;
//
// xrTableCell7
//
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "FLS Plus/Minus lfd. Monat";
this.xrTableCell7.Weight = 0.06311992757910842D;
//
// xrTableCell11
//
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.Text = "Gesamt-\r\nstunden lfd. Monat";
this.xrTableCell11.Weight = 0.063119927721024011D;
//
// xrTableCell12
//
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Text = "Relation FLS IST zu Mittelbare IST (in %)";
this.xrTableCell12.Weight = 0.063119929511863376D;
//
// xrTableCell13
//
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Text = "Überstd. neu";
this.xrTableCell13.Weight = 0.063119928687401447D;
//
// xrTableCell14
//
this.xrTableCell14.Multiline = true;
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.StylePriority.UseBackColor = false;
this.xrTableCell14.Text = "Überstd.\r\ndieses Jahr";
this.xrTableCell14.Weight = 0.063119928275170531D;
//
// xrTableCell15
//
this.xrTableCell15.Multiline = true;
this.xrTableCell15.Name = "xrTableCell15";
this.xrTableCell15.Text = "Überstd. Gesamt";
this.xrTableCell15.Weight = 0.0631199213956443D;
//
// xrTable1
//
this.xrTable1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(1005F, 25F);
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.MiddleCenter;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell35,
this.xrTableCell37,
this.xrTableCell39,
this.cellSollGesamt,
this.cellFLSSollGesamt,
this.cellFLSIstGesamt,
this.cellFLSPlusMinusGesamt,
this.cellGesamtGesamt,
this.cellRelationGesamt,
this.xrTableCell47,
this.xrTableCell48,
this.xrTableCell51});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1D;
//
// xrTableCell35
//
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
this.xrTableCell35.StylePriority.UseFont = false;
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "Gesamt";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell35.Weight = 0.15329126714047708D;
//
// xrTableCell37
//
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Weight = 0.081154151689479551D;
//
// xrTableCell39
//
this.xrTableCell39.Name = "xrTableCell39";
this.xrTableCell39.Weight = 0.094679919312514085D;
//
// cellSollGesamt
//
this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.StundenSollOhneUrlaubKrankheit")});
this.cellSollGesamt.Name = "cellSollGesamt";
xrSummary1.FormatString = "{0:0.00}";
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellSollGesamt.Summary = xrSummary1;
this.cellSollGesamt.Weight = 0.0721370604147881D;
//
// cellFLSSollGesamt
//
this.cellFLSSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsSoll")});
this.cellFLSSollGesamt.Name = "cellFLSSollGesamt";
xrSummary2.FormatString = "{0:0.00}";
xrSummary2.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellFLSSollGesamt.Summary = xrSummary2;
this.cellFLSSollGesamt.Weight = 0.063119927862939587D;
//
// cellFLSIstGesamt
//
this.cellFLSIstGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsIst")});
this.cellFLSIstGesamt.Name = "cellFLSIstGesamt";
xrSummary3.FormatString = "{0:0.00}";
xrSummary3.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellFLSIstGesamt.Summary = xrSummary3;
this.cellFLSIstGesamt.Weight = 0.063119927862939615D;
//
// cellFLSPlusMinusGesamt
//
this.cellFLSPlusMinusGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.FlsDiff")});
this.cellFLSPlusMinusGesamt.Name = "cellFLSPlusMinusGesamt";
xrSummary4.FormatString = "{0:0.00}";
xrSummary4.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellFLSPlusMinusGesamt.Summary = xrSummary4;
this.cellFLSPlusMinusGesamt.Weight = 0.063119927862939587D;
//
// cellGesamtGesamt
//
this.cellGesamtGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.EmployeeDetail.StundenGesamtIst")});
this.cellGesamtGesamt.Name = "cellGesamtGesamt";
xrSummary5.FormatString = "{0:0.00}";
xrSummary5.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.cellGesamtGesamt.Summary = xrSummary5;
this.cellGesamtGesamt.Weight = 0.063119927862939573D;
//
// cellRelationGesamt
//
this.cellRelationGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeInfoList.EmployeeDetails.fieldRelationGesamt", "{0:0.00}")});
this.cellRelationGesamt.Name = "cellRelationGesamt";
this.cellRelationGesamt.Text = "cellRelationGesamt";
this.cellRelationGesamt.Weight = 0.0631199278629396D;
//
// xrTableCell47
//
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.Weight = 0.063119927862939587D;
//
// xrTableCell48
//
this.xrTableCell48.Name = "xrTableCell48";
this.xrTableCell48.Weight = 0.063119927862939587D;
//
// xrTableCell51
//
this.xrTableCell51.Name = "xrTableCell51";
this.xrTableCell51.Weight = 0.063119927862939573D;
//
// pageFooterBand1
//
this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPageInfo2,
this.xrPageInfo1});
this.pageFooterBand1.HeightF = 48F;
this.pageFooterBand1.Name = "pageFooterBand1";
//
// xrPageInfo2
//
this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F);
this.xrPageInfo2.Format = "Seite {0} von {1}";
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(864.9999F, 25F);
this.xrPageInfo2.Name = "xrPageInfo2";
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(139.9999F, 23F);
this.xrPageInfo2.StyleName = "PageInfo";
this.xrPageInfo2.StylePriority.UseFont = false;
this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// xrPageInfo1
//
this.xrPageInfo1.Font = new System.Drawing.Font("Arial", 8F);
this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
this.xrPageInfo1.Name = "xrPageInfo1";
this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
this.xrPageInfo1.SizeF = new System.Drawing.SizeF(260.0001F, 23F);
this.xrPageInfo1.StyleName = "PageInfo";
this.xrPageInfo1.StylePriority.UseFont = false;
//
// 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.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";
//
// DetailReport1
//
this.DetailReport1.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail2,
this.DetailReport2});
this.DetailReport1.DataMember = "EmployeeInfoList";
this.DetailReport1.DataSource = this.bindingSource1;
this.DetailReport1.Level = 0;
this.DetailReport1.Name = "DetailReport1";
//
// Detail2
//
this.Detail2.HeightF = 0F;
this.Detail2.Name = "Detail2";
this.Detail2.PageBreak = DevExpress.XtraReports.UI.PageBreak.BeforeBandExceptFirstEntry;
//
// DetailReport2
//
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail3,
this.GroupHeader2,
this.GroupHeader3,
this.GroupFooter2});
this.DetailReport2.DataMember = "EmployeeInfoList.EmployeeDetails";
this.DetailReport2.DataSource = this.bindingSource1;
this.DetailReport2.Level = 0;
this.DetailReport2.Name = "DetailReport2";
//
// Detail3
//
this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableDetail});
this.Detail3.Font = new System.Drawing.Font("Arial", 9.75F);
this.Detail3.HeightF = 25F;
this.Detail3.Name = "Detail3";
this.Detail3.StylePriority.UseFont = false;
//
// GroupHeader2
//
this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableHeader});
this.GroupHeader2.HeightF = 70F;
this.GroupHeader2.Name = "GroupHeader2";
//
// GroupHeader3
//
this.GroupHeader3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel1});
this.GroupHeader3.HeightF = 35F;
this.GroupHeader3.Level = 1;
this.GroupHeader3.Name = "GroupHeader3";
//
// xrLabel1
//
this.xrLabel1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.SizeF = new System.Drawing.SizeF(1005F, 25F);
this.xrLabel1.StyleName = "Title";
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.Text = "Stundenkonto [EmployeeInfoList.LastName], [EmployeeInfoList.FirstName] [ReportSta" +
"rtDate!yyyy]";
//
// GroupFooter2
//
this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.GroupFooter2.HeightF = 25F;
this.GroupFooter2.Name = "GroupFooter2";
//
// fieldRelationGesamt
//
this.fieldRelationGesamt.DataMember = "EmployeeInfoList.EmployeeDetails";
this.fieldRelationGesamt.Expression = "(Sum([EmployeeDetail.FlsIst]) / Sum([EmployeeDetail.StundenGesamtIst])) * 100";
this.fieldRelationGesamt.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldRelationGesamt.Name = "fieldRelationGesamt";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoMonateRO);
//
// MitarbeiterstundenkontoJahr
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.pageFooterBand1,
this.topMarginBand1,
this.bottomMarginBand1,
this.DetailReport1});
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
this.fieldFLS,
this.fieldRelationGesamt});
this.DataSource = this.bindingSource1;
this.DisplayName = "Mitarbeiterstundenkonto";
this.Landscape = true;
this.Margins = new System.Drawing.Printing.Margins(75, 75, 50, 30);
this.PageHeight = 827;
this.PageWidth = 1169;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
this.Title,
this.FieldCaption,
this.PageInfo,
this.DataField});
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).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.PageFooterBand pageFooterBand1;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
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.XRTable xrTableHeader;
private DevExpress.XtraReports.UI.XRTableRow xrTableRowHeader;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTable xrTableDetail;
private DevExpress.XtraReports.UI.XRTableRow xrTableRowDetail;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.CalculatedField fieldFLS;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell24;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell39;
private DevExpress.XtraReports.UI.XRTableCell cellSollGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSSollGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSIstGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellFLSPlusMinusGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellGesamtGesamt;
private DevExpress.XtraReports.UI.XRTableCell cellRelationGesamt;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell48;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell51;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
private DevExpress.XtraReports.UI.DetailBand Detail2;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
private DevExpress.XtraReports.UI.DetailBand Detail3;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader3;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter2;
private DevExpress.XtraReports.UI.CalculatedField fieldRelationGesamt;
}
}

View File

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

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -0,0 +1,341 @@
using System;
using System.Linq;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Data.Entities;
using BeWo.Data.Access;
using System.Collections.Generic;
using BS.Shared;
using BS.Shared.Core;
using DevExpress.XtraPrinting;
namespace SHKServiceSBD.Reports
{
[IDSpecificClass(Identifier = "AbweichungenArbeitszeitReport")]
public partial class AbweichungenArbeitszeitReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
public AbweichungenArbeitszeitReport()
{
InitializeComponent();
}
public void SetReportDataSource(QueryRO pRO)
{
this.bindingSource1.DataSource = CreateDataSource(pRO);
}
private QueryRO CreateDataSource(QueryRO ro)
{
QueryRO newQueryRo = new QueryRO();
DateTime start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
DateTime ende = start.AddMonths(1).AddTicks(-1);
if (ro.Rows != null && ro.Rows.Count > 0)
{
if (ro.Rows[0].Field1 != null)
{
if (DateTime.TryParse(ro.Rows[0].Field1.ToString(), out var dt))
{
if (dt > DateTime.MinValue)
{
start = dt;
}
}
}
if (ro.Rows[0].Field2 != null)
{
if (DateTime.TryParse(ro.Rows[0].Field2.ToString(), out var dt))
{
if (dt < DateTime.MaxValue.Date)
{
ende = dt;
}
}
}
}
lblZeitraum.Text = String.Format("{0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, ende);
var span = new DateTimeSpan(start, ende);
span.EndDateTime = ende;
var allEmps = DAOFactory.GenericDAO.GetAllActive<Employee>().OrderBy(e => e.Person.LastNameFirstName);
var allRecords = DAOFactory.SearchDAO.FindServiceRecordsInSpan(span, null);
Dictionary<long, IList<ServiceRecord>> empOid2Records = new Dictionary<long, IList<ServiceRecord>>();
foreach (var sr in allRecords)
{
if (sr.EmployeeOid.HasValue)
{
if (!empOid2Records.ContainsKey(sr.EmployeeOid.Value))
{
empOid2Records.Add(sr.EmployeeOid.Value, new List<ServiceRecord>());
}
empOid2Records[sr.EmployeeOid.Value].Add(sr);
}
}
List<AbweichungenArbeitszeitRow> alleAbweichungen = new List<AbweichungenArbeitszeitRow>();
foreach (var emp in allEmps)
{
if (empOid2Records.ContainsKey(emp.Oid.Value))
{
alleAbweichungen.AddRange(ErstelleAbweichungen(emp, empOid2Records[emp.Oid.Value], start, ende));
}
}
foreach (var abw in alleAbweichungen)
{
QueryRO.Row row = new QueryRO.Row();
row.Field1 = String.Format("{0}", abw.Employee.Person.FirstNameLastName);
row.Field2 = String.Format("{0}", abw.Employee.PersonnelNumber);
row.Field3 = String.Format("{0:dd.MM.yyyy} Keine Arbeitszeit eingetragen", abw.Datum);
if (abw.ArbeitszeitStart > DateTime.MinValue && abw.ArbeitszeitEnde > DateTime.MinValue)
{
if (abw.ArbeitszeitStart.Second > 0 && abw.ArbeitszeitEnde.Second > 0)
{
row.Field3 = String.Format("{0:dd.MM.yyyy}", abw.ArbeitszeitStart);
}
else
{
row.Field3 = String.Format("{0:dd.MM.yyyy HH:mm}-{1:HH:mm}", abw.ArbeitszeitStart, abw.ArbeitszeitEnde);
}
}
row.Field4 = String.Format("{0}", abw.ArbeitszeitNotice);
if (abw.Customer != null)
{
row.Field5 = String.Format("{0}", abw.Customer.Person.FirstNameLastName);
}
row.Field6 = String.Format("{0}", abw.Betreuungszeit);
row.Field7 = String.Format("{0}", abw.ServiceRecordNotice);
row.Field8 = String.Format("{0}", abw.IstVertretung ? "x" : "");
row.Field9 = String.Format("{0}, {1:yyyyMMdd}", row.Field1, abw.Datum); // zum Sortieren
newQueryRo.Rows.Add(row);
}
newQueryRo.Rows.Sort((a, b) => a.Field9.ToString().CompareTo(b.Field9));
return newQueryRo;
}
private List<AbweichungenArbeitszeitRow> ErstelleAbweichungen(Employee emp, IList<ServiceRecord> records, DateTime start, DateTime ende)
{
var result = new List<AbweichungenArbeitszeitRow>();
var betreuteKlienten = new List<Customer>();
foreach (var e2c in emp.Employee2CustomerList.Where(e => e.IsActive == ActivationTypeId.Active
&& (!e.StartDate.HasValue || e.StartDate.Value.Date <= ende.Date)
&& (!e.EndDate.HasValue || e.EndDate.Value.Date >= start.Date)
&& e.ValueList.Any(v => v.Entry.Type == ValueListEntryType.StaffRoleType)))
{
betreuteKlienten.Add(e2c.Customer);
}
var arbeitszeiten = records.Where(r => !r.CostBearer2SupportConceptOid.HasValue).OrderBy(r => r.Start).ToList();
var klientenRecords = records.Where(r => r.CustomerOid.HasValue).OrderBy(r => r.Start).ToList();
var oid2Customer = new Dictionary<long, Customer>();
var customer2Arbeitszeit = new Dictionary<long, Arbeitszeit>();
var infoList = new List<ArbeitstagInfo>();
DateTime dtIter = start.Date;
//Erstelle für jeden Tag ein Info Objekt
while (dtIter <= ende.Date)
{
ArbeitstagInfo info = new ArbeitstagInfo();
info.Datum = dtIter;
info.Employee = emp;
info.ArbeitszeitRecords = arbeitszeiten.Where(r => r.Start.Value.Date == dtIter).ToList();
info.NachKlientenGruppierteRecords = GruppiereRecordsNachCustomer(klientenRecords.Where(r => r.Start.Value.Date == dtIter).ToList());
if (info.NachKlientenGruppierteRecords.Count == 0)
{
foreach (var c in betreuteKlienten)
{
info.NachKlientenGruppierteRecords.Add(c.Oid.Value, new List<ServiceRecord>());
}
}
foreach (var coid in info.NachKlientenGruppierteRecords.Keys)
{
if (!oid2Customer.ContainsKey(coid))
{
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(coid);
oid2Customer.Add(coid, customer);
customer2Arbeitszeit.Add(coid, ReportHelper.GetArbeitszeit(customer, start, ende));
}
}
infoList.Add(info);
dtIter = dtIter.AddDays(1);
}
//Erstelle Abweichungen wenn die Arbeitszeit nicht mit den Betreuungszeiten des Klienten übereinstimmt
foreach (var item in infoList)
{
if (item.NachKlientenGruppierteRecords.Count > 0)
{
foreach (var coid in item.NachKlientenGruppierteRecords.Keys)
{
if (item.NachKlientenGruppierteRecords[coid].Count > 0 || item.ArbeitszeitRecords.Count > 0)
{
var abweichungen = ErstelleAbweichungenFuerTag(item, oid2Customer[coid], customer2Arbeitszeit[coid]);
result.AddRange(abweichungen);
}
}
}
}
//Setze ob der Einsatz in Vertretung war. Das ist dann der Fall, wenn der betreute Klient nicht der eigenen Hauptbetreuung zugeordnet ist.
foreach (var abw in result)
{
if (abw.Customer != null && betreuteKlienten.Count(c => c.Oid == abw.Customer.Oid) == 0)
{
abw.IstVertretung = true;
}
}
return result;
}
private List<AbweichungenArbeitszeitRow> ErstelleAbweichungenFuerTag(ArbeitstagInfo info, Customer customer, Arbeitszeit betreuungszeiten)
{
var result = new List<AbweichungenArbeitszeitRow>();
//Berechne geplante Betreuungszeit des Kindes an diesem Tag
var bzStart = DateTime.MaxValue;
var bzEnde = DateTime.MinValue;
if (betreuungszeiten != null)
{
foreach (var ae in betreuungszeiten.ArbeitszeitEintraege)
{
if (ReportHelper.IstAmGleichenWochentag(ae, info.Datum))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", info.Datum, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", info.Datum, ae.UhrzeitBis);
DateTime date1;
DateTime date2;
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
{
if (date1 < bzStart)
{
bzStart = date1;
}
if (date2 > bzEnde)
{
bzEnde = date2;
}
}
}
}
}
String betreuungszeit = "Nicht vorhanden";
if (bzStart < DateTime.MaxValue && bzEnde > DateTime.MinValue)
{
betreuungszeit = String.Format("{0:HH:mm}-{1:HH:mm}", bzStart, bzEnde);
}
String serviceRecordNotice = "";
foreach (var item in info.NachKlientenGruppierteRecords[customer.Oid.Value])
{
if (!String.IsNullOrEmpty(item.Notice))
{
if (serviceRecordNotice.Length > 0)
{
serviceRecordNotice += "; ";
}
serviceRecordNotice += item.Notice;
}
}
if (info.ArbeitszeitRecords.Count == 0)
{
result.Add(new AbweichungenArbeitszeitRow { Datum = info.Datum, Employee = info.Employee, Customer = customer, Betreuungszeit = betreuungszeit, ServiceRecordNotice = serviceRecordNotice });
}
if (info.Employee.Person.FirstName == "Agnes")
{
int test = 0;
}
foreach (var azRecord in info.ArbeitszeitRecords)
{
//Mitarbeiter Arbeitszeit an diesem Tag
var azStart = azRecord.Start.Value;
var azEnde = azRecord.End.Value;
//Arbeitszeit muss gleich der geplanten Betreuungszeit sein, sonst muss die Abweichung im Report angezeigt werden
if (azStart != bzStart || azEnde != bzEnde)
{
var abw = new AbweichungenArbeitszeitRow();
abw.Datum = info.Datum;
abw.Employee = info.Employee;
abw.Customer = customer;
abw.ArbeitszeitStart = azStart;
abw.ArbeitszeitEnde = azEnde;
abw.ArbeitszeitNotice = azRecord.Notice;
abw.Betreuungszeit = betreuungszeit;
abw.ServiceRecordNotice = serviceRecordNotice;
result.Add(abw);
}
}
return result;
}
private Dictionary<long, IList<ServiceRecord>> GruppiereRecordsNachCustomer(IList<ServiceRecord> records)
{
var dict = new Dictionary<long, IList<ServiceRecord>>();
foreach (var sr in records)
{
if (!dict.ContainsKey(sr.CustomerOid.Value))
{
dict.Add(sr.CustomerOid.Value, new List<ServiceRecord>());
}
dict[sr.CustomerOid.Value].Add(sr);
}
return dict;
}
class ArbeitstagInfo
{
public IList<ServiceRecord> ArbeitszeitRecords { get; set; }
public Employee Employee { get; internal set; }
public Dictionary<long, IList<ServiceRecord>> NachKlientenGruppierteRecords { get; internal set; }
public DateTime Datum { get; internal set; }
}
class AbweichungenArbeitszeitRow
{
public DateTime Datum { get; set; }
public Employee Employee { get; set; }
public Customer Customer { get; set; }
public DateTime ArbeitszeitStart { get; set; }
public DateTime ArbeitszeitEnde { get; set; }
public String ArbeitszeitNotice { get; set; }
public String Betreuungszeit { get; set; }
public String ServiceRecordNotice { get; set; }
public bool IstVertretung { get; set; }
}
}
}

View File

@@ -0,0 +1,497 @@
using BeWo.Report.ReportObjects;
namespace SHKServiceSBD.Reports
{
partial class AbweichungenArbeitszeitReport
{
/// <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.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = 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.cellHeader1 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeader2 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeaderDatum1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeader3 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeaderDatum2 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeaderUhrzeit2 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
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.lblZeitraum = new DevExpress.XtraReports.UI.XRLabel();
((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 DevExpress.Drawing.DXFont("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(1060F, 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.xrTableCell8,
this.xrTableCell6,
this.xrTableCell7,
this.xrTableCell3,
this.xrTableCell12,
this.xrTableCell9,
this.xrTableCell10,
this.xrTableCell5});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 1D;
//
// xrTableCell8
//
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field1")});
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Text = "xrTableCell8";
this.xrTableCell8.Weight = 0.66469719401134464D;
//
// xrTableCell6
//
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field2")});
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "Klient/in";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell6.Weight = 0.31019201785693129D;
//
// xrTableCell7
//
this.xrTableCell7.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field3")});
this.xrTableCell7.Multiline = true;
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.Text = "Mitarbeiter/in";
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell7.Weight = 0.354505168929893D;
//
// xrTableCell3
//
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field4")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.Weight = 0.88626292373048376D;
//
// xrTableCell12
//
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field5")});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Text = "xrTableCell12";
this.xrTableCell12.Weight = 0.66469719681567352D;
//
// xrTableCell9
//
this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field6")});
this.xrTableCell9.Multiline = true;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.Text = "Stundensatz";
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell9.Weight = 0.39881831941537793D;
//
// xrTableCell10
//
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field7")});
this.xrTableCell10.Multiline = true;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "Gesamt";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell10.Weight = 0.88626292492295444D;
//
// xrTableCell5
//
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field8")});
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "xrTableCell5";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell5.Weight = 0.531757755055894D;
//
// lblTitel
//
this.lblTitel.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold);
this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F);
this.lblTitel.Name = "lblTitel";
this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblTitel.SizeF = new System.Drawing.SizeF(666.9999F, 23F);
this.lblTitel.StylePriority.UseFont = false;
this.lblTitel.Text = "Übersicht Abweichungen Arbeitszeit der MA und Leistungszeit KL";
//
// 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 = 40F;
this.GroupHeader2.Name = "GroupHeader2";
this.GroupHeader2.RepeatEveryPage = true;
//
// 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 DevExpress.Drawing.DXFont("Arial", 9F, DevExpress.Drawing.DXFontStyle.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(1060F, 40F);
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.cellHeader1,
this.cellHeader2,
this.cellHeaderDatum1,
this.xrTableCell2,
this.xrTableCell4,
this.cellHeader3,
this.cellHeaderDatum2,
this.cellHeaderUhrzeit2});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1.1162794658854165D;
//
// cellHeader1
//
this.cellHeader1.Name = "cellHeader1";
this.cellHeader1.Text = "MA";
this.cellHeader1.Weight = 0.66469719401134442D;
//
// cellHeader2
//
this.cellHeader2.Name = "cellHeader2";
this.cellHeader2.Text = "Pers. Nr";
this.cellHeader2.Weight = 0.31019201785693151D;
//
// cellHeaderDatum1
//
this.cellHeaderDatum1.Multiline = true;
this.cellHeaderDatum1.Name = "cellHeaderDatum1";
this.cellHeaderDatum1.StylePriority.UseTextAlignment = false;
this.cellHeaderDatum1.Text = "Arbeitszeit";
this.cellHeaderDatum1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.cellHeaderDatum1.Weight = 0.35450516892989281D;
//
// xrTableCell2
//
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Text = "Bemerkung";
this.xrTableCell2.Weight = 0.88626292373048354D;
//
// xrTableCell4
//
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "Schüler*in";
this.xrTableCell4.Weight = 0.66469719681567352D;
//
// cellHeader3
//
this.cellHeader3.Name = "cellHeader3";
this.cellHeader3.StylePriority.UseTextAlignment = false;
this.cellHeader3.Text = "Leistungszeit";
this.cellHeader3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.cellHeader3.Weight = 0.39881831941537815D;
//
// cellHeaderDatum2
//
this.cellHeaderDatum2.Multiline = true;
this.cellHeaderDatum2.Name = "cellHeaderDatum2";
this.cellHeaderDatum2.StylePriority.UseTextAlignment = false;
this.cellHeaderDatum2.Text = "Bemerkung";
this.cellHeaderDatum2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.cellHeaderDatum2.Weight = 0.88626292492295411D;
//
// cellHeaderUhrzeit2
//
this.cellHeaderUhrzeit2.Name = "cellHeaderUhrzeit2";
this.cellHeaderUhrzeit2.Text = "Vertretungseinsatz";
this.cellHeaderUhrzeit2.Weight = 0.53175775505589362D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.QueryRO);
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.lblZeitraum,
this.lblTitel});
this.ReportHeader.HeightF = 80F;
this.ReportHeader.Name = "ReportHeader";
//
// pageFooterBand1
//
this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPageInfo2,
this.xrPageInfo1});
this.pageFooterBand1.HeightF = 48F;
this.pageFooterBand1.Name = "pageFooterBand1";
//
// xrPageInfo2
//
this.xrPageInfo2.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(940F, 25F);
this.xrPageInfo2.Name = "xrPageInfo2";
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(120F, 23F);
this.xrPageInfo2.StyleName = "PageInfo";
this.xrPageInfo2.StylePriority.UseFont = false;
this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrPageInfo2.TextFormatString = "Seite {0} von {1}";
//
// xrPageInfo1
//
this.xrPageInfo1.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
this.xrPageInfo1.Name = "xrPageInfo1";
this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
this.xrPageInfo1.SizeF = new System.Drawing.SizeF(220F, 23F);
this.xrPageInfo1.StyleName = "PageInfo";
this.xrPageInfo1.StylePriority.UseFont = false;
//
// 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 DevExpress.Drawing.DXFont("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 DevExpress.Drawing.DXFont("Times New Roman", 10F, DevExpress.Drawing.DXFontStyle.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 DevExpress.Drawing.DXFont("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 DevExpress.Drawing.DXFont("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";
//
// lblZeitraum
//
this.lblZeitraum.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.lblZeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 32.99998F);
this.lblZeitraum.Name = "lblZeitraum";
this.lblZeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblZeitraum.SizeF = new System.Drawing.SizeF(666.9999F, 23F);
this.lblZeitraum.StylePriority.UseFont = false;
//
// AbweichungenArbeitszeitReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.DetailReport,
this.ReportHeader,
this.pageFooterBand1,
this.topMarginBand1,
this.bottomMarginBand1});
this.DataSource = this.bindingSource1;
this.DisplayName = "AbweichungenArbeitszeit";
this.Landscape = true;
this.Margins = new DevExpress.Drawing.DXMargins(60F, 40F, 50F, 30F);
this.PageHeight = 827;
this.PageWidth = 1169;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
this.Title,
this.FieldCaption,
this.PageInfo,
this.DataField});
this.Version = "23.2";
((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.PageFooterBand pageFooterBand1;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
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 xrTableCell9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell cellHeader2;
private DevExpress.XtraReports.UI.XRTableCell cellHeaderDatum1;
private DevExpress.XtraReports.UI.XRTableCell cellHeader3;
private DevExpress.XtraReports.UI.XRTableCell cellHeaderDatum2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell cellHeader1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell cellHeaderUhrzeit2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRLabel lblZeitraum;
}
}

View File

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

View File

@@ -0,0 +1,273 @@
using System;
using System.Linq;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Data.Entities;
using BeWo.Data.Access;
using System.Collections.Generic;
using BS.Shared;
using BS.Shared.Core;
using DevExpress.XtraPrinting;
using SHKServiceSBD.Service;
namespace SHKServiceSBD.Reports
{
[IDSpecificClass(Identifier = "AusgleichsberichtReport")]
public partial class AusgleichsberichtReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
public AusgleichsberichtReport()
{
InitializeComponent();
}
public void SetReportDataSource(QueryRO pRO)
{
this.bindingSource1.DataSource = CreateDataSource(pRO);
}
private QueryRO CreateDataSource(QueryRO ro)
{
QueryRO newQueryRo = new QueryRO();
DateTime start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
DateTime ende = start.AddMonths(1).AddTicks(-1);
if (ro.Rows != null && ro.Rows.Count > 0)
{
if (ro.Rows[0].Field1 != null)
{
if (DateTime.TryParse(ro.Rows[0].Field1.ToString(), out var dt))
{
if (dt > DateTime.MinValue)
{
start = dt;
}
}
}
if (ro.Rows[0].Field2 != null)
{
if (DateTime.TryParse(ro.Rows[0].Field2.ToString(), out var dt))
{
if (dt < DateTime.MaxValue.Date)
{
ende = dt;
}
}
}
}
lblZeitraum.Text = String.Format("{0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, ende);
var alleRows = ErstelleAusgleichsRows(start, ende);
foreach (var aus in alleRows)
{
QueryRO.Row row = new QueryRO.Row();
row.Field1 = String.Format("{0:dd.MM.yyyy}", aus.Datum);
row.Field2 = String.Format("{0}", aus.Employee.Person.LastNameFirstName);
if (aus.Customer != null)
{
row.Field3 = String.Format("{0}", aus.Customer.Person.FirstNameLastName);
}
double betreuungszeitMinuten = 0;
double arbeitszeitMinuten = 0;
if (aus.BetreuungszeitStart.HasValue && aus.BetreuungszeitEnde.HasValue)
{
betreuungszeitMinuten = aus.BetreuungszeitEnde.Value.Subtract(aus.BetreuungszeitStart.Value).TotalMinutes;
row.Field4 = String.Format("{0:0}", betreuungszeitMinuten);
}
if (aus.ArbeitszeitStart.HasValue && aus.ArbeitszeitEnde.HasValue)
{
arbeitszeitMinuten = aus.ArbeitszeitEnde.Value.Subtract(aus.ArbeitszeitStart.Value).TotalMinutes;
row.Field5 = String.Format("{0:0}", arbeitszeitMinuten);
}
row.Field6 = String.Format("{0:0.##}", arbeitszeitMinuten - betreuungszeitMinuten);
row.Field9 = String.Format("{0:yyyyMMdd}, {1}, ", aus.Datum, row.Field2); // zum Sortieren
newQueryRo.Rows.Add(row);
}
newQueryRo.Rows.Sort((a, b) => a.Field9.ToString().CompareTo(b.Field9));
return newQueryRo;
}
private List<AusgleichsRow> ErstelleAusgleichsRows(DateTime start, DateTime ende)
{
var result = new List<AusgleichsRow>();
var mgr = new CustomVertretungsManager();
var vertretungsitems = mgr.CreateVertretungsListe(start, ende);
var span = new DateTimeSpan(start, ende);
span.EndDateTime = ende;
var allRecords = DAOFactory.SearchDAO.FindServiceRecordsInSpan(span, null);
var empOid2Records = new Dictionary<long, IList<ServiceRecord>>();
var oid2Customer = new Dictionary<long, Customer>();
var oid2Employee = new Dictionary<long, Employee>();
var oid2BetreuteKlienten = new Dictionary<long, List<Customer>>();
var customer2Hauptbetreuer = new Dictionary<long, List<Employee>>();
foreach (var sr in allRecords)
{
if (sr.EmployeeOid.HasValue)
{
if (!empOid2Records.ContainsKey(sr.EmployeeOid.Value))
{
empOid2Records.Add(sr.EmployeeOid.Value, new List<ServiceRecord>());
}
empOid2Records[sr.EmployeeOid.Value].Add(sr);
}
}
var absenceTimes = DAOFactory.SearchDAO.FindAbsenceTimes(start, ende).ToList();
var employeeAbsenceTimes = absenceTimes.Where(absenceTime => absenceTime.EmployeeOid.HasValue).ToList();
var customerAbsenceTimes = absenceTimes.Where(absenceTime => absenceTime.CustomerOid.HasValue).ToList();
//Prüfe für jeden Tag alle abwesenden Kinder, ob deren Betreuer auch abwesend ist
var dtIter = start.Date;
while (dtIter <= ende.Date)
{
foreach (var cat in customerAbsenceTimes)
{
if (cat.Start.HasValue && cat.Start.Value.Date <= dtIter && (!cat.End.HasValue || cat.End.Value.Date >= dtIter.Date))
{
Customer customer = null;
List<Employee> hauptbetreuer = null;
//nur wegen performance
if (!oid2Customer.ContainsKey(cat.CustomerOid.Value))
{
customer = DAOFactory.GenericDAO.LoadByID<Customer>(cat.CustomerOid.Value);
oid2Customer.Add(cat.CustomerOid.Value, customer);
hauptbetreuer = GetHauptbetreuer(customer, start, ende);
customer2Hauptbetreuer.Add(cat.CustomerOid.Value, hauptbetreuer);
}
else
{
customer = oid2Customer[cat.CustomerOid.Value];
hauptbetreuer = customer2Hauptbetreuer[cat.CustomerOid.Value];
}
foreach (var emp in hauptbetreuer)
{
//Wenn der Mitarbeiter nicht auch abwesend ist, dann bekommt er einen Ausgleich, wenn er bei einem anderen Kind Vertretung oder keinen Einsatz macht.
if (employeeAbsenceTimes.Count(a => a.EmployeeOid == emp.Oid && a.Start.HasValue && a.Start.Value.Date <= dtIter && (!a.End.HasValue || a.End.Value.Date >= dtIter.Date)) == 0)
{
//Mitarbeiter ist selber nicht abwesend. Prüfe seine Arbeitszeit and dem Tag und für welches Kind er im Einsatz war
decimal arbeitszeitMinuten = 0;
DateTime azStart = DateTime.MaxValue;
DateTime azEnde = DateTime.MinValue;
if (empOid2Records.ContainsKey(emp.Oid.Value))
{
var azRecordList = empOid2Records[emp.Oid.Value].Where(r => !r.CostBearer2SupportConceptOid.HasValue && r.Start.Value.Date == dtIter).ToList();
foreach (var sr in azRecordList)
{
arbeitszeitMinuten += sr.RoundedDuration;
if (sr.Start < azStart)
{
azStart = sr.Start.Value;
}
if (sr.End > azEnde)
{
azEnde = sr.End.Value;
}
}
}
//Prüfe geplante Betreuungszeit des Kindes für diesen Tag
var bzspan = ReportHelper.GetArbeitszeitFuerTag(customer, dtIter);
decimal geplanteBz = (decimal)bzspan.EndDateTime.Subtract(bzspan.StartDateTime).TotalMinutes;
if (geplanteBz > 0 && geplanteBz != arbeitszeitMinuten)
{
var row = new AusgleichsRow
{
Employee = emp,
Customer = customer,
BetreuungszeitStart = bzspan.StartDateTime,
BetreuungszeitEnde = bzspan.EndDateTime,
Datum = dtIter
};
if (azStart.Date < DateTime.MaxValue.Date)
{
row.ArbeitszeitStart = azStart;
}
if (azEnde > DateTime.MinValue)
{
row.ArbeitszeitEnde = azEnde;
}
result.Add(row);
}
}
}
}
}
dtIter = dtIter.AddDays(1);
}
return result;
}
private List<Employee> GetHauptbetreuer(Customer customer, DateTime start, DateTime ende)
{
var hauptbetreuer = new List<Employee>();
foreach (var e2c in customer.Employee2CustomerList.Where(e => e.IsActive == ActivationTypeId.Active
&& (!e.StartDate.HasValue || e.StartDate.Value.Date <= ende.Date)
&& (!e.EndDate.HasValue || e.EndDate.Value.Date >= start.Date)
&& e.ValueList.Any(v => v.Entry.Type == ValueListEntryType.StaffRoleType)))
{
hauptbetreuer.Add(e2c.Employee);
}
return hauptbetreuer;
}
class TagInfo
{
public DateTime Datum { get; set; }
public Employee Employee { get; internal set; }
public Employee Customer { get; internal set; }
public IList<ServiceRecord> ArbeitszeitRecords { get; set; }
public IList<ServiceRecord> KlientenRecords { get; internal set; }
}
class AusgleichsRow
{
public DateTime Datum { get; set; }
public Employee Employee { get; set; }
public Customer Customer { get; set; }
public DateTime? BetreuungszeitStart { get; set; }
public DateTime? BetreuungszeitEnde { get; set; }
public DateTime? ArbeitszeitStart { get; set; }
public DateTime? ArbeitszeitEnde { get; set; }
}
}
}

View File

@@ -0,0 +1,451 @@
using BeWo.Report.ReportObjects;
namespace SHKServiceSBD.Reports
{
partial class AusgleichsberichtReport
{
/// <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.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = 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.cellHeader1 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeader2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeaderDatum2 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellHeaderUhrzeit2 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.lblZeitraum = new DevExpress.XtraReports.UI.XRLabel();
this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo();
this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
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();
((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 DevExpress.Drawing.DXFont("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(1060F, 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.xrTableCell8,
this.xrTableCell6,
this.xrTableCell3,
this.xrTableCell12,
this.xrTableCell10,
this.xrTableCell5});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 1D;
//
// xrTableCell8
//
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field1")});
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "xrTableCell8";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell8.Weight = 0.3545051703776666D;
//
// xrTableCell6
//
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field2")});
this.xrTableCell6.Multiline = true;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "Klient/in";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell6.Weight = 0.97488921042050247D;
//
// xrTableCell3
//
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field3")});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.Weight = 0.97488921619724889D;
//
// xrTableCell12
//
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field4")});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "xrTableCell12";
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.84194978506413864D;
//
// xrTableCell10
//
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field5")});
this.xrTableCell10.Multiline = true;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "Gesamt";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell10.Weight = 0.841949778689572D;
//
// xrTableCell5
//
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field6")});
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "xrTableCell5";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell5.Weight = 0.70901033998942431D;
//
// lblTitel
//
this.lblTitel.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold);
this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F);
this.lblTitel.Name = "lblTitel";
this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblTitel.SizeF = new System.Drawing.SizeF(666.9999F, 23F);
this.lblTitel.StylePriority.UseFont = false;
this.lblTitel.Text = "Ausgleichsbericht";
//
// 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 = 40F;
this.GroupHeader2.Name = "GroupHeader2";
this.GroupHeader2.RepeatEveryPage = true;
//
// 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 DevExpress.Drawing.DXFont("Arial", 9F, DevExpress.Drawing.DXFontStyle.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(1060F, 40F);
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.cellHeader1,
this.cellHeader2,
this.xrTableCell2,
this.xrTableCell4,
this.cellHeaderDatum2,
this.cellHeaderUhrzeit2});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1.1162794658854165D;
//
// cellHeader1
//
this.cellHeader1.Name = "cellHeader1";
this.cellHeader1.Text = "Tag";
this.cellHeader1.Weight = 0.35450517037766649D;
//
// cellHeader2
//
this.cellHeader2.Name = "cellHeader2";
this.cellHeader2.Text = "Mitarbeiter im Einsatz, oder ohne";
this.cellHeader2.Weight = 0.97488921042050225D;
//
// xrTableCell2
//
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Text = "Einsatz bei Kind";
this.xrTableCell2.Weight = 0.97488921619724866D;
//
// xrTableCell4
//
this.xrTableCell4.Multiline = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "Arbeitszeit beim festen Kind";
this.xrTableCell4.Weight = 0.84194978506413887D;
//
// cellHeaderDatum2
//
this.cellHeaderDatum2.Multiline = true;
this.cellHeaderDatum2.Name = "cellHeaderDatum2";
this.cellHeaderDatum2.StylePriority.UseTextAlignment = false;
this.cellHeaderDatum2.Text = "Tatsächliche Einsatzzeit bei Vertretungskind";
this.cellHeaderDatum2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.cellHeaderDatum2.Weight = 0.84194977868957155D;
//
// cellHeaderUhrzeit2
//
this.cellHeaderUhrzeit2.Name = "cellHeaderUhrzeit2";
this.cellHeaderUhrzeit2.Text = "Differenz /Ausgleich";
this.cellHeaderUhrzeit2.Weight = 0.70901033998942387D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.QueryRO);
//
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.lblZeitraum,
this.lblTitel});
this.ReportHeader.HeightF = 80F;
this.ReportHeader.Name = "ReportHeader";
//
// lblZeitraum
//
this.lblZeitraum.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.lblZeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 32.99998F);
this.lblZeitraum.Name = "lblZeitraum";
this.lblZeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblZeitraum.SizeF = new System.Drawing.SizeF(666.9999F, 23F);
this.lblZeitraum.StylePriority.UseFont = false;
//
// pageFooterBand1
//
this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPageInfo2,
this.xrPageInfo1});
this.pageFooterBand1.HeightF = 48F;
this.pageFooterBand1.Name = "pageFooterBand1";
//
// xrPageInfo2
//
this.xrPageInfo2.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(940F, 25F);
this.xrPageInfo2.Name = "xrPageInfo2";
this.xrPageInfo2.SizeF = new System.Drawing.SizeF(120F, 23F);
this.xrPageInfo2.StyleName = "PageInfo";
this.xrPageInfo2.StylePriority.UseFont = false;
this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrPageInfo2.TextFormatString = "Seite {0} von {1}";
//
// xrPageInfo1
//
this.xrPageInfo1.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F);
this.xrPageInfo1.Name = "xrPageInfo1";
this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime;
this.xrPageInfo1.SizeF = new System.Drawing.SizeF(220F, 23F);
this.xrPageInfo1.StyleName = "PageInfo";
this.xrPageInfo1.StylePriority.UseFont = false;
//
// 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 DevExpress.Drawing.DXFont("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 DevExpress.Drawing.DXFont("Times New Roman", 10F, DevExpress.Drawing.DXFontStyle.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 DevExpress.Drawing.DXFont("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 DevExpress.Drawing.DXFont("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";
//
// AusgleichsberichtReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.DetailReport,
this.ReportHeader,
this.pageFooterBand1,
this.topMarginBand1,
this.bottomMarginBand1});
this.DataSource = this.bindingSource1;
this.DisplayName = "Ausgleichsbericht";
this.Landscape = true;
this.Margins = new DevExpress.Drawing.DXMargins(60F, 40F, 50F, 30F);
this.PageHeight = 827;
this.PageWidth = 1169;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] {
this.Title,
this.FieldCaption,
this.PageInfo,
this.DataField});
this.Version = "23.2";
((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.PageFooterBand pageFooterBand1;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2;
private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1;
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 xrTableCell10;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell cellHeader2;
private DevExpress.XtraReports.UI.XRTableCell cellHeaderDatum2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell cellHeader1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell cellHeaderUhrzeit2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRLabel lblZeitraum;
}
}

View File

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

View File

@@ -0,0 +1,110 @@
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SHKServiceSBD.Reports
{
class ReportHelper
{
public static Arbeitszeit GetArbeitszeit(Customer customer, DateTime start, DateTime ende)
{
if (customer.Arbeitszeiten != null && customer.Arbeitszeiten.Count > 0)
{
foreach (var az in customer.Arbeitszeiten)
{
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= ende) &&
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= start))
{
return az;
}
}
}
return null;
}
public static DateTimeSpan GetArbeitszeitFuerTag(Customer customer, DateTime tag)
{
DateTimeSpan span = new DateTimeSpan();
span.StartDateTime = DateTime.MaxValue;
span.EndDateTime = DateTime.MinValue;
var az = GetArbeitszeit(customer, tag, tag);
if (az != null)
{
foreach (var ae in az.ArbeitszeitEintraege)
{
if (ReportHelper.IstAmGleichenWochentag(ae, tag))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
DateTime date1;
DateTime date2;
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
{
if (date1 < span.StartDateTime)
{
span.StartDateTime = date1;
}
if (date2 > span.EndDateTime)
{
span.EndDateTime = date2;
}
}
}
}
}
return span;
}
public static bool IstAmGleichenWochentag(ArbeitszeitEintrag ae, DateTime date)
{
var day = date.DayOfWeek;
if (day == DayOfWeek.Monday && ae.Tag == AppointmentDayOfWeek.Montag)
{
return true;
}
if (day == DayOfWeek.Tuesday && ae.Tag == AppointmentDayOfWeek.Dienstag)
{
return true;
}
if (day == DayOfWeek.Wednesday && ae.Tag == AppointmentDayOfWeek.Mittwoch)
{
return true;
}
if (day == DayOfWeek.Thursday && ae.Tag == AppointmentDayOfWeek.Donnerstag)
{
return true;
}
if (day == DayOfWeek.Friday && ae.Tag == AppointmentDayOfWeek.Freitag)
{
return true;
}
if (day == DayOfWeek.Saturday && ae.Tag == AppointmentDayOfWeek.Samstag)
{
return true;
}
if (day == DayOfWeek.Sunday && ae.Tag == AppointmentDayOfWeek.Sonntag)
{
return true;
}
return false;
}
}
}

View File

@@ -90,6 +90,19 @@
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
<Compile Include="Reports\AbweichungenArbeitszeitReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Reports\AbweichungenArbeitszeitReport.designer.cs">
<DependentUpon>AbweichungenArbeitszeitReport.cs</DependentUpon>
</Compile>
<Compile Include="Reports\AusgleichsberichtReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Reports\AusgleichsberichtReport.designer.cs">
<DependentUpon>AusgleichsberichtReport.cs</DependentUpon>
</Compile>
<Compile Include="Reports\ReportHelper.cs" />
<Compile Include="SBDCharacteristicsReport.cs">
<SubType>Component</SubType>
</Compile>
@@ -145,6 +158,12 @@
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Reports\AbweichungenArbeitszeitReport.resx">
<DependentUpon>AbweichungenArbeitszeitReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Reports\AusgleichsberichtReport.resx">
<DependentUpon>AusgleichsberichtReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SBDCharacteristicsReport.resx">
<DependentUpon>SBDCharacteristicsReport.cs</DependentUpon>
<SubType>Designer</SubType>

View File

@@ -14,7 +14,7 @@ using System.Text;
using System.Threading.Tasks;
namespace SHKService.Service
namespace SHKServiceSBD.Service
{
public class CustomVertretungsManager : VertretungsManager
{

View File

@@ -0,0 +1 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -9,15 +9,11 @@ namespace BeWo.Service.Import.AvisImport
public class Avis
{
public String Klient { get; set; }
public String Aktenzeichen { get; set; }
public String Sachbearbeiter { get; set; }
public String Verwendungszweck { get; set; }
public decimal Betrag { get; set; }
public DateTime BuchungsDatum { get; set; }
public DateTime GueltigkeitsDatum { get; set; }
}

View File

@@ -0,0 +1,27 @@
using BeWo.Data.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.Import.AvisImport
{
public class AvisImportResult
{
public ImportResultState ResultState { get; set; }
public String Message { get; set; }
public Avis Avis { get; set; }
public AccountingTransaction NewAbschlagszahlung { get; internal set; }
}
public enum ImportResultState
{
Failed,
Success,
AlreadyExisting
}
}

View File

@@ -10,11 +10,8 @@ namespace BeWo.Service.Import.AvisImport
{
public class AviseImporter
{
private int bereitsVorhandenCount = 0;
private int importiertCount = 0;
//Der Rückgabewert wird beim Client in einer Messagebox angezeigt
public virtual String ImportAvise(List<Avis> avise)
{
var hilfeplaene = CreateHilfeplanInfos();
@@ -24,6 +21,33 @@ namespace BeWo.Service.Import.AvisImport
String importDaten = "1 Datensatz";
String vorhandenDaten = "1 Datensatz";
int importiertCount = 0;
int bereitsVorhandenCount = 0;
var irFalseList = new List<AvisImportResult>();
var newEntities = new List<AccountingTransaction>();
foreach (var ir in importresult)
{
switch (ir.ResultState)
{
case ImportResultState.Success:
importiertCount++;
if (ir.NewAbschlagszahlung != null)
{
newEntities.Add(ir.NewAbschlagszahlung);
}
break;
case ImportResultState.Failed:
irFalseList.Add(ir);
break;
case ImportResultState.AlreadyExisting:
bereitsVorhandenCount++;
break;
}
}
DAOFactory.GenericDAO.Insert(newEntities);
if (importiertCount != 1)
{
importDaten = String.Format("{0} Datensätze", importiertCount);
@@ -34,77 +58,122 @@ namespace BeWo.Service.Import.AvisImport
vorhandenDaten = String.Format("{0} Datensätze", bereitsVorhandenCount);
}
if (String.IsNullOrEmpty(importresult))
StringBuilder sb = new StringBuilder();
sb.AppendLine(String.Format("Der Import ist abgeschlossen. Es wurden {0} neu importiert. {1} waren bereits vorhanden.", importDaten, vorhandenDaten));
if (irFalseList.Count > 0)
{
return String.Format(
"Die Daten wurden erfolgreich importiert.\nEs wurden {0} neu importiert. {1} waren bereits vorhanden.",
importDaten, vorhandenDaten);
String nichtImportiertDaten = "1 Datensatz konnte";
if (irFalseList.Count != 1)
{
nichtImportiertDaten = String.Format("{0} Datensätze konnten", irFalseList.Count);
}
sb.AppendLine("");
sb.AppendLine(String.Format("{0} nicht importiert werden:", nichtImportiertDaten));
foreach (var ir in irFalseList)
{
sb.AppendLine(ir.Message);
}
}
else
var text = sb.ToString();
if (text.Length > 5700) // Gibt sonst einen Fehler beim Deserialisieren auf dem Client
{
return String.Format("Die Daten wurden erfolgreich importiert.\nEs wurden {0} neu importiert. {1} waren bereits vorhanden.\n\nFolgende Zahlungen konnten nicht importiert werden:\n{2}", importDaten, vorhandenDaten, importresult);
text = text.Substring(0, 5700) + "...";
}
return text;
}
public virtual String ImportAbschlagszahlungen(List<Avis> avise, List<HilfeplanInfo> hilfeplaene)
public virtual List<AvisImportResult> ImportAbschlagszahlungen(List<Avis> avise, List<HilfeplanInfo> hilfeplaene)
{
StringBuilder ergebnis = new StringBuilder();
var result = new List<AvisImportResult>();
foreach (var avis in avise)
{
bool importiert = false;
foreach (var hilfeplanInfo in hilfeplaene)
{
importiert = ImportAbschlagszahlung(avis, hilfeplanInfo, ergebnis);
if (importiert)
break;
}
var ir = ImportAbschlagszahlung(avis, hilfeplaene);
if (!importiert)
{
if (ergebnis.Length > 0)
ergebnis.Append("\n");
ergebnis.Append(String.Format("{0}, {1}, {2:MMMM.yyyy}", avis.Klient, avis.Aktenzeichen, avis.GueltigkeitsDatum));
}
result.Add(ir);
}
return ergebnis.ToString();
return result;
}
public virtual bool ImportAbschlagszahlung(Avis avis, HilfeplanInfo hp, StringBuilder log)
public virtual AvisImportResult ImportAbschlagszahlung(Avis avis, List<HilfeplanInfo> hilfeplaene)
{
if (avis.GueltigkeitsDatum >= hp.Start && avis.GueltigkeitsDatum <= hp.Ende)
var result = new AvisImportResult();
result.ResultState = ImportResultState.Failed;
result.Avis = avis;
var allePassendenHps = new List<HilfeplanInfo>();
HilfeplanInfo passenderHilfeplan = null;
foreach (var hp in hilfeplaene)
{
if (!String.IsNullOrEmpty(avis.Verwendungszweck))
var r = VergleicheAvisMitHilfeplan(avis, hp);
if (r.ResultState == ImportResultState.Success)
{
if (VergleicheAvisMitHilfeplan(avis, hp))
{
if (!CheckObAbschlagszahlungBereitsImportiert(avis, hp))
{
CreateAbschlagszahlung(avis, hp);
importiertCount++;
}
else
{
bereitsVorhandenCount++;
}
return true;
}
allePassendenHps.Add(hp);
}
}
return false;
if (allePassendenHps.Count == 0)
{
result.Message = String.Format("GP {0} konnte nicht gefunden werden.", avis.Aktenzeichen);
}
else
{
result.Message = String.Format("Es wurde kein Hilfeplan mit passendem Zeitraum gefunden.");
DateTime monatStart = new DateTime(avis.GueltigkeitsDatum.Year, avis.GueltigkeitsDatum.Month, 1);
DateTime monatEnde = monatStart.AddMonths(1);
foreach (var hp in allePassendenHps)
{
if (hp.Start < monatEnde && hp.Ende >= monatStart)
{
passenderHilfeplan = hp;
result.ResultState = ImportResultState.Success;
result.Message = "";
}
}
}
if (result.ResultState == ImportResultState.Failed)
{
result.Message = String.Format("{0}, {1}, {2:MMM yyyy}, Grund: {3}", avis.Klient, avis.Aktenzeichen, avis.GueltigkeitsDatum, result.Message);
}
else if (passenderHilfeplan != null)
{
if (!CheckObAbschlagszahlungBereitsImportiert(avis, passenderHilfeplan))
{
result.NewAbschlagszahlung = CreateAbschlagszahlung(avis, passenderHilfeplan);
result.ResultState = ImportResultState.Success;
}
else
{
result.ResultState = ImportResultState.AlreadyExisting;
}
}
return result;
}
public virtual bool VergleicheAvisMitHilfeplan(Avis avis, HilfeplanInfo hp)
public virtual AvisImportResult VergleicheAvisMitHilfeplan(Avis avis, HilfeplanInfo hp)
{
var result = new AvisImportResult();
result.Avis = avis;
//Prüfe ob Aktenzeichen vorkommt
if (!String.IsNullOrEmpty(hp.Aktenzeichen) && hp.Aktenzeichen.Contains(avis.Aktenzeichen))
{
return true;
result.ResultState = ImportResultState.Success;
}
else
{
result.Message = String.Format("Aktenzeichen {0} konnte nicht gefunden werden.", avis.Aktenzeichen);
}
//Prüfe ob Klientname vorkommt
//var nameBuchung = avis.Verwendungszweck.ToLower();
@@ -127,26 +196,31 @@ namespace BeWo.Service.Import.AvisImport
// return true;
//}
return false;
return result;
}
public virtual void CreateAbschlagszahlung(Avis avis, HilfeplanInfo hp)
public virtual AccountingTransaction CreateAbschlagszahlung(Avis avis, HilfeplanInfo hp)
{
var newAz = new AccountingTransaction();
newAz.CostBearer2SupportConcept = hp.CostBearer2SupportConcept;
newAz.Amount = avis.Betrag;
newAz.BookingDate = avis.BuchungsDatum;
newAz.ImportNotice = avis.Verwendungszweck;
newAz.ImportNotice = CreateImportNotice(avis);
newAz.ValidityDate = avis.GueltigkeitsDatum;
newAz.Notice = "Automatischer Import " + avis.Verwendungszweck;
newAz.Notice = String.Format("Automatischer Import vom {0:dd.MM.yyyy} für {1}, AZ: {2}", avis.BuchungsDatum, avis.Klient, avis.Aktenzeichen);
DAOFactory.GenericDAO.Insert(newAz);
return newAz;
}
public virtual String CreateImportNotice(Avis avis)
{
return String.Format("Automatischer Import vom {0:dd.MM.yyyy} für {1}, AZ: {2} über {3:c}", avis.GueltigkeitsDatum, avis.Klient, avis.Aktenzeichen, avis.Betrag);
}
public virtual bool CheckObAbschlagszahlungBereitsImportiert(Avis avis, HilfeplanInfo hp)
{
var azAltList = DAOFactory.SearchDAO.FindAccountingTransactionsWithImportNotice(avis.Verwendungszweck);
var azAltList = DAOFactory.SearchDAO.FindAccountingTransactionsWithImportNotice(CreateImportNotice(avis));
return azAltList != null && azAltList.Any();
}

View File

@@ -0,0 +1,126 @@
using DevExpress.Pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.Import.AvisImport
{
public class LvrAvisKlientGesamt
{
public String GesamtText { get; set; }
public String Klient { get; set; }
public String Aktenzeichen { get; set; }
public String Sachbearbeiter { get; set; }
public List<Avis> LeseEinzelAvise()
{
var avise = new List<Avis>();
var lines = GesamtText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
// Setze Klient und Aktenzeichen
if (lines.Length > 2)
{
this.Aktenzeichen = lines[0].Replace("GP:", "").Trim();
this.Sachbearbeiter = lines[1].Replace("Sachbearbeiter", "").Replace(":", "").Trim();
this.Klient = lines[2].Replace("Ihr Aktenzeichen", "").Replace(":", "").Trim();
}
int index = 3;
DateTime datum = DateTime.MinValue;
Avis letzterAvis = null;
while (index < lines.Length)
{
var line = lines[index++];
//Prüfe ob Zeile mit Datum anfängt => Neuer Avis für neuen Monat
//oder ein Betrag vorhanden ist => Neue Teilzahlung für diesen Monat
//oder der Text "Gesamtbetrag" vorhanden ist => Monat beendet
if (line.Length >= 7 && DateTime.TryParse(line.Substring(0, 7), out var d1))
{
datum = d1;
}
else if (line.Contains("Gesamtsumme"))
{
//ignorieren
}
else
{
decimal? betrag = LeseBetrag(line);
if (betrag.HasValue)
{
var neuerAvis = new Avis();
neuerAvis.Betrag = betrag.Value;
neuerAvis.BuchungsDatum = DateTime.Now;
neuerAvis.GueltigkeitsDatum = datum;
neuerAvis.Klient = this.Klient;
neuerAvis.Aktenzeichen = this.Aktenzeichen;
neuerAvis.Sachbearbeiter = this.Sachbearbeiter;
neuerAvis.Verwendungszweck = line;
if (neuerAvis.Betrag != 0)
{
avise.Add(neuerAvis);
}
letzterAvis = neuerAvis;
}
else if (letzterAvis != null)
{
letzterAvis.Verwendungszweck = String.Format("{0}\n{1}", letzterAvis.Verwendungszweck, line);
}
}
}
return avise;
}
private decimal? LeseBetrag(string zeile)
{
String euroZeile = zeile;
if (euroZeile.IndexOf("€") > 0)
{
euroZeile = euroZeile.Substring(0, euroZeile.IndexOf("€")).Trim();
if (euroZeile.LastIndexOf(" ") > 0)
{
euroZeile = euroZeile.Substring(euroZeile.LastIndexOf(" ")).Trim();
if (Decimal.TryParse(euroZeile, out var betrag))
{
return betrag;
}
}
}
return null;
}
private void SetzeBetragUndVerwendungszweck(Avis avis, string zeile)
{
String euroZeile = zeile;
if (euroZeile.IndexOf("€") > 0)
{
euroZeile = euroZeile.Substring(0, euroZeile.IndexOf("€")).Trim();
if (euroZeile.LastIndexOf(" ") > 0)
{
avis.Verwendungszweck = euroZeile.Substring(0, euroZeile.LastIndexOf(" "));
euroZeile = euroZeile.Substring(euroZeile.LastIndexOf(" ")).Trim();
if (Decimal.TryParse(euroZeile, out var betrag))
{
avis.Betrag = betrag;
}
}
}
}
}
}

View File

@@ -20,62 +20,12 @@ namespace BeWo.Service.Import.AvisImport
{
processor.LoadDocument(ms);
var pdfText = processor.Text;
var lines = pdfText.Split('\n');
int index = 0;
Avis avis = null;
while (index < lines.Length)
var klientenListe = CreateKlientenBereiche(pdfText);
foreach (var kg in klientenListe)
{
//Prüfe ob für letzten Klienten mehreren Abschlagszahlungen für unterschiedliche Monate existieren
var line = lines[index];
if (avis != null && line.Length >= 7 && DateTime.TryParse(line.Substring(0, 7), out var d1) && lines.Length > index + 1)
{
var klient = avis.Klient;
var az = avis.Aktenzeichen;
avis = new Avis();
avis.Klient = klient;
avis.Aktenzeichen = az;
avis.BuchungsDatum = DateTime.Now;
avis.GueltigkeitsDatum = d1;
SetzeBetragUndVerwendungszweck(avis, lines[index + 1]);
index += 1;
if (avis.Betrag > 0)
{
avise.Add(avis);
}
}
//Suche nächsten Klient
else if (line.StartsWith("GP:"))
{
if (lines.Length > index + 4)
{
avis = new Avis();
avis.BuchungsDatum = DateTime.Now;
avis.Aktenzeichen = line.Replace("GP:", "").Trim();
avis.Klient = lines[index + 2].Replace("Ihr Aktenzeichen", "").Replace(":", "").Trim();
String datum = lines[index + 3].Substring(0, 7);
if (DateTime.TryParse(datum, out var d2))
{
avis.GueltigkeitsDatum = d2;
}
SetzeBetragUndVerwendungszweck(avis, lines[index + 4]);
avise.Add(avis);
index += 4;
}
}
index++;
avise.AddRange(kg.LeseEinzelAvise());
}
}
}
@@ -84,23 +34,41 @@ namespace BeWo.Service.Import.AvisImport
}
private void SetzeBetragUndVerwendungszweck(Avis avis, string zeile)
private List<LvrAvisKlientGesamt> CreateKlientenBereiche(string pdfText)
{
String euroZeile = zeile;
if (euroZeile.IndexOf("€") > 0)
{
euroZeile = euroZeile.Substring(0, euroZeile.IndexOf("€")).Trim();
if (euroZeile.LastIndexOf(" ") > 0)
{
avis.Verwendungszweck = euroZeile.Substring(0, euroZeile.LastIndexOf(" "));
euroZeile = euroZeile.Substring(euroZeile.LastIndexOf(" ")).Trim();
if (Decimal.TryParse(euroZeile, out var betrag))
{
avis.Betrag = betrag;
}
var bereiche = new List<LvrAvisKlientGesamt>();
var lines = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
int index = 0;
while (index < lines.Length)
{
var line = lines[index++];
if (line.StartsWith("GP:"))
{
String aktenzeichen = line.Replace("GP:", "").Trim();
StringBuilder textBereich = new StringBuilder();
textBereich.AppendLine(line);
var bereich = new LvrAvisKlientGesamt();
bool endeBereich = false;
while (index < lines.Length && !endeBereich)
{
line = lines[index++];
textBereich.AppendLine(line);
if (line.Contains("Gesamtsumme") && line.Contains(aktenzeichen))
{
endeBereich = true;
bereich.GesamtText = textBereich.ToString();
bereiche.Add(bereich);
}
}
}
}
return bereiche;
}
}
}

View File

@@ -8,7 +8,7 @@ namespace BeWo.Service.Plugins
{
public virtual UploadImportFileResult ImportData(string filename, byte[] daten)
{
//muss überschrieben werden. Es gibt keinen Standardimport
#if DEBUG
//das ist nur zum Testen
return ImportLvrAvise(filename, daten);

View File

@@ -184,7 +184,7 @@ namespace BeWo.Service.Plugins
//t = "7185338722"; // BeWo Walz & Paiva
//t = "3196643272"; // Betreutes Wohnen Lisa Wöll
//t = "3432911735"; // Caritas Günzburg - Neu Ulm
//t = "2591682148"; // Humanitas
t = "2591682148"; // Humanitas
//t = "9805564204"; // LeWo Aachen
//t = "7215356798"; // Triathlon
//t = "3664416736"; // LH Mönchengladbach

View File

@@ -378,9 +378,11 @@
<Compile Include="Dienstplanung\MitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="Dienstplanung\Mitarbeiterstundenkonto.cs" />
<Compile Include="Dokumentverwaltung\DokumentManager.cs" />
<Compile Include="Import\AvisImport\AvisImportResult.cs" />
<Compile Include="Import\AvisImport\LvrAviseImporter.cs" />
<Compile Include="Import\AvisImport\AviseImporter.cs" />
<Compile Include="Import\AvisImport\HilfeplanInfo.cs" />
<Compile Include="Import\AvisImport\LvrAvisKlientGesamt.cs" />
<Compile Include="Import\AvisImport\LvrAvisPdfReader.cs" />
<Compile Include="Import\AvisImport\Avis.cs" />
<Compile Include="Invoicing\ApprovalPeriod.cs" />