|
|
@@ -799,45 +799,55 @@ public class Module: " + nameof(IAssignmentCostingScript) + @"
|
|
|
|
|
|
if (employeeID == Guid.Empty) return;
|
|
|
|
|
|
- var assignments = store.Provider.Query(
|
|
|
- Filter<Assignment>.Where(x => x.Date).IsEqualTo(date)
|
|
|
- .And(x => x.EmployeeLink.ID).IsEqualTo(employeeID),
|
|
|
- Columns.Required<Assignment>()
|
|
|
- .Add(x => x.ID)
|
|
|
- .Add(x => x.Cost)
|
|
|
- .Add(x => x.Actual.Start)
|
|
|
- .Add(x => x.Actual.Finish)
|
|
|
- .Add(x => x.Actual.Duration)
|
|
|
- .Add(x => x.Booked.Start)
|
|
|
- .Add(x => x.Booked.Finish)
|
|
|
- .Add(x => x.Booked.Duration))
|
|
|
- .ToArray<Assignment>();
|
|
|
- var timesheets = store.Provider.Query(
|
|
|
- Filter<TimeSheet>.Where(x => x.Date).IsEqualTo(date)
|
|
|
- .And(x => x.EmployeeLink.ID).IsEqualTo(employeeID),
|
|
|
- Columns.None<TimeSheet>()
|
|
|
- .Add(x => x.Approved)
|
|
|
- .Add(x => x.Start)
|
|
|
- .Add(x => x.Finish)
|
|
|
- .Add(x => x.ApprovedStart)
|
|
|
- .Add(x => x.ApprovedFinish))
|
|
|
- .ToArray<TimeSheet>();
|
|
|
- if (timesheets.Length == 0) return;
|
|
|
-
|
|
|
- var employee = store.Provider.Query(
|
|
|
- Filter<Employee>.Where(x => x.ID).IsEqualTo(employeeID),
|
|
|
- Columns.None<Employee>()
|
|
|
- .Add(x => x.RosterStart)
|
|
|
- .Add(x => x.HourlyRate))
|
|
|
- .ToObjects<Employee>().FirstOrDefault();
|
|
|
- if (employee is null) return;
|
|
|
-
|
|
|
- var rosterItems = store.Provider.Query(
|
|
|
- Filter<EmployeeRosterItem>.Where(x => x.Employee.ID).IsEqualTo(employeeID),
|
|
|
- Columns.None<EmployeeRosterItem>()
|
|
|
- .Add(x => x.Overtime.ID),
|
|
|
- new SortOrder<EmployeeRosterItem>(x => x.Day))
|
|
|
- .ToArray<EmployeeRosterItem>();
|
|
|
+ var assignmentTask = Task.Run(() =>
|
|
|
+ store.Provider.Query(
|
|
|
+ Filter<Assignment>.Where(x => x.Date).IsEqualTo(date)
|
|
|
+ .And(x => x.EmployeeLink.ID).IsEqualTo(employeeID),
|
|
|
+ Columns.Required<Assignment>()
|
|
|
+ .Add(x => x.ID)
|
|
|
+ .Add(x => x.Cost)
|
|
|
+ .Add(x => x.Actual.Start)
|
|
|
+ .Add(x => x.Actual.Finish)
|
|
|
+ .Add(x => x.Actual.Duration)
|
|
|
+ .Add(x => x.Booked.Start)
|
|
|
+ .Add(x => x.Booked.Finish)
|
|
|
+ .Add(x => x.Booked.Duration))
|
|
|
+ .ToArray<Assignment>());
|
|
|
+ var timesheetTask = Task.Run(() =>
|
|
|
+ store.Provider.Query(
|
|
|
+ Filter<TimeSheet>.Where(x => x.Date).IsEqualTo(date)
|
|
|
+ .And(x => x.EmployeeLink.ID).IsEqualTo(employeeID),
|
|
|
+ Columns.None<TimeSheet>()
|
|
|
+ .Add(x => x.Approved)
|
|
|
+ .Add(x => x.Start)
|
|
|
+ .Add(x => x.Finish)
|
|
|
+ .Add(x => x.ApprovedStart)
|
|
|
+ .Add(x => x.ApprovedFinish))
|
|
|
+ .ToArray<TimeSheet>());
|
|
|
+
|
|
|
+ var employeeTask = Task.Run(() =>
|
|
|
+ store.Provider.Query(
|
|
|
+ Filter<Employee>.Where(x => x.ID).IsEqualTo(employeeID),
|
|
|
+ Columns.None<Employee>()
|
|
|
+ .Add(x => x.RosterStart)
|
|
|
+ .Add(x => x.HourlyRate))
|
|
|
+ .ToObjects<Employee>().FirstOrDefault());
|
|
|
+
|
|
|
+ var rosterItemsTask = Task.Run(() =>
|
|
|
+ store.Provider.Query(
|
|
|
+ Filter<EmployeeRosterItem>.Where(x => x.Employee.ID).IsEqualTo(employeeID),
|
|
|
+ Columns.None<EmployeeRosterItem>()
|
|
|
+ .Add(x => x.Overtime.ID),
|
|
|
+ new SortOrder<EmployeeRosterItem>(x => x.Day))
|
|
|
+ .ToArray<EmployeeRosterItem>());
|
|
|
+
|
|
|
+ var timesheets = timesheetTask.Result;
|
|
|
+ var employee = employeeTask.Result;
|
|
|
+
|
|
|
+ if (timesheets.Length == 0 || employee is null) return;
|
|
|
+
|
|
|
+ var assignments = assignmentTask.Result;
|
|
|
+ var rosterItems = rosterItemsTask.Result;
|
|
|
|
|
|
var overtimeID = RosterUtils.GetRoster(rosterItems, employee.RosterStart, date)?.Overtime.ID ?? Guid.Empty;
|
|
|
if(overtimeID == Guid.Empty) return;
|
|
|
@@ -896,7 +906,7 @@ public class Module: " + nameof(IAssignmentCostingScript) + @"
|
|
|
foreach(var assignment in assignments)
|
|
|
{
|
|
|
assignment.Cost = totalHours.GetValueOrDefault(assignment) * employee.HourlyRate;
|
|
|
- assignment.AccountingHours = totalAccountingHours.GetValueOrDefault(assignment);
|
|
|
+ assignment.CostedHours = totalAccountingHours.GetValueOrDefault(assignment);
|
|
|
}
|
|
|
ScriptAfterOvertime(script, timeSheet, blocks, overtime, assignments);
|
|
|
|