public virtual decimal GetEmployeeRegularHours(int?employeeID, DateTime?effectiveDate) { var select = new PXSelect <PMLaborCostRate, Where <PMLaborCostRate.employeeID, Equal <Required <PMLaborCostRate.employeeID> >, And <PMLaborCostRate.type, Equal <PMLaborCostRateType.employee>, And <PMLaborCostRate.effectiveDate, LessEqual <Required <PMLaborCostRate.effectiveDate> > > > >, OrderBy <Desc <PMLaborCostRate.effectiveDate> > >(graph); PMLaborCostRate res = select.Select(employeeID, effectiveDate); if (res != null && res.RegularHours != null) { return(res.RegularHours.Value); } else { return(GetEmployeeHoursFromCalendar(employeeID)); } }
public virtual Rate GetEmployeeRate(int?laborItemID, int?projectID, int?projectTaskID, bool?certifiedJob, string unionID, int?employeeId, DateTime?date) { if (date == null) { return(null); } var select = new PXSelect <PMLaborCostRate, Where2 <Where <PMLaborCostRate.inventoryID, Equal <Required <PMLaborCostRate.inventoryID> >, Or <PMLaborCostRate.inventoryID, IsNull> >, And2 <Where <PMLaborCostRate.employeeID, Equal <Required <PMLaborCostRate.employeeID> >, Or <PMLaborCostRate.employeeID, IsNull> >, And2 <Where <PMLaborCostRate.projectID, Equal <Required <PMLaborCostRate.projectID> >, Or <PMLaborCostRate.projectID, IsNull> >, And <Where <PMLaborCostRate.taskID, Equal <Required <PMLaborCostRate.taskID> >, Or <PMLaborCostRate.taskID, IsNull> > > > > >, OrderBy <Asc <PMLaborCostRate.effectiveDate> > >(graph); PXResultset <PMLaborCostRate> resultset = select.Select(laborItemID, employeeId, projectID, projectTaskID); List <PMLaborCostRate> specificRates = new List <PMLaborCostRate>(); PMLaborCostRate certifiedRate = null; PMLaborCostRate unionRate = null; PMLaborCostRate specific1 = null; //Labor rate by project, project task, employee, inventory ID PMLaborCostRate specific2 = null; //Labor rate by project, project task, employee, empty inventory ID PMLaborCostRate specific3 = null; //Labor rate by project, project task, inventory ID PMLaborCostRate specific4 = null; //Labor rate by project, project task, empty inventory ID PMLaborCostRate specific5 = null; //Labor rate by project, employee, inventory ID PMLaborCostRate specific6 = null; //Labor rate by project, employee, empty inventory ID PMLaborCostRate specific7 = null; //Labor rate by project, inventory ID PMLaborCostRate specific8 = null; //Labor rate by project, empty inventory ID PMLaborCostRate employeeRate1 = null; // With LaborItem PMLaborCostRate employeeRate2 = null; // Without LaborItem PMLaborCostRate itemRate = null; foreach (PMLaborCostRate record in resultset) { if (record.EffectiveDate > date) { continue; } if (record.Type == PMLaborCostRateType.Certified) { if (certifiedRate == null) { certifiedRate = record; } else { if (record.EffectiveDate > certifiedRate.EffectiveDate) { certifiedRate = record; } } } else if (record.Type == PMLaborCostRateType.Union && !string.IsNullOrEmpty(unionID) && record.UnionID == unionID) { if (unionRate == null) { unionRate = record; } else { if (record.EffectiveDate > unionRate.EffectiveDate) { unionRate = record; } } } else if (record.Type == PMLaborCostRateType.Item) { if (itemRate == null) { itemRate = record; } else { if (record.EffectiveDate > itemRate.EffectiveDate) { itemRate = record; } } } else if (record.Type == PMLaborCostRateType.Employee) { if (record.InventoryID != null) { if (employeeRate1 == null) { employeeRate1 = record; } else { if (record.EffectiveDate > employeeRate1.EffectiveDate) { employeeRate1 = record; } } } else { if (employeeRate2 == null) { employeeRate2 = record; } else { if (record.EffectiveDate > employeeRate2.EffectiveDate) { employeeRate2 = record; } } } } else { if (record.ProjectID == projectID && record.TaskID == projectTaskID && record.EmployeeID == employeeId && record.InventoryID != null) { if (specific1 == null) { specific1 = record; } else { if (record.EffectiveDate > specific1.EffectiveDate) { specific1 = record; } } } else if (record.ProjectID == projectID && record.TaskID == projectTaskID && record.EmployeeID == employeeId && record.InventoryID == null) { if (specific2 == null) { specific2 = record; } else { if (record.EffectiveDate > specific2.EffectiveDate) { specific2 = record; } } } else if (record.ProjectID == projectID && record.TaskID == projectTaskID && record.EmployeeID == null && record.InventoryID != null) { if (specific3 == null) { specific3 = record; } else { if (record.EffectiveDate > specific3.EffectiveDate) { specific3 = record; } } } else if (record.ProjectID == projectID && record.TaskID == projectTaskID && record.EmployeeID == null && record.InventoryID == null) { if (specific4 == null) { specific4 = record; } else { if (record.EffectiveDate > specific4.EffectiveDate) { specific4 = record; } } } else if (record.ProjectID == projectID && record.EmployeeID == employeeId && record.InventoryID != null) { if (specific5 == null) { specific5 = record; } else { if (record.EffectiveDate > specific5.EffectiveDate) { specific5 = record; } } } else if (record.ProjectID == projectID && record.EmployeeID == employeeId && record.InventoryID == null) { if (specific6 == null) { specific6 = record; } else { if (record.EffectiveDate > specific6.EffectiveDate) { specific6 = record; } } } else if (record.ProjectID == projectID && record.EmployeeID == null && record.InventoryID != null) { if (specific7 == null) { specific7 = record; } else { if (record.EffectiveDate > specific7.EffectiveDate) { specific7 = record; } } } else if (record.ProjectID == projectID && record.EmployeeID == null && record.InventoryID == null) { if (specific8 == null) { specific8 = record; } else { if (record.EffectiveDate > specific8.EffectiveDate) { specific8 = record; } } } } } PMLaborCostRate specific = specific1; if (specific == null) { specific = specific2; } if (specific == null) { specific = specific3; } if (specific == null) { specific = specific4; } if (specific == null) { specific = specific5; } if (specific == null) { specific = specific6; } if (specific == null) { specific = specific7; } if (specific == null) { specific = specific8; } if (specific == null) { specific = employeeRate1; } if (specific == null) { specific = employeeRate2; } if (specific == null) { specific = itemRate; } PMLaborCostRate maxRate = specific; if (maxRate == null) { maxRate = unionRate; } else if (unionRate != null && maxRate.Rate < unionRate.Rate) { maxRate = unionRate; } if (certifiedJob == true) { if (maxRate == null) { maxRate = certifiedRate; } else if (certifiedRate != null && maxRate.Rate < certifiedRate.Rate) { maxRate = certifiedRate; } } if (maxRate == null) { return(null); } decimal?regularHours = maxRate.RegularHours; if (employeeRate1 != null) { regularHours = employeeRate1.RegularHours; } return(new Rate(employeeId, maxRate.EmploymentType, maxRate.Rate, defaultUOM, regularHours, maxRate.EmploymentType == RateTypesAttribute.Hourly ? maxRate.Rate : maxRate.Rate *regularHours)); }