Files
BeWoPlaner/ReportImp/BetreuwoWesel/Mitarbeiterarbeitszeitkonto.cs

152 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace BetreuWoWesel
{
[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)
{
int kommenAusFrei = 0;
if (ed.Days != null)
{
//for (int i = ed.Days.Count - 1; i > 0; i--)
// {
// var item = ed.Days[i];
// if (item.MinutesTotal == 0)
// ed.Days.Remove(item);
//}
foreach (var dayDetail in ed.Days)
{
if (dayDetail.ServiceRecords != null && dayDetail.ServiceRecords.Count > 0)
{
foreach (var sr in dayDetail.ServiceRecords)
{
// Es muss gezählt werden, wie oft die Leistung "Kommen aus frei" eingetragen wurde und am Ende mit 25 EUR multipliziert werden (Feld Regelarbeitszeit)
if (sr.ServiceDescription.Name.ToLower().Contains("kommen aus frei"))
kommenAusFrei++;
if (sr.Customer != null)
{
dayDetail.Custom1 = String.Format("{0}, {1}", sr.Customer.Person.LastName,
sr.Customer.Person.FirstName);
}
if (String.IsNullOrEmpty(dayDetail.Custom2) && sr.ServiceDescription != null)
{
dayDetail.Custom2 = sr.ServiceDescription.Name;
}
}
}
if (dayDetail.StartDateTime1.HasValue || dayDetail.EndDateTime1.HasValue)
{
dayDetail.Custom3 = String.Format("{0:HH:mm}-{1:HH:mm}", dayDetail.StartDateTime1, dayDetail.EndDateTime1);
}
}
}
ed.Regelarbeitszeit = string.Format("{0:0} ({1:c})", kommenAusFrei, kommenAusFrei * 25);
}
this.bindingSource1.DataSource = pRO;
}
private void xrLabel1_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
{
var emp = DetailReport.GetCurrentRow() as MitarbeiterstundenkontoRO.EmployeeDetail;
XRLabel lbl = sender as XRLabel;
if (lbl != null)
{
StringBuilder sb = new StringBuilder();
if (emp != null)
{
sb.AppendLine(emp.Employee.Person.Sex == Sex.Female ? "Frau" : "Herr");
sb.AppendLine(String.Format("{0} {1}", emp.Employee.Person.FirstName, emp.Employee.Person.LastName));
if (emp.Employee.Person.Address != null)
{
sb.AppendLine(emp.Employee.Person.Address.Street);
sb.AppendLine("");
sb.AppendLine(String.Format("{0} {1}", emp.Employee.Person.Address.PostalCode, emp.Employee.Person.Address.Town));
}
}
lbl.Text = sb.ToString();
}
}
private void lblFooterMehrarbeit_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
{
var ro = this.GetCurrentRow() as MitarbeiterstundenkontoRO;
var emp = DetailReport.GetCurrentRow() as MitarbeiterstundenkontoRO.EmployeeDetail;
var footer = sender as GroupFooterBand;
if (ro != null && emp != null && footer != null)
{
if (IstGfb(ro, emp))
{
e.Cancel = true;
}
//footer.Visible = IstGfb(ro, emp);
//footer.BackColor = IstGfb(ro, emp) ? Color.Aqua : Color.IndianRed;
}
}
private void FooterGfb_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
{
var ro = this.GetCurrentRow() as MitarbeiterstundenkontoRO;
var emp = DetailReport.GetCurrentRow() as MitarbeiterstundenkontoRO.EmployeeDetail;
var footer = sender as GroupFooterBand;
if (ro != null && emp != null && footer != null)
{
if (!IstGfb(ro, emp))
{
e.Cancel = true;
}
//footer.Visible = IstGfb(ro, emp);
//footer.BackColor = IstGfb(ro, emp) ? Color.Aqua : Color.IndianRed;
}
}
private bool IstGfb(MitarbeiterstundenkontoRO ro, MitarbeiterstundenkontoRO.EmployeeDetail emp)
{
var c = emp.Employee.GetValidContractForDate(ro.ReportStartDate);
if (c != null)
{
if (c.EmploymentType != null && c.EmploymentType.Name.ToLower().Contains("gfb"))
{
return true;
}
}
return false;
}
}
}