public void LoadFromTemplate() { if (LabourTimeEntry.CopyDataFromTemplate(_headerRecord.ProjectId, _headerRecord.LogDate, _headerRecord.Id)) { SetCurrent(_headerRecord); LemHeader.SqlUpdateSubmitStatus(_headerRecord.Id, EnumSubmitStatus.Open); } else { GuiCommon.ShowMessage("The template data is not available."); } }
private void gvLabour_RowDeleting(object sender, DevExpress.Data.RowDeletingEventArgs e) { if (GuiCommon.ShowMessage("Delete Record?", "Confirmation", PopupType.Yes_No) == PopupResult.No) { e.Cancel = true; } else { DataRow row = gvLabour.GetDataRow(e.RowHandle); LabourTimeEntry.DeleteEntry((int)row[colId.FieldName]); LemHeader.SqlUpdateSubmitStatus(_headerRecord.Id, EnumSubmitStatus.Open); } }
private void CalcOvertime(DataRow row, string colName) { var sqlUpdate = new Action <int, decimal>((timeCodeId, val) => { if (row[colId.FieldName] != DBNull.Value) { if (TimeCode.GetTimeCode(timeCodeId).ValueType == EnumValueType.Hours) { LabourTimeDetail.SqlUpdateHours((int)row[colId.FieldName], timeCodeId, val); } else { LabourTimeDetail.SqlUpdateAmount((int)row[colId.FieldName], timeCodeId, val); } } }); bool handled = false; if ((bool)row[colManual.FieldName] == false) { var ot = OvertimeLimit.GetOvertime(_headerRecord.ProjectId, (int)row[colEmpNum.FieldName]); var regTimeCode = TimeCode.GetTimeCodeList(EnumBillingRateType.Regular).SingleOrDefault(x => colName == EnterHoursI(x)); if (regTimeCode != null && regTimeCode.OvertimeId != null && ot != null) { int? currId = ConvertEx.ToNullable <int>(row[colId.FieldName]); decimal dayHours = LabourTimeEntry.GetDayHours(_headerRecord.ProjectId, (int)row[colEmpNum.FieldName], _headerRecord.LogDate, currId); decimal weekHours = LabourTimeEntry.GetWeekHours(_headerRecord.ProjectId, (int)row[colEmpNum.FieldName], _headerRecord.LogDate, currId); dayHours += ConvertEx.ToNullable <decimal>(row[colName]) ?? 0; weekHours += ConvertEx.ToNullable <decimal>(row[colName]) ?? 0; decimal overHours = ot.Calc(dayHours, weekHours); row[EnterHoursI(regTimeCode.OvertimeId.Value)] = overHours; sqlUpdate(regTimeCode.OvertimeId.Value, overHours); dayHours -= overHours; row[colName] = dayHours; sqlUpdate(regTimeCode.MatchId, dayHours); handled = true; } } if (!handled) { sqlUpdate(int.Parse(colName.Replace(strEnterHours, "")), ConvertEx.ToNullable <decimal>(row[colName]) ?? 0); } }
public void SetCurrent(LemHeader header) { _headerRecord = header; SetEnabled(_headerRecord.CheckEditable()); var changeOrderList = ChangeOrder.ListForProject(_headerRecord.ProjectId).Select(cs => new { EstimateId = cs.EstimateId, DisplayName = cs.DisplayName }).Distinct().ToList(); changeOrderList.Add(new { EstimateId = -1, DisplayName = "" }); luChangeOrder.DataSource = changeOrderList; tableLabour.Clear(); var list = LabourTimeEntry.GetLabourEntryList(header.Id).ToList(); list.ForEach(lte => { DataRow row = tableLabour.Rows.Add( lte.Id, lte.EmpNum, lte.EmpNum, lte.WorkClassCode, lte.ChangeOrderId, lte.Level1Id, lte.Level2Id, lte.Level3Id, lte.Level4Id, lte.Billable, lte.Manual, lte.IncludedHours, lte.TotalHours, lte.BillAmount); foreach (var timecode in TimeCode.SubList(TimeCode.EnumValueType.Hours)) { row[BillRateI(timecode)] = (object)ProjectWorkClass.GetBillRate(_headerRecord.ProjectId, timecode.MatchId, (string)row[colWorkClass.FieldName]) ?? DBNull.Value; row[EnterHoursI(timecode)] = (object)list.Find(x => x.Id == (int)row[colId.FieldName]).DetailList.SingleOrDefault(d => d.TimeCodeId == timecode.MatchId)?.WorkHours ?? DBNull.Value; } foreach (var timecode in TimeCode.SubList(TimeCode.EnumValueType.Dollars)) { row[EnterAmountI(timecode)] = (object)list.Find(x => x.Id == (int)row[colId.FieldName]).DetailList.SingleOrDefault(d => d.TimeCodeId == timecode.MatchId)?.Amount ?? DBNull.Value; } }); tableLabour.AcceptChanges(); gvLabour.BestFitColumns(true); }
private void gvLabour_RowUpdated(object sender, RowObjectEventArgs e) { if (gvLabour.IsNewItemRow(e.RowHandle)) { DataRowView row = e.Row as DataRowView; row[colId.FieldName] = LabourTimeEntry.SqlInsert(_headerRecord.Id, (int)row[colEmpNum.FieldName], ConvertEx.ToNullable <int>(row[colChangeOrder.FieldName]), ConvertEx.ToNullable <int>(row[colLevel1Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel2Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel3Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel4Code.FieldName]), (bool)row[colBillable.FieldName], (bool)row[colManual.FieldName], (string)row[colWorkClass.FieldName], ConvertEx.ToNullable <decimal>(row[colIncludedHours.FieldName]), ConvertEx.ToNullable <decimal>(row[colTotalHours.FieldName]), ConvertEx.ToNullable <decimal>(row[colBillAmount.FieldName])); foreach (var timeCode in TimeCode.SubList(EnumValueType.Hours)) { LabourTimeDetail.SqlInsert((int)row[colId.FieldName], timeCode.MatchId, ConvertEx.ToNullable <decimal>(row[BillRateI(timeCode)]), ConvertEx.ToNullable <decimal>(row[EnterHoursI(timeCode)]), null); } foreach (var timeCode in TimeCode.SubList(EnumValueType.Dollars)) { LabourTimeDetail.SqlInsert((int)row[colId.FieldName], timeCode.MatchId, null, null, ConvertEx.ToNullable <decimal>(row[EnterAmountI(timeCode)])); } LemHeader.SqlUpdateSubmitStatus(_headerRecord.Id, EnumSubmitStatus.Open); } }
private void gvEmployee_CellValueChanged(object sender, CellValueChangedEventArgs e) { DataRow row = gvLabour.GetDataRow(e.RowHandle); bool needSave = false; if (e.Column == colEmpNum || e.Column == colEmployeeName) { int enmNum = (int)row[e.Column.FieldName]; row[colEmpNum.FieldName] = enmNum; row[colEmployeeName.FieldName] = enmNum; var wc = LabourTemplate.GetWorkClass(_headerRecord.ProjectId, enmNum, _headerRecord.LogDate); row[colWorkClass.FieldName] = wc ?? (object)Employee.GetEmployee(enmNum)?.WorkClassCode ?? DBNull.Value; needSave = true; } if (e.Column == colEmpNum || e.Column == colEmployeeName || e.Column == colWorkClass) { UpdateBillRate(row); CalcTotal(row); needSave = true; } if (e.Column == colManual) { bool manual = (bool)row[colManual.FieldName]; if (!manual) { foreach (var timeCode in TimeCode.SubList(TimeCode.EnumValueType.Hours)) { row[EnterHoursI(timeCode)] = 0; } CalcTotal(row); } needSave = true; } if (e.Column == colLevel1Code) { row[colLevel2Code.FieldName] = DBNull.Value; row[colLevel3Code.FieldName] = DBNull.Value; row[colLevel4Code.FieldName] = DBNull.Value; needSave = true; } if (e.Column == colLevel2Code) { row[colLevel3Code.FieldName] = DBNull.Value; row[colLevel4Code.FieldName] = DBNull.Value; needSave = true; } if (e.Column == colLevel3Code) { row[colLevel4Code.FieldName] = DBNull.Value; needSave = true; } if (e.Column.FieldName.Contains(strEnterHours)) { CalcOvertime(row, e.Column.FieldName); CalcTotal(row); needSave = true; } if (new GridColumn[] { colChangeOrder, colBillable }.Contains(e.Column)) { needSave = true; } if (needSave && !gvLabour.IsNewItemRow(e.RowHandle)) { LabourTimeEntry.SqlUpdate((int)row[colId.FieldName], (int)row[colEmpNum.FieldName], ConvertEx.ToNullable <int>(row[colChangeOrder.FieldName]), ConvertEx.ToNullable <int>(row[colLevel1Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel2Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel3Code.FieldName]), ConvertEx.ToNullable <int>(row[colLevel4Code.FieldName]), (bool)row[colBillable.FieldName], (bool)row[colManual.FieldName], (string)row[colWorkClass.FieldName], ConvertEx.ToNullable <decimal>(row[colIncludedHours.FieldName]), ConvertEx.ToNullable <decimal>(row[colTotalHours.FieldName]), ConvertEx.ToNullable <decimal>(row[colBillAmount.FieldName])); row.AcceptChanges(); LemHeader.SqlUpdateSubmitStatus(_headerRecord.Id, EnumSubmitStatus.Open); } }
public IHttpActionResult Post(int syncId, [FromBody] LabourTimeEntry entry) { try { using (SqlConnection sqlcon = new SqlConnection(WebCommon.WebConnection)) { sqlcon.Open(); string sSQL = @"WS_FLEM_LabourTimeEntry_PostPut"; SqlCommand cmd = new SqlCommand(sSQL, sqlcon); cmd.CommandType = CommandType.StoredProcedure; SqlParameter paraMatchId; cmd.Parameters.Add(new SqlParameter("@SyncId", syncId)); cmd.Parameters.Add(new SqlParameter("@CompanyId", entry.CompanyId)); cmd.Parameters.Add(paraMatchId = new SqlParameter("@MatchId", entry.MatchId) { Direction = ParameterDirection.InputOutput }); cmd.Parameters.Add(new SqlParameter("@HeaderMatchId", entry.HeaderId)); cmd.Parameters.Add(new SqlParameter("@EmpNum", entry.EmpNum)); cmd.Parameters.Add(new SqlParameter("@Level1Id", (object)entry.Level1Id ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@Level2Id", (object)entry.Level2Id ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@Level3Id", (object)entry.Level3Id ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@Level4Id", (object)entry.Level4Id ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@Billable", entry.Billable)); cmd.Parameters.Add(new SqlParameter("@Manual", entry.Manual)); cmd.Parameters.Add(new SqlParameter("@wcCode", entry.WorkClassCode)); cmd.Parameters.Add(new SqlParameter("@IncludedHours", (object)entry.IncludedHours ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@TotalHours", (object)entry.TotalHours ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@BillAmount", (object)entry.BillAmount ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@EstId", (object)entry.ChangeOrderId ?? DBNull.Value)); cmd.ExecuteNonQuery(); string sqlDetail = @"WS_FLEM_LabourTimeDetail_PostPut"; SqlCommand cmdDetail = new SqlCommand(sqlDetail, sqlcon); cmdDetail.CommandType = CommandType.StoredProcedure; cmdDetail.Parameters.Add(new SqlParameter("@SyncId", syncId)); cmdDetail.Parameters.Add(new SqlParameter("@CompanyId", entry.CompanyId)); cmdDetail.Parameters.Add(new SqlParameter("@EntryId", paraMatchId.Value)); cmdDetail.Parameters.Add(new SqlParameter("@TimeCodeId", null)); cmdDetail.Parameters.Add(new SqlParameter("@WorkHours", null)); cmdDetail.Parameters.Add(new SqlParameter("@BillAmount", null)); foreach (var detail in entry.DetailList) { cmdDetail.Parameters["@TimeCodeId"].Value = detail.TimeCodeId; if (detail.Amount == null) { cmdDetail.Parameters["@WorkHours"].Value = detail.WorkHours ?? 0; cmdDetail.Parameters["@BillAmount"].Value = detail.BillRate ?? 0; } else { cmdDetail.Parameters["@WorkHours"].Value = detail.Amount; cmdDetail.Parameters["@BillAmount"].Value = 1; } cmdDetail.ExecuteNonQuery(); } return(Ok(paraMatchId.Value)); } } catch (Exception e) { SqlCommon.ReportInfo(e.Message); return(BadRequest(e.Message)); } }