//停止跳过 #region 6获取出差申请子表数据,并新增出差报销主子表数据 /// <summary> /// 获取出差报告子表数据(查询完后将报告的明细保存到报销中) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Travelmanagement_GetBusinesstripDetailCompleted(object sender, GetBusinesstripDetailCompletedEventArgs e)//查询报告明细 { try { if (ReimbursementSwitch == true) { List <T_OA_BUSINESSTRIPDETAIL> BusinessTripDetail = new List <T_OA_BUSINESSTRIPDETAIL>(); if (e.Result.Count > 0) { TrDetail_Gloabal.Clear();//清理报销子表 BusinessTripDetail = e.Result.ToList(); List <string> cityscode = new List <string>(); double BusinessDays = 0; int i = 0; double total = 0; foreach (var detail in BusinessTripDetail) { i++; double toodays = 0; //计算本次出差的时间 List <string> list = new List <string> { detail.BUSINESSDAYS }; if (detail.BUSINESSDAYS != null && !detail.BUSINESSDAYS.Contains("null")) { double totalHours = System.Convert.ToDouble(list[0]); BusinessDays += totalHours; //总天数 toodays = totalHours; //单条数据的天数 } else { detail.BUSINESSDAYS = "0"; } double tresult = toodays;//计算本次出差的总天数 T_OA_REIMBURSEMENTDETAIL TrListInfo = new T_OA_REIMBURSEMENTDETAIL(); TrListInfo.REIMBURSEMENTDETAILID = Guid.NewGuid().ToString(); TrListInfo.STARTDATE = detail.STARTDATE; //开始时间 TrListInfo.ENDDATE = detail.ENDDATE; //结束时间 TrListInfo.BUSINESSDAYS = detail.BUSINESSDAYS; //出差天数 TrListInfo.DEPCITY = detail.DEPCITY; //出发城市 TrListInfo.DESTCITY = detail.DESTCITY; //目标城市 TrListInfo.PRIVATEAFFAIR = detail.PRIVATEAFFAIR; //是否私事 TrListInfo.GOOUTTOMEET = detail.GOOUTTOMEET; //外出开会 TrListInfo.COMPANYCAR = detail.COMPANYCAR; //公司派车 TrListInfo.TYPEOFTRAVELTOOLS = detail.TYPEOFTRAVELTOOLS; //交通工具类型 TrListInfo.TAKETHETOOLLEVEL = detail.TAKETHETOOLLEVEL; //交通工具级别 TrListInfo.CREATEDATE = Convert.ToDateTime(businesstripInfo.UPDATEDATE); //创建时间 TrListInfo.CREATEUSERNAME = businesstripInfo.CREATEUSERNAME; //创建人 cityscode.Add(TrListInfo.DESTCITY); #region 废弃逻辑 T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); string cityValue = cityscode[i - 1];//目标城市值 entareaallowance = GetAllowanceByCityValue(cityValue); #region 根据本次出差的总天数,根据天数获取相应的补贴 if (travelsolutions != null) { if (tresult <= int.Parse(travelsolutions.MINIMUMINTERVALDAYS))//本次出差总时间小于等于设定天数的报销标准 { if (entareaallowance != null) { if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1") //如果是私事不予报销 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; //交通补贴 } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1") //如果是开会或者是公司派车,交通费没有 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { if (entareaallowance.TRANSPORTATIONSUBSIDIES != null) { TrListInfo.TRANSPORTATIONSUBSIDIES = decimal.Parse((Convert.ToDouble(entareaallowance.TRANSPORTATIONSUBSIDIES) * toodays).ToString()); } } else { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } } } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//餐费补贴 { TrListInfo.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { TrListInfo.MEALSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.MEALSUBSIDIES = decimal.Parse((Convert.ToDouble(entareaallowance.MEALSUBSIDIES) * toodays).ToString()); } else { TrListInfo.MEALSUBSIDIES = 0; } } } } } else { if (int.Parse(postLevel) <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; TrListInfo.MEALSUBSIDIES = 0; } } } #endregion #region 如果出差天数大于设定的最大天数,按驻外标准获取补贴 if (travelsolutions != null) { if (tresult > int.Parse(travelsolutions.MAXIMUMRANGEDAYS)) { if (entareaallowance != null) { double DbTranceport = Convert.ToDouble(entareaallowance.TRANSPORTATIONSUBSIDIES); double DbMeal = Convert.ToDouble(entareaallowance.MEALSUBSIDIES); double tfSubsidies = Convert.ToDouble(entareaallowance.TRANSPORTATIONSUBSIDIES) * (Convert.ToDouble(travelsolutions.INTERVALRATIO) / 100); double mealSubsidies = Convert.ToDouble(entareaallowance.MEALSUBSIDIES) * (Convert.ToDouble(travelsolutions.INTERVALRATIO) / 100); if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { double minmoney = Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS) * DbTranceport; double middlemoney = (Convert.ToDouble(travelsolutions.MAXIMUMRANGEDAYS) - Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS)) * tfSubsidies; double lastmoney = (tresult - Convert.ToDouble(travelsolutions.MAXIMUMRANGEDAYS)) * Convert.ToDouble(entareaallowance.OVERSEASSUBSIDIES); TrListInfo.TRANSPORTATIONSUBSIDIES = decimal.Parse((minmoney + middlemoney + lastmoney).ToString()); } else { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } } } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { TrListInfo.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { TrListInfo.MEALSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { double minmoney = Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS) * DbMeal; double middlemoney = (Convert.ToDouble(travelsolutions.MAXIMUMRANGEDAYS) - Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS)) * mealSubsidies; double lastmoney = (tresult - Convert.ToDouble(travelsolutions.MAXIMUMRANGEDAYS)) * Convert.ToDouble(entareaallowance.OVERSEASSUBSIDIES); TrListInfo.MEALSUBSIDIES = decimal.Parse((minmoney + middlemoney + lastmoney).ToString()); } else { TrListInfo.MEALSUBSIDIES = 0; } } } } } else { if (int.Parse(postLevel) <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; TrListInfo.MEALSUBSIDIES = 0; } } } #endregion #region 如果出差时间大于设定的最小天数并且小于设定的最大天数的报销标准 if (travelsolutions != null) { if (tresult >= Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS) && tresult <= Convert.ToDouble(travelsolutions.MAXIMUMRANGEDAYS)) { if (entareaallowance != null) { double DbTranceport = Convert.ToDouble(entareaallowance.TRANSPORTATIONSUBSIDIES); double DbMeal = Convert.ToDouble(entareaallowance.MEALSUBSIDIES); double tfSubsidies = Convert.ToDouble(entareaallowance.TRANSPORTATIONSUBSIDIES) * (Convert.ToDouble(travelsolutions.INTERVALRATIO) / 100); double mealSubsidies = Convert.ToDouble(entareaallowance.MEALSUBSIDIES) * (Convert.ToDouble(travelsolutions.INTERVALRATIO) / 100); if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { double minmoney = Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS) * DbTranceport; double middlemoney = (tresult - Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS)) * tfSubsidies; TrListInfo.TRANSPORTATIONSUBSIDIES = decimal.Parse((minmoney + middlemoney).ToString()); } else { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; } } } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { TrListInfo.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { TrListInfo.MEALSUBSIDIES = 0; } else { if (int.Parse(postLevel) > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //最小区间段金额 double minmoney = Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS) * DbMeal; //中间区间段金额 double middlemoney = (tresult - Convert.ToDouble(travelsolutions.MINIMUMINTERVALDAYS)) * mealSubsidies; TrListInfo.MEALSUBSIDIES = decimal.Parse((minmoney + middlemoney).ToString()); } else { TrListInfo.MEALSUBSIDIES = 0; } } } } } else { if (int.Parse(postLevel) <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; TrListInfo.MEALSUBSIDIES = 0; } } } total += Convert.ToDouble(TrListInfo.TRANSPORTATIONSUBSIDIES + TrListInfo.MEALSUBSIDIES); travelReimbursement.THETOTALCOST = decimal.Parse(total.ToString()); //差旅费用总和 travelReimbursement.REIMBURSEMENTOFCOSTS = decimal.Parse(total.ToString()); //报销费用总和 #endregion #endregion TrDetail_Gloabal.Add(TrListInfo); } string result = BusinessDays.ToString(); //计算本次出差的总时间,超过24小时天数加1 travelReimbursement.COMPUTINGTIME = result; //总时间 Button btn = e.UserState as Button; travelReimbursement.T_OA_REIMBURSEMENTDETAIL = null; //清空子表,以免增加多余子表数据 Travelmanagement.TravelReimbursementAddAsync(travelReimbursement, TrDetail_Gloabal, btn); //保存出差报销 } } } catch (Exception ex) { if (e.UserState != null) { Button btn = e.UserState as Button; btn.IsEnabled = true; } Logger.Current.Log(ex.Message, Category.Debug, Priority.Low); ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("ERRORINFO"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation); } }