/// <summary> /// 添加一条教师/助教的教学工作及薪酬标准信息 /// </summary> /// <param name="salary"></param> public void AddTeacherSalary(TeacherSalary salary) { try { string commandString = "INSERT INTO [USTA].[dbo].[usta_TeacherSalarySummary]([teacherNo], [teacherType],[courseNo],[atCourseType],[teachPeriod],[experPeriod], [salaryItemValueList], [totalTeachCost], [termTag],[isConfirm], [memo], [createdTime]) VALUES(@teacherNo, @teacherType,@courseNo,@atCourseType,@teachPeriod,@experPeriod,@salaryItemValueList, @totalTeachCost, @termTag,@isConfirm, @memo, @createdTime)"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@teacherNo", salary.teacher.teacherNo), new SqlParameter("teacherType", salary.teacherType), new SqlParameter("@courseNo", salary.course == null ? null : salary.course.courseNo), new SqlParameter("@atCourseType", salary.atCourseType), new SqlParameter("@teachPeriod", salary.teachPeriod), new SqlParameter("@experPeriod", salary.experPeriod), new SqlParameter("@salaryItemValueList", salary.GetSalaryInItemValueList()), new SqlParameter("@totalTeachCost", salary.totalTeachCost), new SqlParameter("@termTag", salary.termTag), new SqlParameter("@isConfirm", false), new SqlParameter("@memo", salary.memo), new SqlParameter("@createdTime", DateTime.Now) }; SqlHelper.ExecuteNonQuery(conn, CommandType.Text, commandString, parameters); } catch (Exception ex) { MongoDBLog.LogRecord(ex); CommonUtility.RedirectUrl(); } finally { conn.Close(); } }
private void SetSalaryItemElement(SalaryItem salaryItem, TeacherSalary teacherSalary) { if (teacherSalary != null && teacherSalary.GetSalaryInItemElements() != null) { foreach (SalaryItemElement salaryItemElement in teacherSalary.GetSalaryInItemElements()) { if (salaryItem.salaryItemId.ToString() == salaryItemElement.salaryItemId) { SalaryItemElement element = new SalaryItemElement(); if (int.Parse(string.Format("{0:0}", salaryItemElement.times)) != 0) { element.times = salaryItemElement.times / salaryItemElement.MonthNum; element.times = CommonUtility.ConvertFormatedFloat("{0:F2}", element.times.ToString()); } if (salaryItemElement.salaryStandard != 0) { element.salaryStandard = salaryItemElement.salaryStandard; } else if (salaryItemElement.itemCost != 0) { element.salaryStandard = salaryItemElement.itemCost / salaryItemElement.MonthNum; element.salaryStandard = CommonUtility.ConvertFormatedFloat("{0:F2}", element.salaryStandard.ToString()); } salaryItem.salaryItemElement = element; break; } } } if (salaryItem.salaryItemElement == null) { SalaryItemElement element = new SalaryItemElement(); element.salaryStandard = 1; element.times = 1; } }
/// <summary> /// 根据薪酬项id字符串获得相应的薪酬项信息列表 /// </summary> /// <param name="salaryItemIds"></param> /// <returns></returns> private List<SalaryItem> GetInSalaryItemListByIdString(string salaryItemIds, TeacherSalary teacherSalary) { string[] salaryItemIdArray = ConvertSalaryItemIdString2Array(salaryItemIds); List<SalaryItem> salaryItemList = new List<SalaryItem>(); if (salaryItemIdArray != null) { DalOperationAboutSalaryItem dal = new DalOperationAboutSalaryItem(); foreach (string salaryItemId in salaryItemIdArray) { SalaryItem salaryItem = dal.GetSalaryItemById(int.Parse(salaryItemId)); SetSalaryItemElement(salaryItem, teacherSalary); salaryItemList.Add(salaryItem); } } return salaryItemList; }
/// <summary> /// 把从数据库中读出的数据转化为对象实例 /// </summary> /// <param name="reader"></param> /// <param name="salaries"></param> /// <returns></returns> private void buildTeacherSalarys(IDataReader reader, List<TeacherSalary> salaries) { DalOperationAboutCourses courseDal = new DalOperationAboutCourses(); DalOperationAboutTeacher teacherDal = new DalOperationAboutTeacher(); while (reader.Read()) { TeacherSalary salary = new TeacherSalary(); salary.teacherSalaryId = int.Parse(reader["teacherSalaryId"].ToString().Trim()); salary.teacher = teacherDal.GetTeacherById(reader["teacherNo"].ToString().Trim()); salary.teacherType = int.Parse(reader["teacherType"].ToString().Trim()); salary.termTag = reader["termTag"].ToString().Trim(); if (reader["courseNo"] != null && reader["courseNo"].ToString().Trim().Length > 0) { salary.course = courseDal.GetCoursesByNo(reader["courseNo"].ToString().Trim(), salary.termTag); salary.atCourseType = int.Parse(reader["atCourseType"].ToString().Trim()); salary.teachPeriod = int.Parse(reader["teachPeriod"].ToString().Trim()); salary.experPeriod = int.Parse(reader["experPeriod"].ToString().Trim()); } salary.SetSalaryInItemValueList(reader["salaryItemValueList"].ToString().Trim(), true); salary.totalTeachCost = float.Parse(reader["totalTeachCost"].ToString().Trim()); salary.isConfirm = bool.Parse(reader["isConfirm"].ToString().Trim()); salary.memo = reader["memo"].ToString().Trim(); salary.createdTime = DateTime.Parse(reader["createdTime"].ToString().Trim()); salaries.Add(salary); } }
protected void btn_TeacherSalary_Click(object sender, EventArgs e) { DalOperationAboutTeacherSalary teacherSalaryDal = new DalOperationAboutTeacherSalary(); if (this.btn_TeacherSalary.Text == "添加") { string teacherNo = this.teacherNo.Value; string termTag = this.TeacherSalary_TermTag.SelectedValue; int teacherType = int.Parse(this.teacherType.Value.Trim()); List<TeacherSalary> teacherSalaries = teacherSalaryDal.GetTeacherSalarys(teacherNo, teacherType, termTag, 0); if (teacherSalaries != null && teacherSalaries.Count != 0) { Javascript.Alert("本学期已为该教师添加过薪酬预算,请核对信息后再次录入!", Page); } else { TeachersList teacherList = new TeachersList { teacherNo = this.teacherNo.Value }; TeacherSalary salary = new TeacherSalary(); salary.teacher = teacherList; if (Course_TR.Visible) { string atCourseType = this.atCourseType.Value; Courses course = new Courses { courseNo = this.CourseId_hf.Value }; salary.course = course; salary.atCourseType = int.Parse(atCourseType); salary.teachPeriod = int.Parse(this.teachPeriod.Text.Trim()); if (this.experPeriod.Text == null || this.experPeriod.Text.Trim().Length == 0) { salary.experPeriod = 0; } else { salary.experPeriod = int.Parse(this.experPeriod.Text.Trim()); } } if (BuildInSalaryItemValueList(salary)) { salary.teacherType = int.Parse(this.teacherType.Value.Trim()); salary.termTag = TeacherSalary_TermTag.SelectedValue; salary.memo = teacherSalary_Memo.Text.Trim(); using (TransactionScope scope = new TransactionScope()) { try { teacherSalaryDal.AddTeacherSalary(salary); AddSalaryEntryDefault(salary); scope.Complete(); Javascript.RefreshParentWindow("/Administrator/SalaryManage.aspx?fragment=3", Page); } catch (Exception ex) { MongoDBLog.LogRecord(ex); Javascript.GoHistory(-1, "添加薪酬预算和月发放薪酬记录失败!", Page); } } } } } }
/// <summary> /// 返回操作是否成功,成功为true,否则为false /// </summary> /// <param name="teacherSalary"></param> /// <returns></returns> private bool BuildInSalaryItemValueList(TeacherSalary teacherSalary) { DataListItemCollection itemCollection = this.TeacherSalary_ItemList.Items; string salaryItemValueList = ""; float totalSalaryValue = 0; bool isError = false; foreach (DataListItem item in itemCollection) { string itemId = ((HiddenField)item.FindControl("salaryItemId")).Value; string salaryStandard; if (((DropDownList)item.FindControl("SalaryItemStandard_DropDownList")).Visible) { salaryStandard = ((DropDownList)item.FindControl("SalaryItemStandard_DropDownList")).SelectedValue; } else { salaryStandard = CommonUtility.ConvertFormatedFloat("{0:F2}", ((TextBox)item.FindControl("salaryItemStandard")).Text.Trim()).ToString(); } string salaryUnit = ((TextBox)item.FindControl("salaryItemUnit")).Text; string itemValue = CommonUtility.ConvertFormatedFloat("{0:F2}", ((TextBox)item.FindControl("salaryItemTotal")).Text.Trim()).ToString(); string MonthNum = ((TextBox)item.FindControl("MonthNum")).Text; bool hasTax = bool.Parse(((HiddenField)item.FindControl("salaryItemHasTax")).Value.Trim()); float salaryValue = float.Parse(salaryStandard) * float.Parse(salaryUnit); if (salaryValue == 0) { salaryValue = float.Parse(itemValue); } if (salaryValue == 0) { isError = true; break; } salaryValue = CommonUtility.ConvertFormatedFloat("{0:F2}", salaryValue.ToString()); salaryItemValueList += (itemId + ":" + salaryStandard + "," + salaryUnit + "," + salaryValue + "," + MonthNum + "," + (hasTax ? "1" : "0") + ";"); totalSalaryValue += salaryValue; } if (isError) { Javascript.Alert("薪酬项的标准与总额不能同时为0,请核对后再次输入", Page); } else { if (totalSalaryValue <= 0) { Javascript.Alert("该老师的薪酬预算总和应该为大于0的数值,请核对后再次录入", Page); isError = true; } else { if (salaryItemValueList.Length > 0) { salaryItemValueList = salaryItemValueList.Substring(0, salaryItemValueList.Length - 1); } teacherSalary.SetSalaryInItemValueList(salaryItemValueList, true); teacherSalary.totalTeachCost = CommonUtility.ConvertFormatedFloat("{0:0.00}", totalSalaryValue.ToString()); } } return !isError; }
private void AddSalaryEntryDefault(TeacherSalary teacherSalary) { List<SalaryItemElement> teacherSalaryElements = teacherSalary.GetSalaryInItemElements(); int maxMonth = 1; foreach(SalaryItemElement teacherSalaryElement in teacherSalaryElements){ if (teacherSalaryElement.MonthNum > maxMonth) { maxMonth = teacherSalaryElement.MonthNum; } } List<string> salaryInValueListForMonth = new List<string>(); List<float> salaryWithTax = new List<float>(); List<float> salaryWithoutTax = new List<float>(); string salaryInValueStringForMonth; string singleSalaryItemValue; float salaryWithTaxForMonth; float salaryWithoutTaxForMonth; for (int i = 1; i <= maxMonth; i++) { salaryInValueStringForMonth = ""; salaryWithTaxForMonth = 0f; salaryWithoutTaxForMonth = 0f; foreach (SalaryItemElement teacherSalaryElement in teacherSalaryElements) { singleSalaryItemValue = ""; if (i <= teacherSalaryElement.MonthNum) { if (teacherSalaryElement.salaryStandard != 0) { singleSalaryItemValue = (teacherSalaryElement.salaryItemId + ":" + teacherSalaryElement.salaryStandard + "," + CommonUtility.ConvertFormatedFloat("{0:F2}", (teacherSalaryElement.times / teacherSalaryElement.MonthNum).ToString()) + ",1;"); } else { singleSalaryItemValue = (teacherSalaryElement.salaryItemId + ":" + CommonUtility.ConvertFormatedFloat("{0:F2}", (teacherSalaryElement.itemCost / teacherSalaryElement.MonthNum).ToString()) + ",1,1;"); if (teacherSalaryElement.hasTax) { salaryWithTaxForMonth += CommonUtility.ConvertFormatedFloat("{0:F2}", (teacherSalaryElement.itemCost / teacherSalaryElement.MonthNum).ToString()); } else { salaryWithoutTaxForMonth += CommonUtility.ConvertFormatedFloat("{0:F2}", (teacherSalaryElement.itemCost / teacherSalaryElement.MonthNum).ToString()); } } salaryInValueStringForMonth += singleSalaryItemValue; if (teacherSalaryElement.hasTax) { salaryWithTaxForMonth += (teacherSalaryElement.salaryStandard * teacherSalaryElement.times / teacherSalaryElement.MonthNum); }else{ salaryWithoutTaxForMonth += (teacherSalaryElement.salaryStandard * teacherSalaryElement.times / teacherSalaryElement.MonthNum); } } } if (!string.IsNullOrWhiteSpace(salaryInValueStringForMonth)) { salaryInValueStringForMonth = salaryInValueStringForMonth.Substring(0, salaryInValueStringForMonth.Length - 1); salaryInValueListForMonth.Add(salaryInValueStringForMonth); salaryWithTax.Add(salaryWithTaxForMonth); salaryWithoutTax.Add(salaryWithoutTaxForMonth); } } DalOperationAboutSalaryEntry dalse = new DalOperationAboutSalaryEntry(); SalaryEntry salaryEntry = new SalaryEntry(); salaryEntry.teacher = teacherSalary.teacher; salaryEntry.teacherType = teacherSalary.teacherType; salaryEntry.course = teacherSalary.course; salaryEntry.atCourseType = "" + teacherSalary.atCourseType; salaryEntry.termTag = teacherSalary.termTag; salaryEntry.salaryEntryStatus = 1; salaryEntry.memo = "本列表中的税后所得仅为假定你在苏州研究院的所有收入只有此项而计算(因为是兼职,财务默认您的基础收入已经为3500元),仅供参考!实际税后金额,以财务发放为准,有问题可以及时联系教学管理部(0512-68839206)或者财务(0512-87161163)"; DateTime monthDateTime = DateTime.Now; for (int i = 0; i < salaryInValueListForMonth.Count; i++) { salaryEntry.SetSalaryInItemValueList(salaryInValueListForMonth[i], false); salaryEntry.teacherCostWithTax = CommonUtility.ConvertFormatedFloat("{0:F2}", salaryWithTax[i].ToString()); salaryEntry.teacherCostWithoutTax = CommonUtility.ConvertFormatedFloat("{0:F2}", salaryWithoutTax[i].ToString()); salaryEntry.teacherTotalCost = CommonUtility.ConvertFormatedFloat("{0:F2}", ((salaryEntry.teacherCostWithTax - float.Parse(CommonUtility.CalculateTax(decimal.Parse(salaryEntry.teacherCostWithTax.ToString())).ToString())) + salaryEntry.teacherCostWithoutTax).ToString()); int monthValue = monthDateTime.Month; salaryEntry.salaryMonth = (monthDateTime.Year + "-" + (monthValue < 10 ? "0" + monthValue.ToString() : monthValue.ToString())); dalse.AddSalaryEntry(salaryEntry); monthDateTime = monthDateTime.AddMonths(1); } }