AutismusKoelnBonn, DiakonieKKKleve, Kette und PerspektivenEV
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -568,3 +568,7 @@ obj
|
||||
/ReportImp/KundeArbeitszeit
|
||||
*.user
|
||||
/ReportImp/KundeMuster
|
||||
/ReportImp/DiakonieKKKleve/Mitarbeiterarbeitszeitkonto.designer.cs
|
||||
/ReportImp/DiakonieKKKleve/Mitarbeiterarbeitszeitkonto.resx
|
||||
/ReportImp/DiakonieKKKleve/Mitarbeiterarbeitszeitkonto.cs
|
||||
/ReportImp/DiakonieKKKleve/CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs
|
||||
|
||||
@@ -11,9 +11,6 @@ namespace AutismusKoelnBonn.Invoicing
|
||||
|
||||
public class FactorInvoiceCreation : InvoiceCreation
|
||||
{
|
||||
private DateTime? accountingPeriodStart = null;
|
||||
private DateTime? accountingPeriodEnd = null;
|
||||
|
||||
public override void SetInvoiceId(ServiceInvoice invoice)
|
||||
{
|
||||
invoice.InvoiceBase.InvoiceId = "Faktor";
|
||||
|
||||
@@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BS.Shared.Core;
|
||||
@@ -49,8 +51,8 @@ namespace AutismusKoelnBonn
|
||||
|
||||
pRO.Services = servicesBillable;
|
||||
}
|
||||
|
||||
if (pRO.SupportConceptCostBearer.SupportConcept.Customer.Teams.Contains("Bonn"))
|
||||
Customer c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid);
|
||||
if (c.Team2CustomerList.Count > 0 && c.Team2CustomerList[0].Team.Name.Contains("Bonn"))
|
||||
{
|
||||
lblBonn.Visible = true;
|
||||
lblKoeln.Visible = false;
|
||||
@@ -110,7 +112,6 @@ namespace AutismusKoelnBonn
|
||||
|
||||
if (newRows > 0)
|
||||
{
|
||||
lblUnterschriftKlient.Top += newRows * 20;
|
||||
lblUnterschriftMitarbeiter.Top += newRows * 20;
|
||||
}
|
||||
}
|
||||
@@ -119,9 +120,9 @@ namespace AutismusKoelnBonn
|
||||
// TODO: Wie anzeigen? Alle?
|
||||
private void EmployeeSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
||||
{
|
||||
return;
|
||||
//return;
|
||||
|
||||
if(sender is XRPictureBox pictureBox)
|
||||
if (sender is XRPictureBox pictureBox)
|
||||
{
|
||||
var base64String = pictureBox.Tag as string;
|
||||
|
||||
@@ -144,9 +145,9 @@ namespace AutismusKoelnBonn
|
||||
// TODO: Visibile der Datumstextboxen auf true setzen!
|
||||
private void CustomerSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
||||
{
|
||||
return;
|
||||
//return;
|
||||
|
||||
if(sender is XRPictureBox pictureBox)
|
||||
if (sender is XRPictureBox pictureBox)
|
||||
{
|
||||
var base64String = pictureBox.Tag as string;
|
||||
|
||||
@@ -174,7 +175,7 @@ namespace AutismusKoelnBonn
|
||||
{
|
||||
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
|
||||
var binData = Convert.FromBase64String(base64Data);
|
||||
Image img = ByteArrayToImage(binData);
|
||||
System.Drawing.Image img = ByteArrayToImage(binData);
|
||||
xrBox.Image = Utils.CropImage(img);
|
||||
}
|
||||
else
|
||||
@@ -183,11 +184,11 @@ namespace AutismusKoelnBonn
|
||||
}
|
||||
}
|
||||
|
||||
public Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
public System.Drawing.Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
{
|
||||
using(var memoryStream = new MemoryStream(byteArrayIn))
|
||||
{
|
||||
return Image.FromStream(memoryStream);
|
||||
return System.Drawing.Image.FromStream(memoryStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
@@ -21,12 +22,12 @@ namespace DiakonieKKKleve
|
||||
{
|
||||
var details = CreateDayDetails2(berichtStart, berichtEnde, ed, recordsAll);
|
||||
|
||||
foreach (var dd in details)
|
||||
foreach (var dd in details)
|
||||
{
|
||||
if (dd.Custom10 == null)
|
||||
dd.Custom10 = "";
|
||||
dd.Custom10 = "";
|
||||
|
||||
if (dd.ZusammenhaengendeZeitraeume != null)
|
||||
if (dd.ZusammenhaengendeZeitraeume != null)
|
||||
{
|
||||
foreach (var dts in dd.ZusammenhaengendeZeitraeume)
|
||||
{
|
||||
@@ -34,15 +35,115 @@ namespace DiakonieKKKleve
|
||||
{
|
||||
dd.Custom10 += ", ";
|
||||
}
|
||||
|
||||
dd.Custom10 += String.Format("{0:HH:mm} - {1:HH:mm}", dts.StartDateTime, dts.EndDateTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
return details;
|
||||
}
|
||||
var arbeitstage = GetArbeitszeitTage(ed.Employee, berichtStart, berichtEnde);
|
||||
if (arbeitstage > 0)
|
||||
ed.ArbeitstageImBerichtszeitraum = arbeitstage ?? 0;
|
||||
return details;
|
||||
}
|
||||
|
||||
public IList<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> recordsAll)
|
||||
protected virtual decimal? GetArbeitszeitTage(Employee emp, DateTime start, DateTime ende)
|
||||
{
|
||||
if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0)
|
||||
{
|
||||
if (HatArbeitszeitImZeitraum(emp.Arbeitszeiten, start, ende))
|
||||
{
|
||||
decimal soll = 0;
|
||||
|
||||
DateTime startTemp = start;
|
||||
|
||||
while (startTemp < ende)
|
||||
{
|
||||
soll += GetArbeitszeitTag(emp, startTemp);
|
||||
startTemp = startTemp.AddDays(1);
|
||||
}
|
||||
return soll;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected virtual decimal GetArbeitszeitTag(Employee emp, DateTime tag)
|
||||
{
|
||||
decimal soll = 0;
|
||||
var fak = GetFeiertagsFaktor(tag);
|
||||
|
||||
if (fak < 1)
|
||||
{
|
||||
if (emp.Arbeitszeiten != null)
|
||||
{
|
||||
foreach (var az in emp.Arbeitszeiten)
|
||||
{
|
||||
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
|
||||
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
|
||||
{
|
||||
var tage = GetAnzahlArbeitszeitTage(az, tag);
|
||||
soll += tage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return soll;
|
||||
}
|
||||
|
||||
private decimal GetAnzahlArbeitszeitTage(Arbeitszeit az, DateTime tag)
|
||||
{
|
||||
var day = tag.DayOfWeek;
|
||||
decimal tage = 0;
|
||||
foreach (var ae in az.ArbeitszeitEintraege)
|
||||
{
|
||||
if (SindAmGleichenWochentag(day, 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))
|
||||
{
|
||||
tage += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return tage;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public IList<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> recordsAll)
|
||||
{
|
||||
IList<MitarbeiterstundenkontoRO.DayDetail> dayDetailList = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll);
|
||||
|
||||
@@ -77,11 +178,9 @@ namespace DiakonieKKKleve
|
||||
if (AddServiceRecordToDuration(sr))
|
||||
{
|
||||
azTotal += duration;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
{
|
||||
flmTotal += duration;
|
||||
@@ -95,15 +194,23 @@ namespace DiakonieKKKleve
|
||||
}
|
||||
|
||||
var sollProTag = ed.SollProTag;
|
||||
|
||||
var c = ed.Employee.GetValidContractForDate(berichtStart);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if (ed.ArbeitstageProWoche != 5)
|
||||
{
|
||||
sollProTag = (sollProTag * 5) / ed.ArbeitstageProWoche;
|
||||
}
|
||||
for (int i = berichtStart.Day; i <= DateTime.DaysInMonth(berichtStart.Year, berichtStart.Month); i++)
|
||||
for (int i = berichtStart.Day; i <= DateTime.DaysInMonth(berichtStart.Year, berichtStart.Month); i++)
|
||||
{
|
||||
var start = new DateTime(berichtStart.Year, berichtStart.Month, i);
|
||||
|
||||
var ah = GetAbsenceTimeDays(ed.Employee.AbsenceTimes, start, start.AddDays(1));
|
||||
|
||||
if (ah.TageKrankheit.HasValue && ah.TageKrankheit > 0)
|
||||
@@ -114,7 +221,6 @@ namespace DiakonieKKKleve
|
||||
{
|
||||
dayDetailList.Add(dd);
|
||||
}
|
||||
|
||||
}
|
||||
if (ah.TageUrlaub.HasValue && ah.TageUrlaub > 0)
|
||||
{
|
||||
@@ -124,12 +230,9 @@ namespace DiakonieKKKleve
|
||||
{
|
||||
dayDetailList.Add(dd);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return dayDetailList.OrderBy(dd => dd.Date).ToList();
|
||||
}
|
||||
|
||||
@@ -138,243 +241,377 @@ namespace DiakonieKKKleve
|
||||
MitarbeiterstundenkontoRO.DayDetail dd = null;
|
||||
MitarbeiterstundenkontoRO.DayDetail returndd = null;
|
||||
|
||||
if (!dayToDetail.ContainsKey(start.Day))
|
||||
{
|
||||
//BerechneArbeitstage(ed, start, start.AddMonths(1).AddDays(-1));
|
||||
|
||||
|
||||
if (!dayToDetail.ContainsKey(start.Day))
|
||||
{
|
||||
dd = CreateDayDetail(start, ed);
|
||||
returndd = dd;
|
||||
}
|
||||
else
|
||||
{
|
||||
dd = dayToDetail[start.Day];
|
||||
|
||||
}
|
||||
|
||||
String ar = "";
|
||||
|
||||
|
||||
foreach (var at in ed.Employee.AbsenceTimes)
|
||||
{
|
||||
|
||||
if ((!at.Start.HasValue || at.Start.Value <= start) &&
|
||||
(!at.End.HasValue || at.End.Value >= start))
|
||||
{
|
||||
ar = at.AbsenceReason.Description;
|
||||
}
|
||||
if ((!at.Start.HasValue || at.Start.Value <= start) &&
|
||||
(!at.End.HasValue || at.End.Value >= start))
|
||||
{
|
||||
ar = at.AbsenceReason.Description;
|
||||
DateTimeSpan span = new DateTimeSpan();
|
||||
span.StartDate = dd.Date;
|
||||
|
||||
if (at.Start.HasValue && at.Start.Value > span.StartDate)
|
||||
{
|
||||
span.StartDate = at.Start.Value;
|
||||
}
|
||||
|
||||
if (at.End.HasValue && at.End.Value.Date == span.StartDate.Date &&
|
||||
at.End.Value.Hour > 0)
|
||||
{
|
||||
span.EndDate = at.End.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
span.EndDate = dd.Date.AddDays(1);
|
||||
if (at.End.HasValue && at.End.Value.Date.AddDays(1) < span.EndDate)
|
||||
{
|
||||
span.EndDate = at.End.Value.Date.AddDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (span.EndDate > dd.Date && span.StartDate < dd.Date.AddDays(1))
|
||||
{
|
||||
DateTime day = span.StartDate;
|
||||
var faktor = GetFeiertagsFaktor(day);
|
||||
|
||||
if (faktor < 1 && day.DayOfWeek != DayOfWeek.Saturday && day.DayOfWeek != DayOfWeek.Sunday)
|
||||
{
|
||||
var sollDiesenTag = ed.SollProTag;
|
||||
|
||||
var c = ed.Employee.GetValidContractForDate(dd.Date);
|
||||
if (c != null)
|
||||
{
|
||||
decimal wth = 0;
|
||||
int apw = 5;
|
||||
|
||||
if (c.WeeklyTotalHours.HasValue)
|
||||
{
|
||||
wth = c.WeeklyTotalHours.Value;
|
||||
}
|
||||
if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
|
||||
{
|
||||
apw = c.WeeklyDays.Value;
|
||||
}
|
||||
|
||||
sollDiesenTag = wth / apw;
|
||||
}
|
||||
if (HatArbeitszeitImZeitraum(ed.Employee.Arbeitszeiten, dd.Date, dd.Date))
|
||||
{
|
||||
sollDiesenTag = BerechneAlleAbwesenheitsStundenFuerArbeitszeiten(ed.Employee, dd.Date);
|
||||
}
|
||||
if (span.StartDate.Hour > 0 && span.EndDate.Hour > 0)
|
||||
{
|
||||
var ts = span.EndDate.Subtract(span.StartDate);
|
||||
sollDiesenTag -= ts.Hours;
|
||||
if (sollDiesenTag < 0)
|
||||
{
|
||||
sollDiesenTag = 0;
|
||||
}
|
||||
faktor = 1; // Keine halben Feiertag berücksichtigen, wenn die Abwesenheit in Stunden angegeben wurde
|
||||
|
||||
}
|
||||
if (ed.AbsenceTimeDays != null && ed.AbsenceTimeDays.TageProWocheDict != null)
|
||||
{
|
||||
if (ed.AbsenceTimeDays.RestStundenProWocheDict == null)
|
||||
{
|
||||
ed.AbsenceTimeDays.RestStundenProWocheDict = new Dictionary<DateTimeSpan, decimal>();
|
||||
}
|
||||
foreach (var week in ed.AbsenceTimeDays.TageProWocheDict.Keys)
|
||||
{
|
||||
if (!ed.AbsenceTimeDays.RestStundenProWocheDict.ContainsKey(week))
|
||||
{
|
||||
ed.AbsenceTimeDays.RestStundenProWocheDict.Add(week, ed.SollProWoche);
|
||||
}
|
||||
|
||||
if (day.Date >= week.StartDate && day.Date <= week.EndDate)
|
||||
{
|
||||
var rest = ed.AbsenceTimeDays.RestStundenProWocheDict[week];
|
||||
if (rest < sollDiesenTag)
|
||||
{
|
||||
sollDiesenTag = rest;
|
||||
}
|
||||
rest -= sollDiesenTag;
|
||||
if (rest < 0)
|
||||
{
|
||||
rest = 0;
|
||||
}
|
||||
|
||||
ed.AbsenceTimeDays.RestStundenProWocheDict[week] = rest;
|
||||
}
|
||||
}
|
||||
}
|
||||
decimal maxSoll = sollDiesenTag;
|
||||
if (faktor != 0)
|
||||
{
|
||||
sollDiesenTag *= faktor; //halbe Feiertage etc. berücksichtigen
|
||||
}
|
||||
if (IsUrlaubAbsenceTime(at))
|
||||
{
|
||||
dd.HoursInVacation = sollDiesenTag;
|
||||
}
|
||||
else if (IsKrankheitAbsenceTime(at))
|
||||
{
|
||||
dd.HoursSick = sollDiesenTag;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
if (dd.AbsenceTimes == null)
|
||||
{
|
||||
dd.AbsenceTimes = new List<AbsenceTime>();
|
||||
}
|
||||
dd.AbsenceTimes.Add(at);
|
||||
dd.MinutesTotal += sollDiesenTag * 60;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dd.Custom10 = ar;
|
||||
dd.MinutesTotal += minuten;
|
||||
// dd.MinutesTotal += minuten;
|
||||
|
||||
return returndd;
|
||||
}
|
||||
|
||||
//public IList<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> recordsAll)
|
||||
//{
|
||||
// IList<MitarbeiterstundenkontoRO.DayDetail> dayDetailList = new List<MitarbeiterstundenkontoRO.DayDetail>();
|
||||
private bool HatArbeitszeitImZeitraum(IList<Arbeitszeit> arbeitszeiten, DateTime start, DateTime ende)
|
||||
{
|
||||
if (arbeitszeiten != null)
|
||||
{
|
||||
foreach (var az in arbeitszeiten)
|
||||
{
|
||||
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value < ende) && (!az.GueltigBis.HasValue || az.GueltigBis.Value >= start) && az.ArbeitszeitEintraege != null && az.ArbeitszeitEintraege.Count > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// decimal flmTotal = 0;
|
||||
// decimal azTotal = 0;
|
||||
// foreach (var sr in recordsAll)
|
||||
// {
|
||||
// if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
|
||||
// {
|
||||
// decimal duration = 0;
|
||||
// if (sr.GroupRoundedDuration.HasValue)
|
||||
// {
|
||||
// duration = sr.GroupRoundedDuration.Value;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// duration = sr.RoundedDuration;
|
||||
// }
|
||||
// if (AddServiceRecordToDuration(sr))
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(new DateTime(berichtStart.Year, berichtStart.Month, sr.Start.Value.Day), ed);
|
||||
// dayDetailList.Add(dd);
|
||||
return false;
|
||||
}
|
||||
|
||||
// dd.MinutesTotal += duration;
|
||||
// if (dd.ServiceRecords == null)
|
||||
// dd.ServiceRecords = new List<ServiceRecord>();
|
||||
// dd.ServiceRecords.Add(sr);
|
||||
//public IList<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails2(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> recordsAll)
|
||||
//{
|
||||
// IList<MitarbeiterstundenkontoRO.DayDetail> dayDetailList = new List<MitarbeiterstundenkontoRO.DayDetail>();
|
||||
|
||||
// CalculateSpecialHours(dd, sr, duration);
|
||||
// decimal flmTotal = 0;
|
||||
// decimal azTotal = 0;
|
||||
// foreach (var sr in recordsAll)
|
||||
// {
|
||||
// if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue)
|
||||
// {
|
||||
// decimal duration = 0;
|
||||
// if (sr.GroupRoundedDuration.HasValue)
|
||||
// {
|
||||
// duration = sr.GroupRoundedDuration.Value;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// duration = sr.RoundedDuration;
|
||||
// }
|
||||
// if (AddServiceRecordToDuration(sr))
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(new DateTime(berichtStart.Year, berichtStart.Month, sr.Start.Value.Day), ed);
|
||||
// dayDetailList.Add(dd);
|
||||
|
||||
// dd.MinutesTotal += duration;
|
||||
// if (dd.ServiceRecords == null)
|
||||
// dd.ServiceRecords = new List<ServiceRecord>();
|
||||
// dd.ServiceRecords.Add(sr);
|
||||
|
||||
// CalculateSpecialHours(dd, sr, duration);
|
||||
|
||||
|
||||
// DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
|
||||
// DateTime dtEnd = sr.Start.Value.AddMinutes((double)duration);
|
||||
|
||||
// dd.StartDateTime1 = sr.Start;
|
||||
// dd.StartDateTime1 = sr.Start;
|
||||
|
||||
// dd.EndDateTime1 = dtEnd;
|
||||
// dd.EndDateTime1 = dtEnd;
|
||||
|
||||
// azTotal += duration;
|
||||
// azTotal += duration;
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
|
||||
// if (sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
// {
|
||||
// flmTotal += duration;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (azTotal != 0)
|
||||
// {
|
||||
// ed.FlsDiff = (flmTotal / azTotal) * 100; //Differenzen durch AbsenceTimes?
|
||||
// }
|
||||
// if (sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
// {
|
||||
// flmTotal += duration;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (azTotal != 0)
|
||||
// {
|
||||
// ed.FlsDiff = (flmTotal / azTotal) * 100; //Differenzen durch AbsenceTimes?
|
||||
// }
|
||||
|
||||
// var sollProTag = ed.SollProTag;
|
||||
// var sollProTag = ed.SollProTag;
|
||||
|
||||
// if (ed.ArbeitstageProWoche != 5)
|
||||
// {
|
||||
// sollProTag = (sollProTag * 5) / ed.ArbeitstageProWoche;
|
||||
// }
|
||||
// for (int i = berichtStart.Day; i <= DateTime.DaysInMonth(berichtStart.Year, berichtStart.Month); i++)
|
||||
// {
|
||||
// var start = new DateTime(berichtStart.Year, berichtStart.Month, i);
|
||||
// if (ed.ArbeitstageProWoche != 5)
|
||||
// {
|
||||
// sollProTag = (sollProTag * 5) / ed.ArbeitstageProWoche;
|
||||
// }
|
||||
// for (int i = berichtStart.Day; i <= DateTime.DaysInMonth(berichtStart.Year, berichtStart.Month); i++)
|
||||
// {
|
||||
// var start = new DateTime(berichtStart.Year, berichtStart.Month, i);
|
||||
|
||||
// var ah = GetAbsenceTimeDays(ed.Employee.AbsenceTimes, start, start.AddDays(1));
|
||||
// var ah = GetAbsenceTimeDays(ed.Employee.AbsenceTimes, start, start.AddDays(1));
|
||||
|
||||
// if (ah.TageKrankheit.HasValue && ah.TageKrankheit > 0)
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(start, ed);
|
||||
// dayDetailList.Add(dd);
|
||||
// if (ah.TageKrankheit.HasValue && ah.TageKrankheit > 0)
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(start, ed);
|
||||
// dayDetailList.Add(dd);
|
||||
|
||||
|
||||
// dd.MinutesTotal = (sollProTag * 60) / ah.TageKrankheit.Value;
|
||||
// }
|
||||
// if (ah.TageUrlaub.HasValue && ah.TageUrlaub > 0)
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(start, ed);
|
||||
// dayDetailList.Add(dd);
|
||||
// dd.MinutesTotal = (sollProTag * 60) / ah.TageKrankheit.Value;
|
||||
// }
|
||||
// if (ah.TageUrlaub.HasValue && ah.TageUrlaub > 0)
|
||||
// {
|
||||
// MitarbeiterstundenkontoRO.DayDetail dd = CreateDayDetail(start, ed);
|
||||
// dayDetailList.Add(dd);
|
||||
|
||||
// dd.MinutesTotal = (sollProTag * 60) / ah.TageUrlaub.Value;
|
||||
// }
|
||||
// }
|
||||
// dd.MinutesTotal = (sollProTag * 60) / ah.TageUrlaub.Value;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// return dayDetailList.OrderBy(dd => dd.Date).ToList();
|
||||
//}
|
||||
// return dayDetailList.OrderBy(dd => dd.Date).ToList();
|
||||
//}
|
||||
|
||||
//private void BerechneZeitraeume()
|
||||
//{
|
||||
// foreach (var ddKeyValue in dayToDetail)
|
||||
// {
|
||||
// var dd = ddKeyValue.Value;
|
||||
// if (dd.ZusammenhaengendeZeitraeume == null)
|
||||
// {
|
||||
// dd.ZusammenhaengendeZeitraeume = new List<DateTimeSpan>();
|
||||
// }
|
||||
//private void BerechneZeitraeume()
|
||||
//{
|
||||
// foreach (var ddKeyValue in dayToDetail)
|
||||
// {
|
||||
// var dd = ddKeyValue.Value;
|
||||
// if (dd.ZusammenhaengendeZeitraeume == null)
|
||||
// {
|
||||
// dd.ZusammenhaengendeZeitraeume = new List<DateTimeSpan>();
|
||||
// }
|
||||
|
||||
// if (dd.ServiceRecords != null)
|
||||
// {
|
||||
// var orderedList = dd.ServiceRecords.OrderBy(i => i.Start);
|
||||
// if (dd.ServiceRecords != null)
|
||||
// {
|
||||
// var orderedList = dd.ServiceRecords.OrderBy(i => i.Start);
|
||||
|
||||
// DateTime lastEnd = DateTime.MinValue;
|
||||
// var gapCount = -1;
|
||||
// DateTime lastEnd = DateTime.MinValue;
|
||||
// var gapCount = -1;
|
||||
|
||||
// foreach (var sr in orderedList)
|
||||
// {
|
||||
// if (sr.Start.HasValue && sr.Start.Value.Hour == 0 && sr.Start.Value.Second > 0)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
// foreach (var sr in orderedList)
|
||||
// {
|
||||
// if (sr.Start.HasValue && sr.Start.Value.Hour == 0 && sr.Start.Value.Second > 0)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// decimal duration = GetDuration(sr);
|
||||
// decimal duration = GetDuration(sr);
|
||||
|
||||
|
||||
// DateTime dtEnd = sr.Start.Value.AddMinutes((double) duration);
|
||||
// if (sr.Start > lastEnd)
|
||||
// {
|
||||
// gapCount++;
|
||||
// DateTime dtEnd = sr.Start.Value.AddMinutes((double) duration);
|
||||
// if (sr.Start > lastEnd)
|
||||
// {
|
||||
// gapCount++;
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (dtEnd > lastEnd)
|
||||
// {
|
||||
// lastEnd = dtEnd;
|
||||
// }
|
||||
// if (dtEnd > lastEnd)
|
||||
// {
|
||||
// lastEnd = dtEnd;
|
||||
// }
|
||||
|
||||
// DateTimeSpan currentSpan = null;
|
||||
// if (gapCount + 1 > dd.ZusammenhaengendeZeitraeume.Count)
|
||||
// {
|
||||
// currentSpan = new DateTimeSpan();
|
||||
// currentSpan.StartDateTime = DateTime.MaxValue;
|
||||
// currentSpan.EndDateTime = DateTime.MinValue;
|
||||
// dd.ZusammenhaengendeZeitraeume.Add(currentSpan);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// currentSpan = dd.ZusammenhaengendeZeitraeume[gapCount];
|
||||
// }
|
||||
// DateTimeSpan currentSpan = null;
|
||||
// if (gapCount + 1 > dd.ZusammenhaengendeZeitraeume.Count)
|
||||
// {
|
||||
// currentSpan = new DateTimeSpan();
|
||||
// currentSpan.StartDateTime = DateTime.MaxValue;
|
||||
// currentSpan.EndDateTime = DateTime.MinValue;
|
||||
// dd.ZusammenhaengendeZeitraeume.Add(currentSpan);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// currentSpan = dd.ZusammenhaengendeZeitraeume[gapCount];
|
||||
// }
|
||||
|
||||
// if (sr.Start < currentSpan.StartDateTime)
|
||||
// {
|
||||
// currentSpan.StartDateTime = sr.Start.Value;
|
||||
// }
|
||||
// if (sr.Start < currentSpan.StartDateTime)
|
||||
// {
|
||||
// currentSpan.StartDateTime = sr.Start.Value;
|
||||
// }
|
||||
|
||||
// if (dtEnd > currentSpan.EndDateTime)
|
||||
// {
|
||||
// currentSpan.EndDateTime = dtEnd;
|
||||
// }
|
||||
// if (dtEnd > currentSpan.EndDateTime)
|
||||
// {
|
||||
// currentSpan.EndDateTime = dtEnd;
|
||||
// }
|
||||
|
||||
// if (gapCount == 0)
|
||||
// {
|
||||
// if (!dd.StartDateTime1.HasValue || sr.Start < dd.StartDateTime1)
|
||||
// {
|
||||
// dd.StartDateTime1 = sr.Start;
|
||||
// }
|
||||
// if (gapCount == 0)
|
||||
// {
|
||||
// if (!dd.StartDateTime1.HasValue || sr.Start < dd.StartDateTime1)
|
||||
// {
|
||||
// dd.StartDateTime1 = sr.Start;
|
||||
// }
|
||||
|
||||
// if (!dd.EndDateTime1.HasValue || dtEnd > dd.EndDateTime1)
|
||||
// {
|
||||
// dd.EndDateTime1 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else if (gapCount == 1)
|
||||
// {
|
||||
// if (!dd.StartDateTime2.HasValue || sr.Start < dd.StartDateTime2)
|
||||
// {
|
||||
// dd.StartDateTime2 = sr.Start;
|
||||
// }
|
||||
// if (!dd.EndDateTime1.HasValue || dtEnd > dd.EndDateTime1)
|
||||
// {
|
||||
// dd.EndDateTime1 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else if (gapCount == 1)
|
||||
// {
|
||||
// if (!dd.StartDateTime2.HasValue || sr.Start < dd.StartDateTime2)
|
||||
// {
|
||||
// dd.StartDateTime2 = sr.Start;
|
||||
// }
|
||||
|
||||
// if (!dd.EndDateTime2.HasValue || dtEnd > dd.EndDateTime2)
|
||||
// {
|
||||
// dd.EndDateTime2 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else if (gapCount == 2)
|
||||
// {
|
||||
// if (!dd.StartDateTime3.HasValue || sr.Start < dd.StartDateTime3)
|
||||
// {
|
||||
// dd.StartDateTime3 = sr.Start;
|
||||
// }
|
||||
// if (!dd.EndDateTime2.HasValue || dtEnd > dd.EndDateTime2)
|
||||
// {
|
||||
// dd.EndDateTime2 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else if (gapCount == 2)
|
||||
// {
|
||||
// if (!dd.StartDateTime3.HasValue || sr.Start < dd.StartDateTime3)
|
||||
// {
|
||||
// dd.StartDateTime3 = sr.Start;
|
||||
// }
|
||||
|
||||
// if (!dd.EndDateTime3.HasValue || dtEnd > dd.EndDateTime3)
|
||||
// {
|
||||
// dd.EndDateTime3 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (!dd.StartDateTime4.HasValue || sr.Start < dd.StartDateTime4)
|
||||
// {
|
||||
// dd.StartDateTime4 = sr.Start;
|
||||
// }
|
||||
// if (!dd.EndDateTime3.HasValue || dtEnd > dd.EndDateTime3)
|
||||
// {
|
||||
// dd.EndDateTime3 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (!dd.StartDateTime4.HasValue || sr.Start < dd.StartDateTime4)
|
||||
// {
|
||||
// dd.StartDateTime4 = sr.Start;
|
||||
// }
|
||||
|
||||
// if (!dd.EndDateTime4.HasValue || dtEnd > dd.EndDateTime4)
|
||||
// {
|
||||
// dd.EndDateTime4 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
// if (!dd.EndDateTime4.HasValue || dtEnd > dd.EndDateTime4)
|
||||
// {
|
||||
// dd.EndDateTime4 = dtEnd;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
return new MitarbeiterstundenkontoRO.DayDetail { Date = date.Date, NightStart = 21, NightEnd = 6 };
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace DiakonieKKKleve
|
||||
var msb = new DiakonieKKKleveMitarbeiterstundenkontoBerechnung();
|
||||
msb.CreateReport(pRO);
|
||||
|
||||
ueberschriftsLabel.Text = string.Format("Arbeitszeiterfassung für den Monat {0}", pRO.ReportStartDate.ToString("MMMM yyyy"));
|
||||
ueberschriftsLabel.Text = string.Format("Arbeitszeiterfassung f<EFBFBD>r den Monat {0}", pRO.ReportStartDate.ToString("MMMM yyyy"));
|
||||
sollStundenMonatLabelTableCell.Text = string.Format("Sollstunden Monat {0}", pRO.ReportStartDate.ToString("MMMM yyyy"));
|
||||
|
||||
bindingSource1.DataSource = pRO;
|
||||
|
||||
@@ -636,7 +636,7 @@ namespace DiakonieKKKleve
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.WorkDaysThisMonth", "{0:#,##}")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ArbeitstageImBerichtszeitraum", "{0:#,##}")});
|
||||
this.xrTableCell23.Name = "xrTableCell23";
|
||||
this.xrTableCell23.StylePriority.UseBorders = false;
|
||||
this.xrTableCell23.StylePriority.UseTextAlignment = false;
|
||||
|
||||
@@ -55,11 +55,11 @@ namespace KetteReports
|
||||
lblKundennr.Visible = false;
|
||||
lblAbsenderJA.Visible = true;
|
||||
notice +=
|
||||
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können bitten wir Sie um die Angabe der Rechnungsnummer.";
|
||||
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können, bitten wir Sie um die Angabe der Rechnungsnummer.";
|
||||
}
|
||||
else
|
||||
notice +=
|
||||
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können bitten wir Sie um die Angabe des Leistungsmonats, der Kundennummer und der Rechnungsnummer.";
|
||||
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können, bitten wir Sie um die Angabe des Leistungsmonats, der Kundennummer und der Rechnungsnummer.";
|
||||
|
||||
if (String.IsNullOrEmpty(pRO.Notice))
|
||||
{
|
||||
|
||||
@@ -48,8 +48,9 @@ namespace PerspektivenEV
|
||||
{
|
||||
XtraReport invoiceReport = null;
|
||||
|
||||
if (iDC.InvoiceBase.RecipientOrganisation == "SELBSTZAHLER")
|
||||
{
|
||||
if (iDC.InvoiceBase.RecipientOrganisation != "LWV Hessen" && iDC.InvoiceBase.Type.ToString() == "Service"
|
||||
&& iDC.ServiceInvoicePeriods.Count > 0 && iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory.Name.Contains("BW"))
|
||||
{
|
||||
XtraReport masterReport = new XtraReport();
|
||||
masterReport.CreateDocument();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user