public void PrepareDataToDataset(ExpenseDataSet ds, long perdiemId) { ExpenseDataSet.FnExpensePerdiemRow row = ds.FnExpensePerdiem.FindByExpensePerdiemID(perdiemId); ExpenseDataSet.FnExpenseDocumentRow expRow = ds.FnExpenseDocument.FindByExpenseID(row.ExpenseID); string PerdiemType = expRow.ExpenseType; IList <FnExpensePerdiemItem> perdiemItemList = ScgeAccountingQueryProvider.FnExpensePerdiemItemQuery.GetPerdiemItemByPerdiemID(perdiemId); decimal totalNetDay = 0; foreach (FnExpensePerdiemItem item in perdiemItemList) { // Set data to perdiem item row in Dataset. ExpenseDataSet.FnExpensePerdiemItemRow itemRow = ds.FnExpensePerdiemItem.NewFnExpensePerdiemItemRow(); itemRow.PerdiemItemID = item.PerdiemItemID; itemRow.ExpensePerdiemID = item.ExpensePerdiem.ExpensePerdiemID; itemRow.FromDate = item.FromDate.Value; itemRow.FromTime = ConvertDateTime(item.FromDate.Value, item.FromTime.Value); itemRow.ToDate = item.ToDate.Value; itemRow.ToTime = ConvertDateTime(item.ToDate, item.ToTime); itemRow.AdjustedDay = (decimal)item.AdjustedDay; itemRow.NetDay = (decimal)item.NetDay; totalNetDay += itemRow.NetDay; if (PerdiemType == ZoneType.Foreign) { itemRow.HalfDay = (decimal)item.HalfDay; itemRow.FullDay = (decimal)item.FullDay; itemRow.SetCountryIDNull(); if (item.CountryID != null) { itemRow.CountryID = item.CountryID.Value; } itemRow.SetCountryZoneIDNull(); if (item.CountryZoneID != null) { itemRow.CountryZoneID = item.CountryZoneID.Value; } } itemRow.Remark = item.Remark; itemRow.Active = item.Active; itemRow.CreBy = item.CreBy; itemRow.CreDate = item.CreDate; itemRow.UpdBy = item.UpdBy; itemRow.UpdDate = item.UpdDate; itemRow.UpdPgm = item.UpdPgm; // Add perdiem item row to documentDataset. ds.FnExpensePerdiemItem.AddFnExpensePerdiemItemRow(itemRow); } if (PerdiemType == ZoneType.Domestic) { row.TotalFullDayPerdiem = totalNetDay; row.TotalFullDayPerdiemAmount = totalNetDay * row.FullDayPerdiemRate; } }
public void UpdateExpensePerdiemItemTransaction(FnExpensePerdiemItem item, Guid txId) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); string PerdiemType = GetPerdiemType(item, txId); if (!item.FromDate.HasValue) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromDate")); } if (!item.FromTime.HasValue) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromTime")); } if (!item.ToDate.HasValue) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDate")); } if (!item.ToTime.HasValue) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToTime")); } if (item.FromDate.HasValue && item.FromTime.HasValue && item.ToDate.HasValue && item.ToTime.HasValue) { DateTime FromDateTime = ConvertDateTime(item.FromDate, item.FromTime); DateTime ToDateTime = ConvertDateTime(item.ToDate, item.ToTime); if (ToDateTime < FromDateTime) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDateIncorrect")); } else { if (CalculateNetDay(CalculateTotalDay(FromDateTime, ToDateTime, PerdiemType), item.AdjustedDay) < 0) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information")); } if (PerdiemType == ZoneType.Foreign) { if (item.HalfDay < 0) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information")); } else { if (CalculateFullDay(CalculateNetDay(CalculateTotalDay(FromDateTime, ToDateTime, PerdiemType), item.AdjustedDay), item.HalfDay) < 0) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information")); } } } } } if (PerdiemType == ZoneType.Foreign) { if (!item.CountryID.HasValue && string.IsNullOrEmpty(item.Remark)) { errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Remark is required")); } } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } ExpenseDataSet ds = (ExpenseDataSet)TransactionService.GetDS(txId); ExpenseDataSet.FnExpensePerdiemItemRow row = ds.FnExpensePerdiemItem.FindByPerdiemItemID(item.PerdiemItemID); row.ExpensePerdiemID = item.ExpensePerdiem.ExpensePerdiemID; row.FromDate = item.FromDate.Value; row.FromTime = ConvertDateTime(item.FromDate.Value, item.FromTime.Value); row.ToDate = item.ToDate.Value; row.ToTime = ConvertDateTime(item.ToDate, item.ToTime); row.AdjustedDay = (decimal)item.AdjustedDay; row.NetDay = (decimal)CalculateNetDay(CalculateTotalDay(row.FromTime, row.ToTime, PerdiemType), item.AdjustedDay); //for Domestic and Foreign row.Remark = item.Remark; if (PerdiemType == ZoneType.Foreign) { row.HalfDay = (decimal)item.HalfDay; row.FullDay = (decimal)CalculateFullDay((double)row.NetDay, (double)row.HalfDay); if (item.CountryID.HasValue) { row.CountryID = item.CountryID.Value; } else { row.SetCountryIDNull(); } row.CountryZoneID = item.CountryZoneID.Value; } row.UpdBy = UserAccount.UserID; row.UpdDate = DateTime.Now.Date; row.UpdPgm = item.UpdPgm; row.Active = true; FnExpensePerdiemService.UpdateExpensePerdiemCalculateTransaction(item.ExpensePerdiem.ExpensePerdiemID, txId); }