KilometerauswertungsRO und EmployeeKilometerauswertungsRO - Ergänzung um KilometerPauschale
This commit is contained in:
@@ -3,8 +3,11 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
@@ -43,17 +46,14 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
var start = StartDate;
|
||||
var end = EndDate.AddDays(1).AddTicks(-1);
|
||||
|
||||
var timeSpan = new DateTimeSpan();
|
||||
timeSpan.StartDateTime = start;
|
||||
timeSpan.EndDateTime = end;
|
||||
|
||||
var rawData = DAOFactory.SearchDAO.FindListOfEmployeeServiceRecordsForKilometerauswertung(AllEmployees.Select(employee => employee.EmployeeOid).ToList(), LeistungenOids, timeSpan);
|
||||
|
||||
foreach(var employeeOid2ServiceRecords in rawData)
|
||||
{
|
||||
var employee = AllEmployees.FirstOrDefault(e => e.EmployeeOid == employeeOid2ServiceRecords.Key);
|
||||
|
||||
if(employee != null)
|
||||
{
|
||||
var employee2KilometerauswertungsEntry = new Employee2EmployeeKilometerauswertungsEntry(employee, employeeOid2ServiceRecords.Value.OrderBy(serviceRecord => serviceRecord.Start));
|
||||
@@ -73,32 +73,53 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double TotalDistanceInMeters { get; set; }
|
||||
|
||||
public double TotalKilometerPauschale { get; set; }
|
||||
|
||||
public String TotalCustom1 { get; set; }
|
||||
|
||||
public Employee2EmployeeKilometerauswertungsEntry(CompactEmployeeDC employee, IEnumerable<ServiceRecord> serviceRecords)
|
||||
{
|
||||
Employee = employee;
|
||||
|
||||
Entries = new List<EmployeeKilometerauswertungsEntry>();
|
||||
TotalDistanceInMeters = 0;
|
||||
TotalKilometerPauschale = 0;
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
foreach(var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.Start.HasValue))
|
||||
foreach (var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.Start.HasValue))
|
||||
{
|
||||
var distance = (serviceRecord.GroupPersonCount == null) ? (double)serviceRecord.DistanceInMeter.Value : (double)serviceRecord.DistanceInMeter.Value / (double)serviceRecord.GroupPersonCount;
|
||||
var distanceRounded = Math.Round(distance, 2);
|
||||
|
||||
TotalDistanceInMeters += distanceRounded;
|
||||
|
||||
var pauschVar = GetPreis(preise, "Kilometerpauschale", serviceRecord.Start.Value);
|
||||
|
||||
var e = new EmployeeKilometerauswertungsEntry(serviceRecord.Start, serviceRecord.End, distanceRounded, serviceRecord.Customer?.Person?.LastNameFirstName ?? string.Empty, serviceRecord.Notice, serviceRecord);
|
||||
e.KilometerPauschale = Math.Round(distanceRounded * (double)pauschVar, 2, MidpointRounding.AwayFromZero);
|
||||
e.Notice = serviceRecord.Notice;
|
||||
e.Notice2 = serviceRecord.Notice2;
|
||||
e.Notice3 = serviceRecord.Notice3;
|
||||
e.Notice4 = serviceRecord.Notice4;
|
||||
e.Notice5 = serviceRecord.Notice5;
|
||||
TotalKilometerPauschale += e.KilometerPauschale;
|
||||
|
||||
Entries.Add(e);
|
||||
}
|
||||
|
||||
Entries = Entries.OrderBy(o => o.Datum).ToList();
|
||||
}
|
||||
|
||||
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
||||
{
|
||||
var pausch = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
||||
if (pausch != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pausch.CostRatePeriods);
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
return cr.CostRateValue.Value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,11 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
@@ -23,9 +26,11 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double TotalDistanceInMeters { get; set; }
|
||||
|
||||
public List<long> LeistungenOids { get; set; }
|
||||
public double TotalKilometerPauschale { get; set; }
|
||||
|
||||
|
||||
public String TotalCustom1 { get; set; }
|
||||
|
||||
public List<long> LeistungenOids { get; set; }
|
||||
|
||||
public List<EmployeeKilometerauswertungsEntry> Entries { get; set; }
|
||||
|
||||
@@ -56,22 +61,26 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
Entries = new List<EmployeeKilometerauswertungsEntry>();
|
||||
TotalDistanceInMeters = 0;
|
||||
TotalKilometerPauschale = 0;
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
foreach(var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.DistanceInMeter > 0 && serviceRecord.Start.HasValue))
|
||||
foreach (var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.DistanceInMeter > 0 && serviceRecord.Start.HasValue))
|
||||
{
|
||||
if (LeistungenOids == null || LeistungenOids.Count == 0 || LeistungenOids.Contains(serviceRecord.ServiceDescription.Oid.Value))
|
||||
{
|
||||
var distance = (serviceRecord.GroupPersonCount == null) ? (double)serviceRecord.DistanceInMeter.Value : (double)serviceRecord.DistanceInMeter.Value / (double)serviceRecord.GroupPersonCount;
|
||||
var distanceRounded = Math.Round(distance, 2);
|
||||
|
||||
TotalDistanceInMeters += distanceRounded;
|
||||
var pauschVar = GetPreis(preise, "Kilometerpauschale", serviceRecord.Start.Value);
|
||||
|
||||
var e = new EmployeeKilometerauswertungsEntry(serviceRecord.Start, serviceRecord.End, distanceRounded, serviceRecord.Customer?.Person?.LastNameFirstName ?? string.Empty, serviceRecord.Notice, serviceRecord);
|
||||
e.KilometerPauschale = Math.Round(distanceRounded * (double)pauschVar, 2, MidpointRounding.AwayFromZero);
|
||||
e.Notice = serviceRecord.Notice;
|
||||
e.Notice2 = serviceRecord.Notice2;
|
||||
e.Notice3 = serviceRecord.Notice3;
|
||||
e.Notice4 = serviceRecord.Notice4;
|
||||
e.Notice5 = serviceRecord.Notice5;
|
||||
TotalKilometerPauschale += e.KilometerPauschale;
|
||||
|
||||
Entries.Add(e);
|
||||
}
|
||||
@@ -79,6 +88,21 @@ namespace BeWo.Report.ReportObjects
|
||||
Entries = Entries.OrderBy(o => o.Datum).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
||||
{
|
||||
var pausch = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
||||
if (pausch != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pausch.CostRatePeriods);
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
return cr.CostRateValue.Value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public class EmployeeKilometerauswertungsEntry
|
||||
@@ -110,6 +134,10 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double DistanceInMeters { get; set; }
|
||||
|
||||
public double KilometerPauschale { get; set; }
|
||||
|
||||
public String Custom1 { get; set; }
|
||||
|
||||
public string CustomerName { get; set; }
|
||||
|
||||
public string Dokumentation { get; set; }
|
||||
@@ -129,16 +157,13 @@ namespace BeWo.Report.ReportObjects
|
||||
public EmployeeKilometerauswertungsEntry(DateTime? start, DateTime? end, double distanceInMeters, string customerName, string doku, ServiceRecord sr)
|
||||
{
|
||||
ServiceRecord = sr;
|
||||
|
||||
if (start.HasValue)
|
||||
{
|
||||
Datum = start;
|
||||
|
||||
if (start.Value.Second == 0)
|
||||
{
|
||||
StartTime = start;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (end.HasValue && end.Value.Second == 0)
|
||||
|
||||
@@ -3,8 +3,11 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
@@ -74,30 +77,53 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double TotalDistanceInMeters { get; set; }
|
||||
|
||||
public double TotalKilometerPauschale { get; set; }
|
||||
|
||||
public String TotalCustom1 { get; set; }
|
||||
|
||||
public Customer2KilometerauswertungsEntry(CompactCustomerDC customer, IEnumerable<ServiceRecord> serviceRecords)
|
||||
{
|
||||
Customer = customer;
|
||||
|
||||
Entries = new List<KilometerauswertungsEntry>();
|
||||
TotalDistanceInMeters = 0;
|
||||
TotalKilometerPauschale = 0;
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
foreach(var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.Start.HasValue))
|
||||
foreach (var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.Start.HasValue))
|
||||
{
|
||||
var distance = (serviceRecord.GroupPersonCount == null) ? (double)serviceRecord.DistanceInMeter.Value : (double)serviceRecord.DistanceInMeter.Value / (double)serviceRecord.GroupPersonCount;
|
||||
var distanceRounded = Math.Round(distance, 2);
|
||||
TotalDistanceInMeters += distanceRounded;
|
||||
var pauschVar = GetPreis(preise, "Kilometerpauschale", serviceRecord.Start.Value);
|
||||
|
||||
var e = new KilometerauswertungsEntry(serviceRecord.Start, serviceRecord.End, distanceRounded, serviceRecord.Employee.Person.LastNameFirstName);
|
||||
e.KilometerPauschale = Math.Round(distanceRounded * (double)pauschVar, 2, MidpointRounding.AwayFromZero);
|
||||
e.Notice = serviceRecord.Notice;
|
||||
e.Notice2 = serviceRecord.Notice2;
|
||||
e.Notice3 = serviceRecord.Notice3;
|
||||
e.Notice4 = serviceRecord.Notice4;
|
||||
e.Notice5 = serviceRecord.Notice5;
|
||||
TotalKilometerPauschale += e.KilometerPauschale;
|
||||
|
||||
Entries.Add(e);
|
||||
}
|
||||
|
||||
Entries = Entries.OrderBy(o => o.Datum).ToList();
|
||||
}
|
||||
|
||||
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
||||
{
|
||||
var pausch = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
||||
if (pausch != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pausch.CostRatePeriods);
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
return cr.CostRateValue.Value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
@@ -22,6 +26,10 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double TotalDistanceInMeters { get; set; }
|
||||
|
||||
public double TotalKilometerPauschale { get; set; }
|
||||
|
||||
public String TotalCustom1 { get; set; }
|
||||
|
||||
public List<long> LeistungenOids { get; set; }
|
||||
|
||||
public List<KilometerauswertungsEntry> Entries { get; set; }
|
||||
@@ -53,6 +61,8 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
Entries = new List<KilometerauswertungsEntry>();
|
||||
TotalDistanceInMeters = 0;
|
||||
TotalKilometerPauschale = 0;
|
||||
var preise = DAOFactory.GenericDAO.GetAllActive<Preis>();
|
||||
|
||||
foreach (var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.DistanceInMeter > 0 && serviceRecord.Start.HasValue))
|
||||
{
|
||||
@@ -61,13 +71,16 @@ namespace BeWo.Report.ReportObjects
|
||||
var distance = (serviceRecord.GroupPersonCount == null) ? (double)serviceRecord.DistanceInMeter.Value : (double)serviceRecord.DistanceInMeter.Value / (double)serviceRecord.GroupPersonCount;
|
||||
var distanceRounded = Math.Round(distance, 2);
|
||||
TotalDistanceInMeters += distanceRounded;
|
||||
var pauschVar = GetPreis(preise, "Kilometerpauschale", serviceRecord.Start.Value);
|
||||
|
||||
var e = new KilometerauswertungsEntry(serviceRecord.Start, serviceRecord.End, distanceRounded, serviceRecord.Employee.Person.LastNameFirstName);
|
||||
e.KilometerPauschale = Math.Round(distanceRounded * (double)pauschVar, 2, MidpointRounding.AwayFromZero);
|
||||
e.Notice = serviceRecord.Notice;
|
||||
e.Notice2 = serviceRecord.Notice2;
|
||||
e.Notice3 = serviceRecord.Notice3;
|
||||
e.Notice4 = serviceRecord.Notice4;
|
||||
e.Notice5 = serviceRecord.Notice5;
|
||||
TotalKilometerPauschale += e.KilometerPauschale;
|
||||
|
||||
Entries.Add(e);
|
||||
}
|
||||
@@ -75,6 +88,20 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
Entries = Entries.OrderBy(o => o.Datum).ToList();
|
||||
}
|
||||
private static decimal GetPreis(IList<Preis> allePreise, String name, DateTime datum)
|
||||
{
|
||||
var pausch = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault();
|
||||
if (pausch != null)
|
||||
{
|
||||
var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pausch.CostRatePeriods);
|
||||
var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum);
|
||||
if (cr != null && cr.CostRateValue.HasValue)
|
||||
{
|
||||
return cr.CostRateValue.Value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public class KilometerauswertungsEntry
|
||||
@@ -117,6 +144,10 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public double DistanceInMeters { get; }
|
||||
|
||||
public double KilometerPauschale { get; set; }
|
||||
|
||||
public String Custom1 { get; set; }
|
||||
|
||||
public string EmployeeName { get; }
|
||||
|
||||
public KilometerauswertungsEntry(DateTime? start, DateTime? end, double distanceInMeters, string employeeName)
|
||||
|
||||
Reference in New Issue
Block a user