152 lines
4.4 KiB
C#
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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|