Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -26,13 +26,9 @@ namespace BeWo.Report.ReportObjects
|
||||
public virtual void CreateReport(MitarbeiterauslastungRO ro)
|
||||
{
|
||||
CreateEmployeeDetails(ro);
|
||||
|
||||
CreateEmployeeTotals(ro);
|
||||
|
||||
CreateTeamDetails(ro);
|
||||
|
||||
CreateTotals(ro);
|
||||
|
||||
}
|
||||
|
||||
private void CreateEmployeeTotals(MitarbeiterauslastungRO ro)
|
||||
@@ -131,7 +127,6 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
}
|
||||
|
||||
|
||||
public virtual void CreateEmployeeDetails(MitarbeiterauslastungRO ro)
|
||||
{
|
||||
foreach (var empDetail in ro.EmployeeDetailList)
|
||||
@@ -158,7 +153,6 @@ namespace BeWo.Report.ReportObjects
|
||||
b.Customer.Person.LastName + ", " + b.Customer.Person.FirstName);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual bool CreateIst()
|
||||
@@ -171,15 +165,11 @@ namespace BeWo.Report.ReportObjects
|
||||
var span = new DateTimeSpan();
|
||||
span.StartDateTime = ro.ReportStartDate;
|
||||
span.EndDateTime = ro.ReportEndDate;
|
||||
|
||||
//supportconcepts by SupportConceptApprovalPeriodOid
|
||||
Dictionary<long, MitarbeiterauslastungRO.SupportConceptDetail> supportConceptByScapDict = new Dictionary<long, MitarbeiterauslastungRO.SupportConceptDetail>();
|
||||
|
||||
|
||||
foreach (var sc in empDetail.Customer.SupportConcepts)
|
||||
{
|
||||
|
||||
|
||||
if (sc.IsActive != ActivationTypeId.Deleted && sc.CostBearer2SupportConceptList != null)
|
||||
{
|
||||
foreach (CostBearer2SupportConcept c2s in sc.CostBearer2SupportConceptList)
|
||||
@@ -188,14 +178,9 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
//scDC.ApprovedHoursPerWeek -= stundenVerbraucht;
|
||||
//scDC.ApprovedHoursPerWeekWithRateFactor -= stundenVerbraucht;
|
||||
|
||||
if (!supportConceptByScapDict.ContainsKey(scap.Oid.Value))
|
||||
{
|
||||
|
||||
MitarbeiterauslastungRO.SupportConceptDetail scDc =
|
||||
GetOrCreateSupportConceptDetail(null, sc.Customer, scap, c2s,
|
||||
ro.ReportStartDate, ro.ReportEndDate, null, false);
|
||||
|
||||
MitarbeiterauslastungRO.SupportConceptDetail scDc = GetOrCreateSupportConceptDetail(null, sc.Customer, scap, c2s, ro.ReportStartDate, ro.ReportEndDate, null, false);
|
||||
if (scDc != null)
|
||||
{
|
||||
if (!CheckIfApprovedGreaterZero() || scDc.ApprovedHoursPerWeek > 0 || scDc.ApprovedHoursPerWeekWithRateFactor > 0)
|
||||
@@ -207,15 +192,12 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void CreateSupportConceptsForEmployee(MitarbeiterauslastungRO ro, MitarbeiterauslastungRO.EmployeeDetail empDetail)
|
||||
{
|
||||
var emp = empDetail.Employee;
|
||||
|
||||
DateTime start = ro.ReportStartDate;
|
||||
Contract contract = emp.GetValidContractForDate(ro.ReportStartDate);
|
||||
while (contract == null && start < ro.ReportEndDate)
|
||||
@@ -236,25 +218,20 @@ namespace BeWo.Report.ReportObjects
|
||||
if (emp.AbsenceTimes != null)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
||||
var count = 1;
|
||||
|
||||
foreach (var at in emp.AbsenceTimes)
|
||||
{
|
||||
if (at.AbsenceSpan != null)
|
||||
{
|
||||
bool cont = true;
|
||||
|
||||
if (at.Start != null && at.Start >= ro.ReportEndDate)
|
||||
{
|
||||
cont = false;
|
||||
}
|
||||
|
||||
if (cont && at.End != null && at.End < ro.ReportStartDate)
|
||||
{
|
||||
cont = false;
|
||||
}
|
||||
|
||||
if (cont)
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
@@ -264,7 +241,6 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
if (at.Start.HasValue)
|
||||
{
|
||||
|
||||
sb.Append(string.Format("{0:00}", at.Start.Value.Day));
|
||||
sb.Append(".");
|
||||
sb.Append(string.Format("{0:00}", at.Start.Value.Month));
|
||||
@@ -280,9 +256,7 @@ namespace BeWo.Report.ReportObjects
|
||||
sb.Append(".");
|
||||
sb.Append(at.End.Value.Year.ToString().Substring(2));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sb.Append(" ");
|
||||
sb.Append(at.AbsenceReason.Description);
|
||||
|
||||
@@ -297,7 +271,6 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
Dictionary<long, MitarbeiterauslastungRO.SupportConceptDetail> supportConceptByScapDict = new Dictionary<long, MitarbeiterauslastungRO.SupportConceptDetail>();
|
||||
|
||||
var anteile = CreateAuslastungAnteilig(emp);
|
||||
|
||||
foreach (var anteil in anteile)
|
||||
@@ -305,12 +278,9 @@ namespace BeWo.Report.ReportObjects
|
||||
var scap = anteil.SupportConceptApprovalPeriod;
|
||||
var cb2sc = anteil.CostBearer2SupportConcept;
|
||||
var sc = cb2sc.SupportConcept;
|
||||
|
||||
|
||||
if (sc.IsActive != ActivationTypeId.Deleted && !supportConceptByScapDict.ContainsKey(scap.Oid.Value))
|
||||
{
|
||||
MitarbeiterauslastungRO.SupportConceptDetail scDc = GetOrCreateSupportConceptDetail(emp, sc.Customer, scap, cb2sc, ro.ReportStartDate, ro.ReportEndDate, anteil, false);
|
||||
|
||||
if (scDc != null)
|
||||
{
|
||||
supportConceptByScapDict.Add(scap.Oid.Value, scDc);
|
||||
@@ -318,11 +288,7 @@ namespace BeWo.Report.ReportObjects
|
||||
empDetail.SupportConceptDetailList.Add(scDc);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (emp.Employee2CustomerList != null)
|
||||
{
|
||||
foreach (Employee2Customer e2c in emp.Employee2CustomerList)
|
||||
@@ -351,14 +317,10 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
if (!supportConceptByScapDict.ContainsKey(scap.Oid.Value))
|
||||
{
|
||||
|
||||
MitarbeiterauslastungRO.SupportConceptDetail scDc = GetOrCreateSupportConceptDetail(emp, e2c.Customer, scap, c2s, ro.ReportStartDate, ro.ReportEndDate, null, true);
|
||||
|
||||
if (scDc != null)
|
||||
{
|
||||
if (scDc.ApprovedHoursPerWeek > 0.00001m ||
|
||||
scDc.ApprovedHoursPerWeekWithRateFactor > 0.00001m ||
|
||||
!CheckIfApprovedGreaterZero())
|
||||
if (scDc.ApprovedHoursPerWeek > 0.00001m || scDc.ApprovedHoursPerWeekWithRateFactor > 0.00001m || !CheckIfApprovedGreaterZero())
|
||||
{
|
||||
empDetail.SupportConceptDetailList.Add(scDc);
|
||||
}
|
||||
@@ -389,11 +351,9 @@ namespace BeWo.Report.ReportObjects
|
||||
int test = 0;
|
||||
}
|
||||
//Prüfe ob vorher abgemeldet
|
||||
if (customer.TerminationDate.HasValue &&
|
||||
customer.TerminationDate.Value < realEnd)
|
||||
if (customer.TerminationDate.HasValue && customer.TerminationDate.Value < realEnd)
|
||||
{
|
||||
realEnd = customer.TerminationDate.Value;
|
||||
|
||||
}
|
||||
|
||||
if (scap.StartDate.HasValue && realEnd.HasValue)
|
||||
@@ -408,7 +368,6 @@ namespace BeWo.Report.ReportObjects
|
||||
if (inTimeRange)
|
||||
{
|
||||
String key = "";
|
||||
|
||||
if (emp != null)
|
||||
{
|
||||
key = String.Format("e{0}_{1}", emp.Oid.Value, scap.Oid.Value);
|
||||
@@ -426,9 +385,11 @@ namespace BeWo.Report.ReportObjects
|
||||
return betreuungDict[key];
|
||||
}
|
||||
var scDC = new MitarbeiterauslastungRO.SupportConceptDetail();
|
||||
|
||||
|
||||
scDC.Customer = customer;
|
||||
if (customer.Person.FirstName == "Martin")
|
||||
{
|
||||
int test = 0;
|
||||
}
|
||||
scDC.SupportConceptApprovalPeriod = scap;
|
||||
scDC.CostBearer2SupportConcept = DAOFactory.GenericDAO.Unproxy(cb2sc);
|
||||
|
||||
@@ -440,7 +401,6 @@ namespace BeWo.Report.ReportObjects
|
||||
scDC.FreiProMonat = scDC.FreiProWoche * 52 / 12;
|
||||
// eigentlich CreateSupportConceptStatisticsImpl ändern und FreiProMonat ergänzen
|
||||
}
|
||||
|
||||
// Prozentwert aus der Bewilligung einbeziehen
|
||||
if (anteil != null)
|
||||
{
|
||||
@@ -452,7 +412,6 @@ namespace BeWo.Report.ReportObjects
|
||||
// Minutenwert aus der Bewilligung einbeziehen
|
||||
else
|
||||
{
|
||||
|
||||
var minProWoche = stats.PeriodStatistics.Sum(s => s.MinutesApprovedPerWeek); // MinutesApprovedPerWeek ist 0, ich muss durch die einzelnen stats laufen uns selber hochrechnen
|
||||
if (minProWoche != 0)
|
||||
{
|
||||
@@ -461,19 +420,15 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DateTime end = ende;
|
||||
if (realEnd.HasValue && realEnd.Value < end)
|
||||
{
|
||||
end = realEnd.Value;
|
||||
}
|
||||
CalculateSoll(scDC, end);
|
||||
|
||||
if (ausHauptbetreuung)
|
||||
{
|
||||
var anteileAndererEmps = CreateAuslastungAnteilig(scap);
|
||||
|
||||
foreach (var ant in anteileAndererEmps)
|
||||
{
|
||||
var scDcAnteil =
|
||||
@@ -487,7 +442,6 @@ namespace BeWo.Report.ReportObjects
|
||||
scDC.ApprovedHoursPerMonthWithRateFactor -= scDcAnteil.ApprovedHoursPerMonthWithRateFactor;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -547,13 +501,10 @@ namespace BeWo.Report.ReportObjects
|
||||
public virtual IList<AuslastungBerechnungHelper> CreateAuslastungAnteilig(Employee emp)
|
||||
{
|
||||
var anteile = new List<AuslastungBerechnungHelper>();
|
||||
|
||||
var sp2eList = DAOFactory.SearchDAO.FindSupportConceptApprovalPeriod2Employees(emp);
|
||||
|
||||
foreach (var sp2e in sp2eList)
|
||||
{
|
||||
var helper = new AuslastungBerechnungHelper();
|
||||
|
||||
helper.SupportConceptApprovalPeriod = DAOFactory.GenericDAO.Unproxy(sp2e.SupportConceptApprovalPeriod);
|
||||
helper.CostBearer2SupportConcept = DAOFactory.GenericDAO.Unproxy(helper.SupportConceptApprovalPeriod.CostBearer2SupportConcept);
|
||||
helper.AnteilAnBetreuung = sp2e.Betreuungsschluessel;
|
||||
@@ -561,14 +512,12 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
anteile.Add(helper);
|
||||
}
|
||||
|
||||
return anteile;
|
||||
}
|
||||
|
||||
public virtual IList<AuslastungBerechnungHelper> CreateAuslastungAnteilig(SupportConceptApprovalPeriod scap)
|
||||
{
|
||||
var anteile = new List<AuslastungBerechnungHelper>();
|
||||
|
||||
var sp2eList = DAOFactory.SearchDAO.FindSupportConceptApprovalPeriod2Employees(scap);
|
||||
|
||||
foreach (var sp2e in sp2eList)
|
||||
@@ -593,8 +542,6 @@ namespace BeWo.Report.ReportObjects
|
||||
var span = new DateTimeSpan();
|
||||
span.StartDateTime = ro.ReportStartDate;
|
||||
span.EndDateTime = ro.ReportEndDate.AddTicks(-1);
|
||||
|
||||
|
||||
if (empDetail.Employee != null)
|
||||
{
|
||||
records = DAOFactory.SearchDAO.FindEmployeeServiceRecords(empDetail.Employee.Oid.Value, span, null, null);
|
||||
@@ -624,8 +571,6 @@ namespace BeWo.Report.ReportObjects
|
||||
AddServiceRecord(ro, scd, sr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (sr.GroupOid != null)
|
||||
{
|
||||
//groupBookingDict.Add(sr.GroupOid.Value, sr);
|
||||
@@ -697,8 +642,6 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
SupportConceptApprovalPeriod scap = GetSupportConceptApprovalPeriodForServiceRecord(sr);
|
||||
|
||||
|
||||
if (scap != null)
|
||||
{
|
||||
foreach (var scdi in empDetail.SupportConceptDetailList)
|
||||
@@ -708,7 +651,6 @@ namespace BeWo.Report.ReportObjects
|
||||
return scdi;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (sr.ServiceDescription != null &&
|
||||
@@ -771,18 +713,15 @@ namespace BeWo.Report.ReportObjects
|
||||
public virtual void AddServiceRecord(MitarbeiterauslastungRO ro, MitarbeiterauslastungRO.SupportConceptDetail scDC, ServiceRecord sr)
|
||||
{
|
||||
var minutes = GetBillableDurationInMinutes(sr);
|
||||
|
||||
if (sr.ServiceDescription != null &&
|
||||
sr.ServiceDescription.ServiceCategory != null &&
|
||||
sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null && sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
{
|
||||
scDC.DirectIst += minutes;
|
||||
|
||||
AddToIstForKw(minutes, sr.Start.Value, ro.ReportStartDate, ro.ReportEndDate, scDC);
|
||||
}
|
||||
else
|
||||
{
|
||||
scDC.MittelbarIst += minutes;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void AddToIstForKw(decimal minutes, DateTime datum, DateTime reportStart, DateTime reportEnd, MitarbeiterauslastungRO.SupportConceptDetail scDC)
|
||||
@@ -855,31 +794,30 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
var minutes = GetBillableDurationInMinutes(sr);
|
||||
|
||||
if (sr.ServiceDescription != null &&
|
||||
sr.ServiceDescription.ServiceCategory != null &&
|
||||
sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null && sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
{
|
||||
scDC.DirectIst += minutes;
|
||||
}
|
||||
else
|
||||
{
|
||||
scDC.MittelbarIst += minutes;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal GetBillableDurationInMinutes(ServiceRecord record)
|
||||
{
|
||||
decimal rdMinutes = record.RoundedDuration;
|
||||
|
||||
var prozent = record.ServiceDescription.ServiceCategory.ProzentAbrechnung;
|
||||
|
||||
if (record.ServiceDescription.ProzentAbrechnung.HasValue)
|
||||
{
|
||||
prozent = record.ServiceDescription.ProzentAbrechnung.Value;
|
||||
}
|
||||
|
||||
rdMinutes *= prozent / 100;
|
||||
|
||||
if (record.GroupEmployeeCount.HasValue)
|
||||
rdMinutes /= record.GroupEmployeeCount.Value;
|
||||
|
||||
if (record.GroupEmployeeCount.HasValue)
|
||||
{
|
||||
rdMinutes /= record.GroupEmployeeCount.Value;
|
||||
}
|
||||
return rdMinutes;
|
||||
}
|
||||
|
||||
|
||||
@@ -1936,16 +1936,23 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
decimal wth = 0;
|
||||
int apw = ANZ_WOCHENTAGE;
|
||||
|
||||
if (c.WeeklyTotalHours.HasValue)
|
||||
{
|
||||
wth = c.WeeklyTotalHours.Value;
|
||||
}
|
||||
if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
|
||||
{
|
||||
apw = c.WeeklyDays.Value;
|
||||
}
|
||||
|
||||
if (c.WeeklyTotalHours.HasValue)
|
||||
{
|
||||
wth = c.WeeklyTotalHours.Value;
|
||||
}
|
||||
else if (c.MonthlyTotalHours.HasValue)
|
||||
{
|
||||
|
||||
sollDiesenTag = c.MonthlyTotalHours.Value / ed.ArbeitstageImBerichtszeitraum;
|
||||
wth = sollDiesenTag * apw;
|
||||
}
|
||||
|
||||
|
||||
sollDiesenTag = wth / apw;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user