Merge alte Version
This commit is contained in:
@@ -327,9 +327,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
{
|
||||
var settings = AppSettings.CreateSettings();
|
||||
|
||||
config.ShouldAnalyzeArchivedEmployees = true; //###Todo NACH Update wieder raus
|
||||
|
||||
var employees = config.ShouldAnalyzeArchivedEmployees ? DAOFactory.GenericDAO.GetAllActiveAndArchived<Employee>() : DAOFactory.GenericDAO.GetAllActive<Employee>();
|
||||
var employees = config.ShouldAnalyzeArchivedEmployees ? DAOFactory.GenericDAO.GetAllActiveAndArchived<Employee>() : DAOFactory.GenericDAO.GetAllActive<Employee>();
|
||||
|
||||
// (Archiviert) hinter dem Vornamen archivierter Mitarbeiter anzeigen?
|
||||
//if(config.ShouldAnalyzeArchivedEmployees)
|
||||
@@ -718,200 +716,9 @@ namespace BeWo.Service.ServiceImplementations
|
||||
{
|
||||
try
|
||||
{
|
||||
DateTime maxDate = appointedDate.HasValue
|
||||
? appointedDate.Value.AddDays(1)
|
||||
: DateTime.MaxValue;
|
||||
var ac = PluginLoader.FindClass<SupportConceptAnalysisCreator>();
|
||||
|
||||
var lResult = new List<SupportConceptOverviewDC>();
|
||||
|
||||
foreach (var iCb2Sc in DAOFactory.GenericDAO.GetAllActive<CostBearer2SupportConcept>())
|
||||
{
|
||||
if (iCb2Sc.Oid.HasValue && iCb2Sc.Oid.Value.Equals(66))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
var calc = PluginLoader.FindClass<Calculations>(iCb2Sc.CostBearer.ID) ?? Calculations.GetInstance(iCb2Sc.CostBearer.ID);
|
||||
var iDC = new SupportConceptOverviewDC();
|
||||
|
||||
if (currentEmployeeOid != null)
|
||||
{
|
||||
foreach (var e2c in iCb2Sc.SupportConcept.Customer.Employee2CustomerList)
|
||||
{
|
||||
if (!iDC.IsRelatedToEmployee)
|
||||
{
|
||||
if (currentEmployeeOid.Value == e2c.EmployeeOid.Value)
|
||||
{
|
||||
iDC.IsRelatedToEmployee = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iDC.ActivationType = iCb2Sc.SupportConcept.IsActive;
|
||||
if (iDC.ActivationType == ActivationTypeId.Active && iCb2Sc.SupportConcept.Customer.IsActive != ActivationTypeId.Active)
|
||||
{
|
||||
iDC.ActivationType = iCb2Sc.SupportConcept.Customer.IsActive;
|
||||
}
|
||||
|
||||
bool cont = (showOnlyArchivedSCs && iDC.ActivationType == ActivationTypeId.Archived) || (!showOnlyArchivedSCs && iDC.ActivationType == ActivationTypeId.Active);
|
||||
if (cont && (!showOnlyRelatedSCs || iDC.IsRelatedToEmployee))
|
||||
{
|
||||
iDC.CalculationDate = DateTime.Now.Date;
|
||||
iDC.RequestedStartDate = iCb2Sc.RequestedStartDate;
|
||||
iDC.RequestedEndDate = iCb2Sc.RequestedEndDate;
|
||||
iDC.SupportConceptOid = iCb2Sc.SupportConcept.Oid.Value;
|
||||
iDC.CostBearer2SupportConceptOid = iCb2Sc.Oid.Value;
|
||||
iDC.CostBearer = iCb2Sc.CostBearer.Organisation != null
|
||||
? iCb2Sc.CostBearer.Organisation.Name
|
||||
: string.Empty;
|
||||
iDC.CostBearerId = iCb2Sc.CostBearer.ID;
|
||||
iDC.CustomerOid = iCb2Sc.SupportConcept.Customer.Oid.Value;
|
||||
iDC.CustomerFirstName = iCb2Sc.SupportConcept.Customer.Person.FirstName;
|
||||
iDC.CustomerLastName = iCb2Sc.SupportConcept.Customer.Person.LastName;
|
||||
|
||||
var costRates = iCb2Sc.CostBearer.CostRatePeriods.MapToNewDCs();
|
||||
|
||||
iDC.ServiceUnit = costRates.GetCurrentlyValidRate(CostRatePeriodType.MinutesPerServiceUnit);
|
||||
if (iDC.ServiceUnit == null)
|
||||
{
|
||||
iDC.ServiceUnit = new CostRatePeriodDC();
|
||||
iDC.ServiceUnit.CostRateType = CostRatePeriodType.MinutesPerServiceUnit;
|
||||
iDC.ServiceUnit.UnitName = "FLS";
|
||||
iDC.ServiceUnit.CostRateValue = 60;
|
||||
}
|
||||
iDC.CurrentHourlyRate = costRates.GetCurrentlyValidRateValue(CostRatePeriodType.HourlyRate) ?? 0m;
|
||||
iDC.CurrentRateFactor = costRates.GetCurrentlyValidRateValue(CostRatePeriodType.RateFactor) ?? 0m;
|
||||
|
||||
var relDC = iCb2Sc.MapToNewDC();
|
||||
|
||||
var recordDCs = (from sr in iCb2Sc.ServiceRecords where sr.Start.Value < maxDate select MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(sr)).ToList();
|
||||
|
||||
|
||||
iDC.FLSRecordedTillNow = calc.GetBillableDurationInMinutes(recordDCs) / 60m;
|
||||
|
||||
var notBillableAbsenceTimes = calc.GetHoursNotBillableDueToAbsenceTimes(relDC, recordDCs,
|
||||
iCb2Sc.SupportConcept.Customer.GetAbsencesTimesNotBillableWholeWeeks(), false,
|
||||
false);
|
||||
var notBillableMoreThanApproved = calc.GetHoursNotBillableDueToMoreThanApproved(relDC, recordDCs,
|
||||
false, true);
|
||||
iDC.FLSBilledTillNow = iDC.FLSRecordedTillNow;
|
||||
//- notBillableAbsenceTimes
|
||||
//- notBillableMoreThanApproved;
|
||||
|
||||
|
||||
|
||||
decimal lDurationInWeeksTillNow = calc.GetDurationInWeeksTillNow(relDC, appointedDate) ?? 0;
|
||||
decimal lDurationInWeeks = calc.GetDurationInWeeks(relDC) ?? 0;
|
||||
|
||||
if (iCb2Sc.Status == CostBearer2SupportConceptStatus.Approved)
|
||||
{
|
||||
iDC.IsApproved = true;
|
||||
|
||||
if (iCb2Sc.ApprovedStartDate != null && iCb2Sc.ApprovedEndDate != null)
|
||||
{
|
||||
iDC.ApprovedStartDate = iCb2Sc.ApprovedStartDate.Value;
|
||||
iDC.ApprovedEndDate = iCb2Sc.ApprovedEndDate.Value;
|
||||
//lDurationInWeeks = Convert.ToDecimal((iDC.ApprovedEndDate.Value - iDC.ApprovedStartDate.Value).Days + 1) / 7;
|
||||
|
||||
//lCalcDate = lCalcDate > iCb2Sc.ApprovedEndDate
|
||||
// ? iCb2Sc.ApprovedEndDate.Value.Date.AddDays(1)
|
||||
// : lCalcDate;
|
||||
//lDurationInWeeksTillNow = Convert.ToDecimal((lCalcDate - iCb2Sc.ApprovedStartDate.Value).Days) / 7m;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
iDC.IsApproved = false;
|
||||
|
||||
//if (iCb2Sc.RequestedStartDate != null && iCb2Sc.RequestedEndDate != null)
|
||||
//{
|
||||
//lDurationInWeeks = Convert.ToDecimal((iCb2Sc.RequestedEndDate.Value - iCb2Sc.RequestedStartDate.Value).Days + 1) / 7;
|
||||
|
||||
//lCalcDate = lCalcDate > iCb2Sc.RequestedEndDate
|
||||
// ? iCb2Sc.RequestedEndDate.Value.Date
|
||||
// : lCalcDate;
|
||||
//lDurationInWeeksTillNow = Convert.ToDecimal((lCalcDate - iCb2Sc.RequestedStartDate.Value).Days) / 7m;
|
||||
//}
|
||||
}
|
||||
|
||||
iDC.FLSApprovedPerWeek = calc.GetApprovedHoursPerWeekAverage(relDC, true) ?? 0m;
|
||||
|
||||
decimal? flsTotal = calc.GetApprovedHoursTotal(relDC, true);
|
||||
|
||||
iDC.FLSApprovedSum = flsTotal ?? 0m;
|
||||
|
||||
var approvedTillNow = calc.GetApprovedHoursTillNow(relDC, appointedDate);
|
||||
iDC.FLSApprovedTillNow = approvedTillNow ?? 0;
|
||||
|
||||
//if (flsTotal.HasValue && lDurationInWeeks != 0)
|
||||
//{
|
||||
// iDC.FLSApprovedTillNow = flsTotal.Value * ((lDurationInWeeksTillNow + (1m / 7m)) / lDurationInWeeks);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// iDC.FLSApprovedTillNow = iDC.FLSApprovedPerWeek * (lDurationInWeeksTillNow + (1m / 7m));
|
||||
//}
|
||||
|
||||
if (iDC.FLSApprovedSum <= 0)
|
||||
{
|
||||
iDC.FLSRecordedTillNowInPercent = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
iDC.FLSRecordedTillNowInPercent = iDC.FLSRecordedTillNow / iDC.FLSApprovedSum * 100;
|
||||
}
|
||||
|
||||
iDC.FLSDifferenceApprovedRecordedTillNow = iDC.FLSRecordedTillNow - iDC.FLSApprovedTillNow;
|
||||
|
||||
if (iDC.FLSApprovedTillNow <= 0)
|
||||
{
|
||||
iDC.FLSDifferenceApprovedRecordedTillNowInPercent = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
iDC.FLSDifferenceApprovedRecordedTillNowInPercent = iDC.FLSRecordedTillNow / iDC.FLSApprovedTillNow * 100;
|
||||
}
|
||||
|
||||
iDC.FLSOpen = iDC.FLSApprovedSum - iDC.FLSRecordedTillNow;
|
||||
iDC.OpenWeeks = lDurationInWeeks - lDurationInWeeksTillNow;
|
||||
|
||||
//TODO kostenträger spezifisch!? in Calculations verlagern!
|
||||
iDC.OpenMonths = iDC.OpenWeeks / 4.34m;
|
||||
|
||||
if (iDC.OpenWeeks <= 0)
|
||||
{
|
||||
iDC.FLSOpenPerWeek = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
iDC.FLSOpenPerWeek = iDC.FLSOpen / iDC.OpenWeeks;
|
||||
}
|
||||
|
||||
iDC.WeeksTotal = lDurationInWeeks;
|
||||
if (iDC.WeeksTotal != 0)
|
||||
{
|
||||
iDC.DurationPercentage = (lDurationInWeeksTillNow / iDC.WeeksTotal) * 100;
|
||||
}
|
||||
|
||||
lResult.Add(iDC);
|
||||
|
||||
iDC.BEApprovedPerWeek = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedPerWeek);
|
||||
iDC.BEApprovedSum = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedSum);
|
||||
iDC.BEApprovedTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedTillNow);
|
||||
iDC.BEBilledTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSBilledTillNow);
|
||||
iDC.BEDifferenceApprovedRecordedTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSDifferenceApprovedRecordedTillNow);
|
||||
iDC.BEDifferenceApprovedRecordedTillNowInPercent = iDC.ServiceUnit.GetHoursInBE(iDC.FLSDifferenceApprovedRecordedTillNowInPercent);
|
||||
iDC.BEOpen = iDC.ServiceUnit.GetHoursInBE(iDC.FLSOpen);
|
||||
iDC.BEOpenPerWeek = iDC.ServiceUnit.GetHoursInBE(iDC.FLSOpenPerWeek);
|
||||
if (iDC.BEOpenPerWeek > iDC.BEOpen)
|
||||
iDC.BEOpenPerWeek = iDC.BEOpen;
|
||||
iDC.BERecordedTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSRecordedTillNow);
|
||||
iDC.BERecordedTillNowInPercent = iDC.ServiceUnit.GetHoursInBE(iDC.FLSRecordedTillNowInPercent);
|
||||
}
|
||||
}
|
||||
|
||||
return lResult;
|
||||
return ac.GetSupportConceptAnalysis(currentEmployeeOid, showOnlyRelatedSCs, showOnlyArchivedSCs, appointedDate);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -974,6 +781,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
dc.Notice = at.Notice;
|
||||
dc.BookingDate = at.BookingDate;
|
||||
dc.ValidityDate = at.ValidityDate;
|
||||
|
||||
return dc;
|
||||
}
|
||||
@@ -1445,8 +1253,12 @@ namespace BeWo.Service.ServiceImplementations
|
||||
srDC.End = sr.End;
|
||||
srDC.DistanceInMeter = sr.DistanceInMeter;
|
||||
srDC.Notice = sr.Notice;
|
||||
|
||||
if (useRoundedDuration)
|
||||
srDC.Notice2 = sr.Notice2;
|
||||
srDC.Notice3 = sr.Notice3;
|
||||
srDC.Notice4 = sr.Notice4;
|
||||
srDC.Notice5 = sr.Notice5;
|
||||
|
||||
if (useRoundedDuration)
|
||||
{
|
||||
srDC.RoundedDuration = sr.RoundedDuration;
|
||||
}
|
||||
@@ -1750,6 +1562,25 @@ namespace BeWo.Service.ServiceImplementations
|
||||
return records.Where(sr => IsServiceRecordActive(sr)).ToList();
|
||||
}
|
||||
|
||||
public static IList<ServiceRecord> FilterGroupServiceRecords(IList<ServiceRecord> records)
|
||||
{
|
||||
Dictionary<long, bool> groupBookingDict = new Dictionary<long, bool>();
|
||||
IList<ServiceRecord> groupFilteredRecords = new List<ServiceRecord>();
|
||||
foreach (var item in records)
|
||||
{
|
||||
|
||||
if (!item.GroupOid.HasValue || !groupBookingDict.ContainsKey(item.GroupOid.Value))
|
||||
{
|
||||
groupFilteredRecords.Add(item);
|
||||
if (item.GroupOid.HasValue)
|
||||
{
|
||||
groupBookingDict.Add(item.GroupOid.Value, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return groupFilteredRecords;
|
||||
}
|
||||
|
||||
public AccountingReportDC CreateAccountingReport(DateTime start, DateTime end)
|
||||
{
|
||||
var report = new AccountingReportDC
|
||||
|
||||
Reference in New Issue
Block a user