void client_GetAreaAllowanceByIDCompleted(object sender, GetAreaAllowanceByIDCompletedEventArgs e) { if (e.Error != null && !string.IsNullOrEmpty(e.Error.Message)) { Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message)); } else { if (e.Result == null) { allowance = new T_OA_AREAALLOWANCE(); allowance.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowance.T_OA_AREADIFFERENCE = new T_OA_AREADIFFERENCE(); allowance.T_OA_AREADIFFERENCE.AREADIFFERENCEID = areaID; allowance.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; allowance.CREATEDATE = System.DateTime.Now; FormType = FormTypes.New; } else { allowance = e.Result; } this.DataContext = allowance; BindCommbox(); } }
public void AreaAllowanceADD(T_OA_AREAALLOWANCE obj, string travelSolutionsId) { using (AreaAllowanceBll bll = new AreaAllowanceBll()) { bll.AreaAllowanceAdd(obj, travelSolutionsId); } }
public void AreaAllowanceUpdate(T_OA_AREAALLOWANCE obj) { using (AreaAllowanceBll bll = new AreaAllowanceBll()) { bll.AreaAllowanceUpdate(obj); } }
public void AreaAllowanceUpdate(T_OA_AREAALLOWANCE obj) { using (AreaAllowanceBll bll = new AreaAllowanceBll()) { bll.AreaAllowanceUpdate(obj); } }
public AreaAllowanceForm(FormTypes type, string allowanceID, string areaID, string travelSolutionsId, string postlevel) { InitializeComponent(); travelSId = travelSolutionsId; this.Loaded += (sender, agrs) => { #region 原来的 InitParas(); this.areaID = areaID; FormType = type; PostLevel = postlevel; LoadSolutionInfos(); if (string.IsNullOrEmpty(allowanceID)) { allowance = new T_OA_AREAALLOWANCE(); allowance.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowance.T_OA_AREADIFFERENCE = new T_OA_AREADIFFERENCE(); allowance.T_OA_AREADIFFERENCE.AREADIFFERENCEID = areaID; allowance.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; allowance.CREATEDATE = System.DateTime.Now; //areacity.UPDATEDATE = System.DateTime.Now; //areacity.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; cbArea.IsEnabled = false; this.DataContext = allowance; } else { cbArea.IsEnabled = false; cbPostLevel.IsEnabled = false; client.GetAreaAllowanceByIDAsync(allowanceID); } #endregion }; }
public AreaAllowanceForm(FormTypes type, string allowanceID, string areaID, string travelSolutionsId, string postlevel) { InitializeComponent(); travelSId = travelSolutionsId; this.Loaded += (sender, agrs) => { #region 原来的 InitParas(); this.areaID = areaID; FormType = type; PostLevel = postlevel; LoadSolutionInfos(); if (string.IsNullOrEmpty(allowanceID)) { allowance = new T_OA_AREAALLOWANCE(); allowance.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowance.T_OA_AREADIFFERENCE = new T_OA_AREADIFFERENCE(); allowance.T_OA_AREADIFFERENCE.AREADIFFERENCEID = areaID; allowance.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; allowance.CREATEDATE = System.DateTime.Now; //areacity.UPDATEDATE = System.DateTime.Now; //areacity.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; cbArea.IsEnabled = false; this.DataContext = allowance; } else { cbArea.IsEnabled = false; cbPostLevel.IsEnabled = false; client.GetAreaAllowanceByIDAsync(allowanceID); } #endregion }; }
public void AreaAllowanceADD(T_OA_AREAALLOWANCE obj, string travelSolutionsId) { using (AreaAllowanceBll bll = new AreaAllowanceBll()) { bll.AreaAllowanceAdd(obj, travelSolutionsId); } }
/// <summary> /// 根据传回的XML,添加出差申请信息 /// </summary> /// <param name="xele"></param> public static string TravelmanagementAddFromEngine(string strXml,string newTravelreimbursementID) { try { string strEmployeeID = string.Empty; string strOwnerID = string.Empty; string strOwnerPostID = string.Empty; string strOwnerDepartmentID = string.Empty; string strOwnerCompanyID = string.Empty; string strClaimsWereName = string.Empty; string strCheckState = string.Empty; string strTEL = string.Empty; string strBusinesStripId = string.Empty; string strTravelreimbursementId = string.Empty; StringReader strRdr = new StringReader(strXml); XmlReader xr = XmlReader.Create(strRdr); while (xr.Read()) { if (xr.NodeType == XmlNodeType.Element) { string elementName = xr.Name; if (elementName == "Paras" || elementName == "System") { while (xr.Read()) { string type = xr.NodeType.ToString(); #region if (xr["Name"] != null) { if (xr["Name"].ToUpper() == "OWNERPOSTID") { strOwnerPostID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERID") { strOwnerID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERDEPARTMENTID") { strOwnerDepartmentID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERCOMPANYID") { strOwnerCompanyID = xr["Value"]; } if (xr["Name"].ToUpper() == "BUSINESSTRIPID") { strBusinesStripId = xr["Value"]; } if (xr["Name"].ToUpper() == "TRAVELREIMBURSEMENTID") { strTravelreimbursementId = xr["Value"]; } } #endregion } } } } doc = new SmtOAPersonOffice(); //string employeeid = strEmployeeID.Replace("{", "").Replace("}", ""); T_OA_BUSINESSTRIP buip = doc.GetTravelmanagementById(strBusinesStripId); T_OA_TRAVELREIMBURSEMENT entity = new T_OA_TRAVELREIMBURSEMENT(); entity.TRAVELREIMBURSEMENTID = newTravelreimbursementID;//Guid.NewGuid().ToString(); entity.T_OA_BUSINESSTRIP = buip; entity.T_OA_BUSINESSTRIP.BUSINESSTRIPID = buip.BUSINESSTRIPID; entity.CLAIMSWERE = buip.OWNERID; entity.CLAIMSWERENAME = buip.OWNERNAME; entity.REIMBURSEMENTTIME = DateTime.Now; entity.CHECKSTATE = "0"; entity.TEL = buip.TEL; entity.CREATEDATE = buip.UPDATEDATE; entity.OWNERID = buip.OWNERID; entity.OWNERNAME = buip.OWNERNAME; entity.OWNERPOSTID = buip.OWNERPOSTID; entity.OWNERDEPARTMENTID = buip.OWNERDEPARTMENTID; entity.OWNERCOMPANYID = buip.OWNERCOMPANYID; entity.CREATEUSERID = buip.CREATEUSERID; entity.CREATEUSERNAME = buip.CREATEUSERNAME; entity.CREATEPOSTID = buip.CREATEPOSTID; entity.CREATEDEPARTMENTID = buip.CREATEDEPARTMENTID; entity.CREATECOMPANYID = buip.CREATECOMPANYID; entity.OWNERPOSTNAME = buip.OWNERPOSTNAME; entity.OWNERDEPARTMENTNAME = buip.OWNERDEPARTMENTNAME; entity.OWNERCOMPANYNAME = buip.OWNERCOMPANYNAME; entity.POSTLEVEL = buip.POSTLEVEL; entity.STARTCITYNAME = buip.STARTCITYNAME; entity.ENDCITYNAME = buip.ENDCITYNAME; if (buip.REMARKS == "工作计划生成" || buip.ISFROMWP=="1") { entity.ISFROMWP = "1"; } Tracer.Debug("出差终审自动生成出差报销:" + entity.OWNERNAME + "-" + entity.OWNERPOSTNAME + "-" + entity.OWNERDEPARTMENTNAME + "-" + entity.OWNERCOMPANYNAME + "-岗位级别:" + entity.POSTLEVEL + "-开始城市:" + entity.STARTCITYNAME + "-结束城市:" + entity.ENDCITYNAME); //添加子表数据 EmployeeWS.V_EMPLOYEEDETAIL emp = new EmployeeWS.V_EMPLOYEEDETAIL(); EmployeeWS.PersonnelServiceClient cinet = new EmployeeWS.PersonnelServiceClient();//人事服务(查询员工岗位级别用) List<T_OA_CANTAKETHEPLANELINE> PlaneObj = new List<T_OA_CANTAKETHEPLANELINE>(); List<T_OA_TAKETHESTANDARDTRANSPORT> StandardObj = new List<T_OA_TAKETHESTANDARDTRANSPORT>(); emp = cinet.GetEmployeeDetailViewByID(entity.OWNERID);//根据员工ID查询出岗位级别 postLevel = emp.EMPLOYEEPOSTS.Where(s => s.POSTID == buip.OWNERPOSTID).FirstOrDefault().POSTLEVEL.ToString();//获取出差人的岗位级别 var companyId = emp.EMPLOYEEPOSTS.Where(s => s.CompanyID == buip.OWNERCOMPANYID).FirstOrDefault().CompanyID.ToString();//获取出差人的所属公司 T_OA_TRAVELSOLUTIONS travelsolutions = doc.GetTravelSolutionByCompanyID(entity.OWNERCOMPANYID, ref PlaneObj, ref StandardObj);//出差方案 if (travelsolutions != null) { solutionID = travelsolutions.TRAVELSOLUTIONSID;//出差方案ID } List<T_OA_BUSINESSTRIPDETAIL> TravelDetail = doc.GetBusinesstripDetail(strBusinesStripId); List<T_OA_REIMBURSEMENTDETAIL> TrDetail = new List<T_OA_REIMBURSEMENTDETAIL>();//出差报销子表 List<string> cityscode = new List<string>(); double BusinessDays = 0; int i = 0; double total = 0; #region //foreach (var detail in TravelDetail) for (int j = 0; j < TravelDetail.Count();j++ ) { var detail = TravelDetail[i]; i++; double toodays = 0; //计算本次出差的时间 List<string> list = new List<string> { detail.BUSINESSDAYS }; if (detail.BUSINESSDAYS != null) { double totalHours = System.Convert.ToDouble(list[0]); BusinessDays += totalHours;//总天数 toodays = totalHours;//单条数据的天数 } 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(buip.UPDATEDATE);//创建时间 TrListInfo.CREATEUSERNAME = buip.CREATEUSERNAME;//创建人 cityscode.Add(TrListInfo.DESTCITY); 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.MEALSUBSIDIES = decimal.Parse((Convert.ToDouble(entareaallowance.MEALSUBSIDIES) * toodays).ToString()); } else { TrListInfo.MEALSUBSIDIES = 0; } } } } } else { if (int.Parse(postLevel) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //最小区间段金额 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) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; TrListInfo.MEALSUBSIDIES = 0; } } } total += Convert.ToDouble(TrListInfo.TRANSPORTATIONSUBSIDIES + TrListInfo.MEALSUBSIDIES); entity.THETOTALCOST = decimal.Parse(total.ToString());//差旅费用总和 entity.REIMBURSEMENTOFCOSTS = decimal.Parse(total.ToString());//报销费用总和 #endregion TrDetail.Add(TrListInfo); } #endregion string result = BusinessDays.ToString(); //计算本次出差的总时间,超过24小时天数加1 entity.COMPUTINGTIME = result;//总时间 //doc.TravelReimbursementAdd(entity, TrDetail); doc.TravelReimbursementAddSimple(entity, TrDetail,strBusinesStripId); return null;//entity.TRAVELREIMBURSEMENTID; } catch (Exception e) { string abc = "<OA>Message=[" + e.Message + "]" + "<OA>Source=[" + e.Source + "]<OA>StackTrace=[" + e.StackTrace + "]<OA>TargetSite=[" + e.TargetSite + "]"; Tracer.Debug(abc); return abc; } }
//停止跳过 #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); } }
/// <summary> /// 获取出差报销补助 /// </summary> /// <param name="i"></param> /// <returns></returns> private T_OA_AREAALLOWANCE StandardsMethod(int i) { string noAllowancePostlevelName = string.Empty; double noAllowancePostLevel = Convert.ToDouble(travelsolutions.NOALLOWANCEPOSTLEVEL); if(!string.IsNullOrEmpty(travelsolutions.NOALLOWANCEPOSTLEVEL)) { var ents = from a in Application.Current.Resources["SYS_DICTIONARY"] as List<T_SYS_DICTIONARY> where a.DICTIONCATEGORY == "POSTLEVEL" && a.DICTIONARYVALUE == Convert.ToDecimal(travelsolutions.NOALLOWANCEPOSTLEVEL) select new { DICTIONARYNAME = a.DICTIONARYNAME, DICTIONARYVALUE = a.DICTIONARYVALUE }; noAllowancePostlevelName = ents.FirstOrDefault().DICTIONARYNAME; } T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); textStandards.Text = string.Empty; if (TravelDetailList_Golbal.Count() == 1) //只有一条记录的情况 { string cityend = TravelDetailList_Golbal[0].DESTCITY.Replace(",", "");//目标城市值 entareaallowance = this.GetAllowanceByCityValue(cityend); if (entareaallowance == null) { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "出差报销标准未获取到。"; return null; } if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + " 您的岗位级别≥'"+noAllowancePostlevelName+"'级,无各项差旅补贴。"; if (entareaallowance == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { if (entareaallowance.ACCOMMODATION == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; } } //detail.TRANSPORTATIONSUBSIDIES = 0; //detail.MEALSUBSIDIES = 0; return null; } if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend))) { //已经包含,直接跳过 return entareaallowance; } if (TravelDetailList_Golbal[0].PRIVATEAFFAIR == "1")//如果是私事 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + "无" + ",住宿标准:无。" + "\n"; } else if (TravelDetailList_Golbal[0].GOOUTTOMEET == "1")//如果是内部会议及培训 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差为《内部会议、培训》,无各项差旅补贴。" + "\n"; } else if (TravelDetailList_Golbal[0].COMPANYCAR == "1")//如果是公司派车 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + "无" + "餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的无各项补贴 { //textStandards.Text = "您的岗位级别≥'I'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + " 您的岗位级别≥'"+noAllowancePostlevelName+"'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + entareaallowance.TRANSPORTATIONSUBSIDIES + "元,餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } } else { for (int j = 0; j < TravelDetailList_Golbal.Count() - 1; j++)//最后一条记录没有补贴 { string city = TravelDetailList_Golbal[j].DESTCITY.Replace(",", "");//目标城市值 entareaallowance = this.GetAllowanceByCityValue(city); if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + " 您的岗位级别≥'"+noAllowancePostlevelName+"'级,无各项差旅补贴。"; if (entareaallowance == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { if (entareaallowance.ACCOMMODATION == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; } } //detail.TRANSPORTATIONSUBSIDIES = 0; //detail.MEALSUBSIDIES = 0; //return null; } if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city))) { //已经包含,直接跳过 continue; } if (entareaallowance != null)//根据出差的城市及出差人的级别,将当前出差人的标准信息显示在备注中 { if (TravelDetailList_Golbal[j].PRIVATEAFFAIR == "1")//如果是私事 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + "无" + ",住宿标准:" + "无。" + "\n"; } else if (TravelDetailList_Golbal[j].GOOUTTOMEET == "1")//如果是内部会议及培训 { //textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityValue) + "的出差为《内部会议、培训》,无各项差旅补贴。\n"; textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差为《内部会议、培训》,无各项差旅补贴。" + "\n"; } else if (TravelDetailList_Golbal[j].COMPANYCAR == "1")//如果是公司派车 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的无各项补贴 { //textStandards.Text = "您的岗位级别≥'I'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + " 您的岗位级别≥'"+noAllowancePostlevelName+"'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + entareaallowance.TRANSPORTATIONSUBSIDIES + "元,餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "没有相应的出差标准。" + "\n"; } } } string cityValue = TravelDetailList_Golbal[i].DESTCITY.Replace(",", "");//目标城市值 entareaallowance = this.GetAllowanceByCityValue(cityValue); if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityValue))) { //已经包含,直接返回 return entareaallowance; } if (i == TravelDetailList_Golbal.Count) { //出差结束城市无补贴 return entareaallowance; } return entareaallowance; }
/// <summary> /// 根据传回的XML,添加出差申请信息 /// </summary> /// <param name="xele"></param> public static string TravelmanagementAddFromEngine(string strXml, string newTravelreimbursementID) { try { string strEmployeeID = string.Empty; string strOwnerID = string.Empty; string strOwnerPostID = string.Empty; string strOwnerDepartmentID = string.Empty; string strOwnerCompanyID = string.Empty; string strClaimsWereName = string.Empty; string strCheckState = string.Empty; string strTEL = string.Empty; string strBusinesStripId = string.Empty; string strTravelreimbursementId = string.Empty; StringReader strRdr = new StringReader(strXml); XmlReader xr = XmlReader.Create(strRdr); while (xr.Read()) { if (xr.NodeType == XmlNodeType.Element) { string elementName = xr.Name; if (elementName == "Paras" || elementName == "System") { while (xr.Read()) { string type = xr.NodeType.ToString(); #region if (xr["Name"] != null) { if (xr["Name"].ToUpper() == "OWNERPOSTID") { strOwnerPostID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERID") { strOwnerID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERDEPARTMENTID") { strOwnerDepartmentID = xr["Value"]; } if (xr["Name"].ToUpper() == "OWNERCOMPANYID") { strOwnerCompanyID = xr["Value"]; } if (xr["Name"].ToUpper() == "BUSINESSTRIPID") { strBusinesStripId = xr["Value"]; } if (xr["Name"].ToUpper() == "TRAVELREIMBURSEMENTID") { strTravelreimbursementId = xr["Value"]; } } #endregion } } } } doc = new SmtOAPersonOffice(); //string employeeid = strEmployeeID.Replace("{", "").Replace("}", ""); T_OA_BUSINESSTRIP buip = doc.GetTravelmanagementById(strBusinesStripId); T_OA_TRAVELREIMBURSEMENT entity = new T_OA_TRAVELREIMBURSEMENT(); entity.TRAVELREIMBURSEMENTID = newTravelreimbursementID;//Guid.NewGuid().ToString(); entity.T_OA_BUSINESSTRIP = buip; entity.T_OA_BUSINESSTRIP.BUSINESSTRIPID = buip.BUSINESSTRIPID; entity.CLAIMSWERE = buip.OWNERID; entity.CLAIMSWERENAME = buip.OWNERNAME; entity.REIMBURSEMENTTIME = DateTime.Now; entity.CHECKSTATE = "0"; entity.TEL = buip.TEL; entity.CREATEDATE = buip.UPDATEDATE; entity.OWNERID = buip.OWNERID; entity.OWNERNAME = buip.OWNERNAME; entity.OWNERPOSTID = buip.OWNERPOSTID; entity.OWNERDEPARTMENTID = buip.OWNERDEPARTMENTID; entity.OWNERCOMPANYID = buip.OWNERCOMPANYID; entity.CREATEUSERID = buip.CREATEUSERID; entity.CREATEUSERNAME = buip.CREATEUSERNAME; entity.CREATEPOSTID = buip.CREATEPOSTID; entity.CREATEDEPARTMENTID = buip.CREATEDEPARTMENTID; entity.CREATECOMPANYID = buip.CREATECOMPANYID; entity.OWNERPOSTNAME = buip.OWNERPOSTNAME; entity.OWNERDEPARTMENTNAME = buip.OWNERDEPARTMENTNAME; entity.OWNERCOMPANYNAME = buip.OWNERCOMPANYNAME; entity.POSTLEVEL = buip.POSTLEVEL; entity.STARTCITYNAME = buip.STARTCITYNAME; entity.ENDCITYNAME = buip.ENDCITYNAME; Tracer.Debug("出差终审自动生成出差报销:" + entity.OWNERNAME + "-" + entity.OWNERPOSTNAME + "-" + entity.OWNERDEPARTMENTNAME + "-" + entity.OWNERCOMPANYNAME + "-岗位级别:" + entity.POSTLEVEL + "-开始城市:" + entity.STARTCITYNAME + "-结束城市:" + entity.ENDCITYNAME); //添加子表数据 EmployeeWS.V_EMPLOYEEDETAIL emp = new EmployeeWS.V_EMPLOYEEDETAIL(); EmployeeWS.PersonnelServiceClient cinet = new EmployeeWS.PersonnelServiceClient();//人事服务(查询员工岗位级别用) List <T_OA_CANTAKETHEPLANELINE> PlaneObj = new List <T_OA_CANTAKETHEPLANELINE>(); List <T_OA_TAKETHESTANDARDTRANSPORT> StandardObj = new List <T_OA_TAKETHESTANDARDTRANSPORT>(); emp = cinet.GetEmployeeDetailViewByID(entity.OWNERID); //根据员工ID查询出岗位级别 postLevel = emp.EMPLOYEEPOSTS.Where(s => s.POSTID == buip.OWNERPOSTID).FirstOrDefault().POSTLEVEL.ToString(); //获取出差人的岗位级别 var companyId = emp.EMPLOYEEPOSTS.Where(s => s.CompanyID == buip.OWNERCOMPANYID).FirstOrDefault().CompanyID.ToString(); //获取出差人的所属公司 T_OA_TRAVELSOLUTIONS travelsolutions = doc.GetTravelSolutionByCompanyID(entity.OWNERCOMPANYID, ref PlaneObj, ref StandardObj); //出差方案 if (travelsolutions != null) { solutionID = travelsolutions.TRAVELSOLUTIONSID;//出差方案ID } List <T_OA_BUSINESSTRIPDETAIL> TravelDetail = doc.GetBusinesstripDetail(strBusinesStripId); List <T_OA_REIMBURSEMENTDETAIL> TrDetail = new List <T_OA_REIMBURSEMENTDETAIL>();//出差报销子表 List <string> cityscode = new List <string>(); double BusinessDays = 0; int i = 0; double total = 0; #region //foreach (var detail in TravelDetail) for (int j = 0; j < TravelDetail.Count(); j++) { var detail = TravelDetail[i]; i++; double toodays = 0; //计算本次出差的时间 List <string> list = new List <string> { detail.BUSINESSDAYS }; if (detail.BUSINESSDAYS != null) { double totalHours = System.Convert.ToDouble(list[0]); BusinessDays += totalHours; //总天数 toodays = totalHours; //单条数据的天数 } 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(buip.UPDATEDATE); //创建时间 TrListInfo.CREATEUSERNAME = buip.CREATEUSERNAME; //创建人 cityscode.Add(TrListInfo.DESTCITY); 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.MEALSUBSIDIES = decimal.Parse((Convert.ToDouble(entareaallowance.MEALSUBSIDIES) * toodays).ToString()); } else { TrListInfo.MEALSUBSIDIES = 0; } } } } } else { if (int.Parse(postLevel) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { 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) > 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //最小区间段金额 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) <= 8)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { TrListInfo.TRANSPORTATIONSUBSIDIES = 0; TrListInfo.MEALSUBSIDIES = 0; } } } total += Convert.ToDouble(TrListInfo.TRANSPORTATIONSUBSIDIES + TrListInfo.MEALSUBSIDIES); entity.THETOTALCOST = decimal.Parse(total.ToString()); //差旅费用总和 entity.REIMBURSEMENTOFCOSTS = decimal.Parse(total.ToString()); //报销费用总和 #endregion TrDetail.Add(TrListInfo); } #endregion string result = BusinessDays.ToString(); //计算本次出差的总时间,超过24小时天数加1 entity.COMPUTINGTIME = result; //总时间 //doc.TravelReimbursementAdd(entity, TrDetail); doc.TravelReimbursementAddSimple(entity, TrDetail, strBusinesStripId); return(null);//entity.TRAVELREIMBURSEMENTID; } catch (Exception e) { string abc = "<OA>Message=[" + e.Message + "]" + "<OA>Source=[" + e.Source + "]<OA>StackTrace=[" + e.StackTrace + "]<OA>TargetSite=[" + e.TargetSite + "]"; Tracer.Debug(abc); return(abc); } }
/// <summary> /// 复制出差方案 /// </summary> /// <param name="EntObj">方案实体</param> /// <param name="OldtravleSolutionId">旧方案ID</param> /// <param name="companyids">公司ID</param> /// <returns></returns> public string GetCopyTravleSolution(T_OA_TRAVELSOLUTIONS EntObj, string OldtravleSolutionId) { string StrReturn = string.Empty; try { dal.BeginTransaction(); //添加方案信息 int i = dal.Add(EntObj); if (i > 0) { //根据出差方案ID查询出交通工具标准 var ents = from a in dal.GetObjects <T_OA_TAKETHESTANDARDTRANSPORT>().Include("T_OA_TRAVELSOLUTIONS") where a.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == OldtravleSolutionId select a; if (ents.Count() > 0) { foreach (T_OA_TAKETHESTANDARDTRANSPORT obj in ents) { T_OA_TAKETHESTANDARDTRANSPORT tent = new T_OA_TAKETHESTANDARDTRANSPORT(); tent.TAKETHESTANDARDTRANSPORTID = System.Guid.NewGuid().ToString(); tent.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", EntObj.TRAVELSOLUTIONSID); tent.ENDPOSTLEVEL = obj.ENDPOSTLEVEL; tent.TYPEOFTRAVELTOOLS = obj.TYPEOFTRAVELTOOLS; tent.TAKETHETOOLLEVEL = obj.TAKETHETOOLLEVEL; tent.OWNERCOMPANYID = EntObj.OWNERCOMPANYID; tent.OWNERDEPARTMENTID = EntObj.OWNERDEPARTMENTID; tent.OWNERPOSTID = EntObj.OWNERPOSTID; tent.CREATEUSERID = EntObj.CREATEUSERID; tent.CREATEDATE = System.DateTime.Now; dal.AddToContext(tent); } //将出差方案应用到当前公司 T_OA_PROGRAMAPPLICATIONS pent = new T_OA_PROGRAMAPPLICATIONS(); pent.PROGRAMAPPLICATIONSID = System.Guid.NewGuid().ToString(); pent.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", EntObj.TRAVELSOLUTIONSID); pent.COMPANYID = EntObj.OWNERCOMPANYID; pent.CREATEUSERID = EntObj.CREATEUSERID; pent.OWNERCOMPANYID = EntObj.CREATECOMPANYID; pent.OWNERDEPARTMENTID = EntObj.CREATEDEPARTMENTID; pent.OWNERPOSTID = EntObj.CREATEPOSTID; pent.CREATEDATE = System.DateTime.Now; dal.Add(pent); } //根据出差方案ID查询城市分类 var area = from a in dal.GetObjects <T_OA_AREADIFFERENCE>().Include("T_OA_TRAVELSOLUTIONS") where a.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == OldtravleSolutionId select a; if (area.Count() > 0) { foreach (T_OA_AREADIFFERENCE obj in area) { // T_OA_AREADIFFERENCE aread = new T_OA_AREADIFFERENCE(); // aread.AREADIFFERENCEID = System.Guid.NewGuid().ToString();//城市分类ID // aread.T_OA_TRAVELSOLUTIONSReference.EntityKey = // new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", EntObj.TRAVELSOLUTIONSID);//方案ID // aread.AREACATEGORY = obj.AREACATEGORY;//城市分类名 // aread.AREAINDEX = obj.AREAINDEX;//分类序号 // aread.OWNERCOMPANYID = EntObj.OWNERCOMPANYID;//所属公司 // aread.OWNERDEPARTMENTID = EntObj.OWNERDEPARTMENTID;//所属部门 // aread.OWNERPOSTID = EntObj.OWNERPOSTID;//所属岗位 // aread.OWNERID = EntObj.OWNERID;//所属人ID // aread.CREATEUSERID = EntObj.CREATEUSERID;//创建人 // aread.CREATEUSERNAME = EntObj.CREATEUSERNAME;//创建人姓名 // aread.CREATECOMPANYID = EntObj.CREATECOMPANYID;//创建公司 // aread.CREATEDEPARTMENTID = EntObj.CREATEDEPARTMENTID;//创建部门 // aread.CREATEPOSTID = EntObj.CREATEPOSTID;//创建岗位 // aread.CREATEDATE = System.DateTime.Now;//创建时间 // int add = dal.Add(aread); //if (add > 0) //{ //根据城市分类ID、方案ID查询补贴标准 var areace = from a in dal.GetObjects <T_OA_AREAALLOWANCE>().Include("T_OA_AREADIFFERENCE").Include("T_OA_TRAVELSOLUTIONS") where a.T_OA_AREADIFFERENCE.AREADIFFERENCEID == obj.AREADIFFERENCEID && a.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == OldtravleSolutionId select a; foreach (T_OA_AREAALLOWANCE obje in areace) { T_OA_AREAALLOWANCE areadce = new T_OA_AREAALLOWANCE(); areadce.AREAALLOWANCEID = System.Guid.NewGuid().ToString(); //分类补贴ID areadce.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", obj.AREADIFFERENCEID); //分类ID areadce.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", EntObj.TRAVELSOLUTIONSID); //方案ID areadce.POSTLEVEL = obje.POSTLEVEL; //岗位等级 areadce.ACCOMMODATION = obje.ACCOMMODATION; //住宿补贴 areadce.TRANSPORTATIONSUBSIDIES = obje.TRANSPORTATIONSUBSIDIES; //交通伙食补贴 areadce.OWNERCOMPANYID = EntObj.OWNERCOMPANYID; //所属公司 areadce.OWNERDEPARTMENTID = EntObj.OWNERDEPARTMENTID; //所属部门 areadce.OWNERPOSTID = EntObj.OWNERPOSTID; //所属岗位 areadce.OWNERID = EntObj.OWNERID; //所属人ID areadce.CREATEUSERID = EntObj.CREATEUSERID; //创建人 areadce.CREATEDATE = System.DateTime.Now; //创建时间 dal.AddToContext(areadce); } ////根据城市分类ID查询分类城市 //var areacity = from a in dal.GetObjects<T_OA_AREACITY>().Include("T_OA_AREADIFFERENCE") // where a.T_OA_AREADIFFERENCE.AREADIFFERENCEID == obj.AREADIFFERENCEID // select a; //foreach (T_OA_AREACITY objc in areacity) //{ // T_OA_AREACITY arctiy = new T_OA_AREACITY(); // arctiy.AREACITYID = System.Guid.NewGuid().ToString();//分类城市ID // arctiy.T_OA_AREADIFFERENCEReference.EntityKey = // new System.Data.EntityKey("TM_SaaS_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", aread.AREADIFFERENCEID);//分类ID // arctiy.CITY = objc.CITY;//所在地城市 // arctiy.CREATEUSERID = EntObj.CREATEUSERID;//创建人 // arctiy.CREATEDATE = System.DateTime.Now;//创建时间 // dal.AddToContext(arctiy); //} } //} } int n = dal.SaveContextChanges(); if (i > 0 && n > 0) { dal.CommitTransaction(); } else { StrReturn = "ERROR"; dal.RollbackTransaction(); } } } catch (Exception ex) { dal.RollbackTransaction(); Tracer.Debug("出差方案TravleSolutionBLL-AddTravleSolution" + System.DateTime.Now.ToString() + " " + ex.ToString()); StrReturn = "ERROR"; } return(StrReturn); }
/// <summary> /// 获取出差报销补助 /// </summary> /// <param name="i"></param> /// <returns></returns> private T_OA_AREAALLOWANCE StandardsMethod(int i) { string noAllowancePostlevelName = string.Empty; double noAllowancePostLevel = Convert.ToDouble(travelsolutions.NOALLOWANCEPOSTLEVEL); if (!string.IsNullOrEmpty(travelsolutions.NOALLOWANCEPOSTLEVEL)) { var ents = from a in Application.Current.Resources["SYS_DICTIONARY"] as List <T_SYS_DICTIONARY> where a.DICTIONCATEGORY == "POSTLEVEL" && a.DICTIONARYVALUE == Convert.ToDecimal(travelsolutions.NOALLOWANCEPOSTLEVEL) select new { DICTIONARYNAME = a.DICTIONARYNAME, DICTIONARYVALUE = a.DICTIONARYVALUE }; noAllowancePostlevelName = ents.FirstOrDefault().DICTIONARYNAME; } T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); textStandards.Text = string.Empty; if (TravelDetailList_Golbal.Count() == 1) //只有一条记录的情况 { string cityend = TravelDetailList_Golbal[0].DESTCITY.Replace(",", ""); //目标城市值 entareaallowance = this.GetAllowanceByCityValue(cityend); if (entareaallowance == null) { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "出差报销标准未获取到。"; return(null); } if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的补贴标准 { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + " 您的岗位级别≥'" + noAllowancePostlevelName + "'级,无各项差旅补贴。"; if (entareaallowance == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { if (entareaallowance.ACCOMMODATION == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; } } //detail.TRANSPORTATIONSUBSIDIES = 0; //detail.MEALSUBSIDIES = 0; return(null); } if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend))) { //已经包含,直接跳过 return(entareaallowance); } if (TravelDetailList_Golbal[0].PRIVATEAFFAIR == "1")//如果是私事 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + "无" + ",住宿标准:无。" + "\n"; } else if (TravelDetailList_Golbal[0].GOOUTTOMEET == "1")//如果是内部会议及培训 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差为《内部会议、培训》,无各项差旅补贴。" + "\n"; } else if (TravelDetailList_Golbal[0].COMPANYCAR == "1")//如果是公司派车 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + "无" + "餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的无各项补贴 { //textStandards.Text = "您的岗位级别≥'I'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + " 您的岗位级别≥'" + noAllowancePostlevelName + "'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityend) + "的出差报销标准是:交通补贴:" + entareaallowance.TRANSPORTATIONSUBSIDIES + "元,餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } } else { for (int j = 0; j < TravelDetailList_Golbal.Count() - 1; j++) //最后一条记录没有补贴 { string city = TravelDetailList_Golbal[j].DESTCITY.Replace(",", ""); //目标城市值 entareaallowance = this.GetAllowanceByCityValue(city); if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel) //当前用户的岗位级别小于副部长及以上级别的补贴标准 { textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + " 您的岗位级别≥'" + noAllowancePostlevelName + "'级,无各项差旅补贴。"; if (entareaallowance == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { if (entareaallowance.ACCOMMODATION == null) { textStandards.Text = textStandards.Text + "住宿标准:未获取到。" + "\n"; } else { textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; } } //detail.TRANSPORTATIONSUBSIDIES = 0; //detail.MEALSUBSIDIES = 0; //return null; } if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city))) { //已经包含,直接跳过 continue; } if (entareaallowance != null) //根据出差的城市及出差人的级别,将当前出差人的标准信息显示在备注中 { if (TravelDetailList_Golbal[j].PRIVATEAFFAIR == "1") //如果是私事 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + "无" + ",住宿标准:" + "无。" + "\n"; } else if (TravelDetailList_Golbal[j].GOOUTTOMEET == "1")//如果是内部会议及培训 { //textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityValue) + "的出差为《内部会议、培训》,无各项差旅补贴。\n"; textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差为《内部会议、培训》,无各项差旅补贴。" + "\n"; } else if (TravelDetailList_Golbal[j].COMPANYCAR == "1")//如果是公司派车 { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + "无" + ",餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else if (EmployeePostLevel.ToInt32() <= noAllowancePostLevel)//当前用户的岗位级别小于副部长及以上级别的无各项补贴 { //textStandards.Text = "您的岗位级别≥'I'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "出差城市:" + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + " 您的岗位级别≥'" + noAllowancePostlevelName + "'级,无各项差旅补贴。"; textStandards.Text = textStandards.Text + "住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "的出差报销标准是:交通补贴:" + entareaallowance.TRANSPORTATIONSUBSIDIES + "元,餐费补贴:" + entareaallowance.MEALSUBSIDIES.ToString() + "元,住宿标准:" + entareaallowance.ACCOMMODATION + "元。" + "\n"; //textStandards.Text += "(以上为员工现岗位级别的补贴,仅供参考)"; } } else { textStandards.Text = textStandards.Text + SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(city) + "没有相应的出差标准。" + "\n"; } } } string cityValue = TravelDetailList_Golbal[i].DESTCITY.Replace(",", "");//目标城市值 entareaallowance = this.GetAllowanceByCityValue(cityValue); if (textStandards.Text.Contains(SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(cityValue))) { //已经包含,直接返回 return(entareaallowance); } if (i == TravelDetailList_Golbal.Count) { //出差结束城市无补贴 return(entareaallowance); } return(entareaallowance); }
/// <summary> /// 编辑页面绑定grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DaGrEdit_LoadingRow(object sender, DataGridRowEventArgs e) { try { T_OA_REIMBURSEMENTDETAIL tmp = (T_OA_REIMBURSEMENTDETAIL)e.Row.DataContext; //出发时间 DateTimePicker dpStartTime = DaGrEdit.Columns[0].GetCellContent(e.Row).FindName("StartTime") as DateTimePicker; //出发城市 SearchCity myCityFrom = DaGrEdit.Columns[1].GetCellContent(e.Row).FindName("txtDEPARTURECITY") as SearchCity; //到达时间 DateTimePicker dpEndTime = DaGrEdit.Columns[2].GetCellContent(e.Row).FindName("EndTime") as DateTimePicker; //到达城市 SearchCity myCityTo = DaGrEdit.Columns[3].GetCellContent(e.Row).FindName("txtTARGETCITIES") as SearchCity; //交通费 TextBox txtTranSportcosts = DaGrEdit.Columns[8].GetCellContent(e.Row).FindName("txtTRANSPORTCOSTS") as TextBox; //住宿费 TextBox txtASubsidies = DaGrEdit.Columns[9].GetCellContent(e.Row).FindName("txtACCOMMODATION") as TextBox; //交通补贴 TextBox txtTFSubsidies = DaGrEdit.Columns[10].GetCellContent(e.Row).FindName("txtTRANSPORTATIONSUBSIDIES") as TextBox; //餐费补贴 TextBox txtMealSubsidies = DaGrEdit.Columns[11].GetCellContent(e.Row).FindName("txtMEALSUBSIDIES") as TextBox; TravelDictionaryComboBox ComVechile = DaGrEdit.Columns[6].GetCellContent(e.Row).FindName("ComVechileType") as TravelDictionaryComboBox; TravelDictionaryComboBox ComLevel = DaGrEdit.Columns[7].GetCellContent(e.Row).FindName("ComVechileTypeLeve") as TravelDictionaryComboBox; //其他费用 TextBox txtOtherCosts = DaGrEdit.Columns[12].GetCellContent(e.Row).FindName("txtOtherCosts") as TextBox; CheckBox IsCheck = DaGrEdit.Columns[13].GetCellContent(e.Row).FindName("myChkBox") as CheckBox; CheckBox IsCheckMeet = DaGrEdit.Columns[14].GetCellContent(e.Row).FindName("myChkBoxMeet") as CheckBox; CheckBox IsCheckCar = DaGrEdit.Columns[15].GetCellContent(e.Row).FindName("myChkBoxCar") as CheckBox; //ImageButton MyButton_Delbaodao = DaGrEdit.Columns[16].GetCellContent(e.Row).FindName("myDelete") as ImageButton; //行程修改-不允许修改出差 dpStartTime.IsEnabled = false; myCityFrom.IsEnabled = false; dpEndTime.IsEnabled = false; myCityTo.IsEnabled = false; ((DataGridCell)((StackPanel)dpStartTime.Parent).Parent).IsEnabled = false; ((DataGridCell)((StackPanel)myCityFrom.Parent).Parent).IsEnabled = false; ((DataGridCell)((StackPanel)dpEndTime.Parent).Parent).IsEnabled = false; ((DataGridCell)((StackPanel)myCityTo.Parent).Parent).IsEnabled = false; //对默认控件的颜色进行赋值 tempcomTypeBorderBrush = ComVechile.BorderBrush; tempcomTypeForeBrush = ComVechile.Foreground; tempcomLevelBorderBrush = ComLevel.BorderBrush; tempcomLevelForeBrush = ComLevel.Foreground; txtASubsidiesForeBrush = txtASubsidies.Foreground; txtASubsidiesBorderBrush = txtASubsidies.BorderBrush; T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); if (BtnNewButton == true) { myCityTo.TxtSelectedCity.Text = string.Empty; } else { BtnNewButton = false; } //MyButton_Delbaodao.Margin = new Thickness(0); //MyButton_Delbaodao.AddButtonAction("/SMT.SaaS.FrameworkUI;Component/Images/ToolBar/ico_16_delete.png", Utility.GetResourceStr("DELETE")); //MyButton_Delbaodao.Tag = tmp; myCityFrom.Tag = tmp; myCityTo.Tag = tmp; //查询出发城市&目标城市&&将ID转换为Name if (DaGrEdit.ItemsSource != null) { ObservableCollection<T_OA_REIMBURSEMENTDETAIL> objs = DaGrEdit.ItemsSource as ObservableCollection<T_OA_REIMBURSEMENTDETAIL>; int i = 0; foreach (var obje in objs) { if (obje.REIMBURSEMENTDETAILID == tmp.REIMBURSEMENTDETAILID)//判断记录的ID是否相同 { string dictid = ""; ComVechile.SelectedIndex = 0; ComLevel.SelectedIndex = 0; DaGrEdit.SelectedItem = e.Row; T_SYS_DICTIONARY type = new T_SYS_DICTIONARY(); T_SYS_DICTIONARY level = new T_SYS_DICTIONARY(); entareaallowance = StandardsMethod(i); if (formType != FormTypes.New) { if (myCityFrom != null)//出发城市 { if (obje.DEPCITY != null) { //注释原因:obje.depcity仍然是中文而不是数字 myCityFrom.TxtSelectedCity.Text = GetCityName(tmp.DEPCITY); if (TravelDetailList_Golbal.Count() > 1) { if (i > 1) { myCityFrom.IsEnabled = false; ((DataGridCell)((StackPanel)myCityFrom.Parent).Parent).IsEnabled = false; } } } } if (myCityTo != null)//目标城市 { if (obje.DESTCITY != null) { myCityTo.TxtSelectedCity.Text = GetCityName(obje.DESTCITY); } } if (obje.PRIVATEAFFAIR == "1")//私事 { IsCheck.IsChecked = true; } if (obje.GOOUTTOMEET == "1")//外出开会 { IsCheckMeet.IsChecked = true; } if (obje.COMPANYCAR == "1")//公司派车 { IsCheckCar.IsChecked = true; } //交通费 if (txtTranSportcosts != null) { txtTranSportcosts.Text = obje.TRANSPORTCOSTS.ToString(); } if (txtASubsidies != null)//住宿费 { txtASubsidies.Text = obje.ACCOMMODATION.ToString(); if (i>0 && i == objs.Count - 1) { txtASubsidies.IsReadOnly = true; } } //其他费用 if (txtOtherCosts != null) { txtOtherCosts.Text = obje.OTHERCOSTS.ToString(); } if (txtTFSubsidies != null)//交通补贴 { txtTFSubsidies.Text = obje.TRANSPORTATIONSUBSIDIES.ToString(); ((DataGridCell)((StackPanel)txtTFSubsidies.Parent).Parent).IsEnabled = false; if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长I级以上级别的补贴标准 { //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 if (string.IsNullOrWhiteSpace(txtTFSubsidies.Text)) { ComfirmWindow com = new ComfirmWindow(); com.OnSelectionBoxClosed += (obj, result) => { //txtTranSportcosts.IsReadOnly = true;//交通费 //txtASubsidies.IsReadOnly = true;//住宿标准 //txtOtherCosts.IsReadOnly = true;//其他费用 }; if (formType == FormTypes.Audit || formType == FormTypes.Browse || obje.GOOUTTOMEET == "1" || obje.COMPANYCAR == "1") return; if (obje.REIMBURSEMENTDETAILID == objs.LastOrDefault().REIMBURSEMENTDETAILID) { return;//最后一条无补贴 } if (obje.TRANSPORTATIONSUBSIDIES == null || obje.TRANSPORTATIONSUBSIDIES == 0) { com.SelectionBox("操作确认", "当前单据没有获取到交通补贴,是否继续操作?", ComfirmWindow.titlename, ""); } } } } if (txtMealSubsidies != null)//餐费补贴 { txtMealSubsidies.Text = obje.MEALSUBSIDIES.ToString(); ((DataGridCell)((StackPanel)txtMealSubsidies.Parent).Parent).IsEnabled = false; if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 if (string.IsNullOrWhiteSpace(txtMealSubsidies.Text)) { ComfirmWindow com = new ComfirmWindow(); com.OnSelectionBoxClosed += (obj, result) => { //txtTranSportcosts.IsReadOnly = true;//交通费 //txtASubsidies.IsReadOnly = true;//住宿标准 //txtOtherCosts.IsReadOnly = true;//其他费用 }; if (formType == FormTypes.Audit || formType == FormTypes.Browse || obje.GOOUTTOMEET == "1") return; if (obje.REIMBURSEMENTDETAILID == objs.LastOrDefault().REIMBURSEMENTDETAILID) { return;//最后一条无补贴 } if (obje.MEALSUBSIDIES == null || obje.MEALSUBSIDIES == 0) { com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); } } } } #region 查看和审核时隐藏DataGrid模板中的控件 if (formType == FormTypes.Browse || formType == FormTypes.Audit) { txtASubsidies.IsReadOnly = true; txtTFSubsidies.IsReadOnly = true; txtMealSubsidies.IsReadOnly = true; txtOtherCosts.IsReadOnly = true; txtTranSportcosts.IsReadOnly = true; ComVechile.IsEnabled = false; ComLevel.IsEnabled = false; } if (formType != FormTypes.New || formType != FormTypes.Edit) { if (TravelReimbursement_Golbal.CHECKSTATE != ((int)CheckStates.UnSubmit).ToString()) { txtASubsidies.IsReadOnly = true; txtTFSubsidies.IsReadOnly = true; txtMealSubsidies.IsReadOnly = true; txtOtherCosts.IsReadOnly = true; txtTranSportcosts.IsReadOnly = true; ComVechile.IsEnabled = false; ComLevel.IsEnabled = false; } } if (entareaallowance != null) { decimal days = System.Convert.ToDecimal(obje.THENUMBEROFNIGHTS); if (days.ToDouble() == 0.5) { days = 1; } else { days = decimal.Truncate(days); } if (txtASubsidies.Text.ToDouble() > entareaallowance.ACCOMMODATION.ToDouble() * days.ToDouble())//判断住宿费超标 { txtASubsidies.BorderBrush = new SolidColorBrush(Colors.Red); txtASubsidies.Foreground = new SolidColorBrush(Colors.Red); txtAccommodation.Visibility = Visibility.Visible; this.txtAccommodation.Text = "住宿费超标"; } if (txtASubsidies.Text.ToDouble() <= entareaallowance.ACCOMMODATION.ToDouble() * days.ToDouble()) { if (txtASubsidiesForeBrush != null) { txtASubsidies.Foreground = txtASubsidiesForeBrush; } if (txtASubsidiesBorderBrush != null) { txtASubsidies.BorderBrush = txtASubsidiesBorderBrush; } } } #endregion #region 获取交通工具类型和级别 if (ComVechile != null)//交通工具类型 { type = ComVechile.SelectedItem as T_SYS_DICTIONARY; level = ComLevel.SelectedItem as T_SYS_DICTIONARY; var thd = takethestandardtransport.FirstOrDefault(); thd = this.GetVehicleTypeValue(""); foreach (T_SYS_DICTIONARY Region in ComVechile.Items) { if (thd != null) { dictid = Region.DICTIONARYID; if (Region.DICTIONARYVALUE.ToString() == tmp.TYPEOFTRAVELTOOLS) { if (takethestandardtransport.Count() > 0) { ComVechile.SelectedItem = Region; if (thd.TYPEOFTRAVELTOOLS.ToInt32() > Region.DICTIONARYVALUE) { ComVechile.BorderBrush = new SolidColorBrush(Colors.Red); ComVechile.Foreground = new SolidColorBrush(Colors.Red); ComLevel.BorderBrush = new SolidColorBrush(Colors.Red); ComLevel.Foreground = new SolidColorBrush(Colors.Red); this.txtTips.Visibility = Visibility.Visible; this.txtTips.Text = "交通工具超标"; } if (thd.TYPEOFTRAVELTOOLS.ToInt32() <= Region.DICTIONARYVALUE) { if (tempcomTypeBorderBrush != null) { ComVechile.BorderBrush = tempcomTypeBorderBrush; } if (tempcomTypeForeBrush != null) { ComVechile.Foreground = tempcomTypeForeBrush; } } break; } } } } } if (ComLevel != null)//交通工具级别 { var ents = from ent in ListVechileLevel where ent.T_SYS_DICTIONARY2.DICTIONARYID == dictid select ent; ComLevel.ItemsSource = ents.ToList(); if (ents.Count() > 0) { type = ComVechile.SelectedItem as T_SYS_DICTIONARY; level = ComLevel.SelectedItem as T_SYS_DICTIONARY; var thd = takethestandardtransport.FirstOrDefault(); if (type != null) { thd = this.GetVehicleTypeValue(type.DICTIONARYVALUE.ToString()); } if (thd != null) { foreach (T_SYS_DICTIONARY RegionLevel in ComLevel.Items) { if (RegionLevel.DICTIONARYVALUE.ToString() == tmp.TAKETHETOOLLEVEL) { ComLevel.SelectedItem = RegionLevel; if (thd.TAKETHETOOLLEVEL.ToInt32() <= RegionLevel.DICTIONARYVALUE) { if (tempcomLevelForeBrush != null) { ComLevel.Foreground = tempcomLevelForeBrush; } if (tempcomLevelBorderBrush != null) { ComLevel.BorderBrush = tempcomLevelBorderBrush; } } else { if (thd.TAKETHETOOLLEVEL.ToInt32() > RegionLevel.DICTIONARYVALUE) { ComLevel.BorderBrush = new SolidColorBrush(Colors.Red); ComLevel.Foreground = new SolidColorBrush(Colors.Red); this.txtTips.Visibility = Visibility.Visible; this.txtTips.Text = "交通工具超标"; return; } else { if (tempcomLevelForeBrush != null) { ComLevel.Foreground = tempcomLevelForeBrush; } if (tempcomLevelBorderBrush != null) { ComLevel.BorderBrush = tempcomLevelBorderBrush; } } } break; } } } }// ComLevel != null } #endregion } else { continue; } } i++; } } } catch (Exception ex) { Logger.Current.Log(ex.Message, Category.Debug, Priority.Low); ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("ERRORINFO"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation); } }
void client_GetAreaAllowanceByIDCompleted(object sender, GetAreaAllowanceByIDCompletedEventArgs e) { if (e.Error != null && !string.IsNullOrEmpty(e.Error.Message)) { Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message)); } else { if (e.Result == null) { allowance = new T_OA_AREAALLOWANCE(); allowance.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowance.T_OA_AREADIFFERENCE = new T_OA_AREADIFFERENCE(); allowance.T_OA_AREADIFFERENCE.AREADIFFERENCEID = areaID; allowance.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; allowance.CREATEDATE = System.DateTime.Now; FormType = FormTypes.New; } else { allowance = e.Result; } this.DataContext = allowance; BindCommbox(); } }
private void StarCopy(T_OA_TRAVELSOLUTIONS solutionitem, T_OA_AREADIFFERENCE area, string strSourceSolutionId) { var checkArea = (from ent in dal.T_OA_AREADIFFERENCE where ent.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == solutionitem.TRAVELSOLUTIONSID && ent.AREACATEGORY == area.AREACATEGORY + "(" + solutionitem.PROGRAMMENAME + ")" select ent).FirstOrDefault(); //复制城市分类 T_OA_AREADIFFERENCE areaNew = new T_OA_AREADIFFERENCE(); if (checkArea != null) { areaNew = checkArea; } else { Utility.CloneEntity(area, areaNew); areaNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); areaNew.AREACATEGORY = area.AREACATEGORY + "(" + solutionitem.PROGRAMMENAME + ")"; areaNew.AREADIFFERENCEID = Guid.NewGuid().ToString(); areaNew.CREATEDATE = DateTime.Now; areaNew.OWNERCOMPANYID = solutionitem.OWNERCOMPANYID; areaNew.CREATECOMPANYID = solutionitem.OWNERCOMPANYID; areaNew.CREATEUSERID = "系统复制"; areaNew.CREATEUSERNAME = "******"; dal.AddToT_OA_AREADIFFERENCE(areaNew);//添加城市分类 dal.SaveChanges(); } //1复制城市分类关联的城市 var cityall = (from ent in dal.T_OA_AREACITY where ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == area.AREADIFFERENCEID select ent).ToList(); foreach (var city in cityall) { var checkCity = (from ent in dal.T_OA_AREACITY where ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == areaNew.AREADIFFERENCEID && ent.CITY == city.CITY select ent).FirstOrDefault(); T_OA_AREACITY citynew = new T_OA_AREACITY(); if (checkCity != null) { citynew = checkCity; } else { Utility.CloneEntity(city, citynew); citynew.AREACITYID = Guid.NewGuid().ToString(); citynew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); citynew.CREATEUSERID = "系统复制"; dal.AddToT_OA_AREACITY(citynew);//添加城市 } } //2.修改补帖分类 查找集团所有补贴 var allowanceOldAll = (from ent in dal.T_OA_TRAVELSOLUTIONS join b in dal.T_OA_AREADIFFERENCE on ent.TRAVELSOLUTIONSID equals b.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID join c in dal.T_OA_AREAALLOWANCE on b.AREADIFFERENCEID equals c.T_OA_AREADIFFERENCE.AREADIFFERENCEID where ent.TRAVELSOLUTIONSID== strSourceSolutionId && b.AREADIFFERENCEID == area.AREADIFFERENCEID select c).ToList(); if (allowanceOldAll != null) { foreach (var allowanceOld in allowanceOldAll) { var checkEnt = (from ent in dal.T_OA_AREAALLOWANCE where ent.POSTLEVEL == allowanceOld.POSTLEVEL && ent.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == solutionitem.TRAVELSOLUTIONSID && ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == areaNew.AREADIFFERENCEID select ent).FirstOrDefault(); if (checkEnt != null)//如果已经设置,直接拷贝并删除旧的 { T_OA_AREAALLOWANCE allowanceNew = new T_OA_AREAALLOWANCE(); Utility.CloneEntity(checkEnt, allowanceNew); allowanceNew.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowanceNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); allowanceNew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); allowanceNew.CREATEDATE = DateTime.Now; allowanceNew.CREATEUSERID = "系统复制"; dal.AddToT_OA_AREAALLOWANCE(allowanceNew); dal.DeleteObject(checkEnt); } else { //如果没有补贴且集团已设置,拷贝 T_OA_AREAALLOWANCE allowanceNew = new T_OA_AREAALLOWANCE(); Utility.CloneEntity(allowanceOld, allowanceNew); allowanceNew.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowanceNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); allowanceNew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); allowanceNew.CREATEDATE = DateTime.Now; allowanceNew.CREATEUSERID = "系统复制集团方案"; dal.AddToT_OA_AREAALLOWANCE(allowanceNew); } } } }
///// <summary> ///// 计算补贴 ///// </summary> ///// <param name="FromReadOnlyDataGrid">是否显示只读的查看Grid</param> //private void TravelAllowance(bool FromReadOnlyDataGrid) //{ // TextBox txtTFSubsidies = new TextBox();//初始化交通补贴控件 // TextBox txtMealSubsidies = new TextBox();//初始化餐费补贴控件 // TextBox txtASubsidies = new TextBox();//初始化住宿费控件 // TextBox txtTranSportcosts = new TextBox();//初始化交通费控件 // TextBox txtOtherCosts = new TextBox();//初始化其他费用控件 // DataGrid dataGrid = new DataGrid(); // if (FromReadOnlyDataGrid)//查看模式下 // { // dataGrid = this.DaGrReadOnly; // } // else // { // dataGrid = this.DaGrEdit; // } // if (dataGrid.ItemsSource != null) // { // T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); // ObservableCollection<T_OA_REIMBURSEMENTDETAIL> objs = dataGrid.ItemsSource as ObservableCollection<T_OA_REIMBURSEMENTDETAIL>; // double total = 0; // int i = 0; // foreach (var obje in objs) // { // i++; // double toodays = 0; // //if (FromReadOnlyDataGrid) // //{ // // if (i > 0) txtTFSubsidies = dataGrid.Columns[10].GetCellContent(obje).FindName("txtTRANSPORTATIONSUBSIDIES") as TextBox;//交通补贴 // // if (i > 0) txtMealSubsidies = dataGrid.Columns[11].GetCellContent(obje).FindName("txtMEALSUBSIDIES") as TextBox;//餐费补贴 // //} // //else // //{ // // if (i >0) txtTFSubsidies = dataGrid.Columns[10].GetCellContent(obje).FindName("txtTRANSPORTATIONSUBSIDIES") as TextBox;//交通补贴 // // if (i >0) txtMealSubsidies = dataGrid.Columns[11].GetCellContent(obje).FindName("txtMEALSUBSIDIES") as TextBox;//餐费补贴 // //} // List<string> list = new List<string> // { // obje.BUSINESSDAYS // }; // if (obje.BUSINESSDAYS != null && !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // double totalHours = System.Convert.ToDouble(list[0]); // toodays = totalHours; // } // double totolDay = toodays;//计算本次出差的总天数 // string cityValue = citysEndList_Golbal[i - 1].Replace(",", "");//目标城市值 // entareaallowance = this.GetAllowanceByCityValue(cityValue); // #region 根据本次出差的总天数,根据天数获取相应的补贴 // if (travelsolutions != null && employeepost != null) // { // txtTFSubsidies = GetTFSubsidiesTextBox(txtTFSubsidies, i, FromReadOnlyDataGrid);//交通补贴控件赋值 // txtTranSportcosts = GetTranSportcostsTextBox(txtTranSportcosts, i,FromReadOnlyDataGrid);//交通费控件赋值 // txtASubsidies = GetASubsidiesTextBox(txtASubsidies, i, FromReadOnlyDataGrid);//住宿费控件赋值 // txtOtherCosts = GetOtherCostsTextBox(txtOtherCosts, i, FromReadOnlyDataGrid);//其他费用控件赋值 // txtMealSubsidies = GetMealSubsidiesTextBox(txtMealSubsidies, i, FromReadOnlyDataGrid);//餐费补贴控件赋值 // if (totolDay <= travelsolutions.MINIMUMINTERVALDAYS.ToInt32())//本次出差总时间小于等于设定天数的报销标准 // { // if (entareaallowance != null) // { // if (txtTFSubsidies != null)//交通补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1" || obje.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 // { // txtTFSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // txtTFSubsidies.Text = (entareaallowance.TRANSPORTATIONSUBSIDIES.ToDouble() * toodays).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtTFSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // if (txtMealSubsidies != null)//餐费补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1")//如果是开会 // { // txtMealSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // txtMealSubsidies.Text = (entareaallowance.MEALSUBSIDIES.ToDouble() * toodays).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtMealSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // } // } // else // { // if (EmployeePostLevel.ToInt32() <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // txtTFSubsidies.Text = "0"; // txtMealSubsidies.Text = "0"; // } // } // } // #endregion // #region 如果出差天数大于设定的最大天数,按驻外标准获取补贴 // if (travelsolutions != null && employeepost != null) // { // TextBox txtTranSportcosts = new TextBox();//初始化交通费控件 // TextBox txtOtherCosts = new TextBox();//初始化其他费用控件 // txtTFSubsidies = GetTFSubsidiesTextBox(txtTFSubsidies, i, FromReadOnlyDataGrid);//交通补贴控件赋值 // txtTranSportcosts = GetTranSportcostsTextBox(txtTranSportcosts, i, FromReadOnlyDataGrid);//交通费控件赋值 // txtASubsidies = GetASubsidiesTextBox(txtASubsidies, i, FromReadOnlyDataGrid);//住宿费控件赋值 // txtOtherCosts = GetOtherCostsTextBox(txtOtherCosts, i, FromReadOnlyDataGrid);//其他费用控件赋值 // txtMealSubsidies = GetMealSubsidiesTextBox(txtMealSubsidies, i, FromReadOnlyDataGrid);//餐费补贴控件赋值 // if (totolDay > travelsolutions.MAXIMUMRANGEDAYS.ToInt32()) // { // if (entareaallowance != null) // { // double DbTranceport = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble(); // double DbMeal = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble(); // double tfSubsidies = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); // double mealSubsidies = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); // if (entareaallowance != null) // { // if (txtTFSubsidies != null)//交通补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1" || obje.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 // { // txtTFSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbTranceport; // double middlemoney = (travelsolutions.MAXIMUMRANGEDAYS.ToDouble() - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * tfSubsidies; // //double lastmoney = (tresult - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble() / 2; // //除以2是因为驻外标准不分餐费和交通补贴,2者合2为一,否则会多加 // double lastmoney = (totolDay - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble() / 2; // txtTFSubsidies.Text = (minmoney + middlemoney + lastmoney).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtTFSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // if (txtMealSubsidies != null)//餐费补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1")//如果是开会 // { // txtMealSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbMeal; // //double middlemoney = (travelsolutions.MAXIMUMRANGEDAYS.ToDouble() - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * mealSubsidies; // double IntMaxDays = travelsolutions.MAXIMUMRANGEDAYS.ToDouble(); // double IntMinDAys = travelsolutions.MINIMUMINTERVALDAYS.ToDouble(); // double middlemoney = (IntMaxDays - IntMinDAys) * mealSubsidies; // //double lastmoney = (tresult - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble(); // //驻外标准:交通费和餐费补贴为一起的,所以除以2 // double lastmoney = (totolDay - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble() / 2; // txtMealSubsidies.Text = (minmoney + middlemoney + lastmoney).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtMealSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // } // } // } // else // { // if (EmployeePostLevel.ToInt32() <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // txtTFSubsidies.Text = "0"; // txtMealSubsidies.Text = "0"; // } // } // } // #endregion // #region 如果出差时间大于设定的最小天数并且小于设定的最大天数的报销标准 // if (travelsolutions != null && employeepost != null) // { // TextBox txtTranSportcosts = new TextBox();//初始化交通费控件 // TextBox txtOtherCosts = new TextBox();//初始化其他费用控件 // txtTFSubsidies = GetTFSubsidiesTextBox(txtTFSubsidies, i, FromReadOnlyDataGrid);//交通补贴控件赋值 // txtTranSportcosts = GetTranSportcostsTextBox(txtTranSportcosts, i, FromReadOnlyDataGrid);//交通费控件赋值 // txtASubsidies = GetASubsidiesTextBox(txtASubsidies, i, FromReadOnlyDataGrid);//住宿费控件赋值 // txtOtherCosts = GetOtherCostsTextBox(txtOtherCosts, i, FromReadOnlyDataGrid);//其他费用控件赋值 // txtMealSubsidies = GetMealSubsidiesTextBox(txtMealSubsidies, i, FromReadOnlyDataGrid);//餐费补贴控件赋值 // if (totolDay >= travelsolutions.MINIMUMINTERVALDAYS.ToInt32() && totolDay <= travelsolutions.MAXIMUMRANGEDAYS.ToInt32()) // { // if (entareaallowance != null) // { // double DbTranceport = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble(); // double DbMeal = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble(); // double tfSubsidies = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); // double mealSubsidies = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); // if (txtTFSubsidies != null)//交通补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1" || obje.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 // { // txtTFSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbTranceport; // double middlemoney = (totolDay - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * tfSubsidies; // txtTFSubsidies.Text = (minmoney + middlemoney).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtTFSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtTFSubsidies.Text = "0"; // txtTFSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // if (txtMealSubsidies != null)//餐费补贴 // { // if (obje.BUSINESSDAYS != null) // { // if (obje.PRIVATEAFFAIR == "1")//如果是私事不予报销 // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = true; // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // } // else if (obje.GOOUTTOMEET == "1")//如果是开会 // { // txtMealSubsidies.Text = "0"; // } // else // { // if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // //最小区间段金额 // double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbMeal; // //中间区间段金额 // double middlemoney = (totolDay - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * mealSubsidies; // txtMealSubsidies.Text = (minmoney + middlemoney).ToString(); // //在正常状态下如果没有获取到补贴(没有对应的城市补贴或其他导致的问题)提示用户是否继续操作 // if (string.IsNullOrWhiteSpace(txtMealSubsidies.Text)) // { // ComfirmWindow com = new ComfirmWindow(); // com.OnSelectionBoxClosed += (obj, result) => // { // txtTranSportcosts.IsReadOnly = true;//交通费 // txtASubsidies.IsReadOnly = true;//住宿标准 // txtOtherCosts.IsReadOnly = true;//其他费用 // }; // if (obje.BUSINESSDAYS != null || !string.IsNullOrEmpty(obje.BUSINESSDAYS)) // { // if (formType == FormTypes.Audit) return; // com.SelectionBox("操作确认", "当前单据没有获取到餐费补贴,是否继续操作?", ComfirmWindow.titlename, ""); // } // } // } // else // { // txtMealSubsidies.Text = "0"; // txtMealSubsidies.IsReadOnly = false; // } // } // } // else//如果天数为null的禁用住宿费控件 // { // txtASubsidies.IsReadOnly = true; // } // } // } // } // else // { // if (EmployeePostLevel.ToInt32() <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 // { // txtTFSubsidies.Text = "0"; // txtMealSubsidies.Text = "0"; // } // } // } // #endregion // total += txtTFSubsidies.Text.ToDouble() + txtMealSubsidies.Text.ToDouble(); // this.txtSubTotal.Text = total.ToString();//总费用 // this.txtChargeApplyTotal.Text = total.ToString(); // Fees = total; // } // CountMoney(); // } //} #endregion #region 住宿费,交通费,其他费用 /// <summary> /// 计算 住宿费,交通费,其他费用 /// </summary> private void CountMoney() { try { TravelTimeCalculation(); double totall = 0; //int i = 0; if (TravelDetailList_Golbal == null) { return; } //住宿费,交通费,其他费用 bool IsPassEd = false;//住宿费是否超标 string str = string.Empty; foreach (var obj in TravelDetailList_Golbal) { if (DaGrEdit.Columns[8].GetCellContent(obj) == null) { return; } if (DaGrEdit.Columns[9].GetCellContent(obj) == null) { return; } if (DaGrEdit.Columns[12].GetCellContent(obj) == null) { return; } //住宿天数 TextBox myDaysTime = DaGrEdit.Columns[5].GetCellContent(obj).FindName("txtTHENUMBEROFNIGHTS") as TextBox; ////交通费txtTRANSPORTCOSTS //TextBox txtToolubsidies = DaGrEdit.Columns[8].GetCellContent(obj).FindName("txtTRANSPORTCOSTS") as TextBox; ////住宿费txtACCOMMODATION //TextBox txtASubsidies = DaGrEdit.Columns[9].GetCellContent(obj).FindName("txtACCOMMODATION") as TextBox; ////交通补贴 //TextBox txtTFSubsidies = DaGrEdit.Columns[10].GetCellContent(obj).FindName("txtTRANSPORTATIONSUBSIDIES") as TextBox; ////餐费补贴 //TextBox txtMealSubsidies = DaGrEdit.Columns[11].GetCellContent(obj).FindName("txtMEALSUBSIDIES") as TextBox; ////其他费用 //TextBox txtOthercosts = DaGrEdit.Columns[12].GetCellContent(obj).FindName("txtOtherCosts") as TextBox; //交通费第8列 TextBox txtToolubsidies = ((TextBox)((StackPanel)DaGrEdit.Columns[8].GetCellContent(obj)).Children.FirstOrDefault()) as TextBox; //住宿费第9列 TextBox txtASubsidies = ((TextBox)((StackPanel)DaGrEdit.Columns[9].GetCellContent(obj)).Children.FirstOrDefault()) as TextBox; //交通补贴第10列 TextBox txtTFSubsidies = ((TextBox)((StackPanel)DaGrEdit.Columns[10].GetCellContent(obj)).Children.FirstOrDefault()) as TextBox; //餐费补贴第11列 TextBox txtMealSubsidies = ((TextBox)((StackPanel)DaGrEdit.Columns[11].GetCellContent(obj)).Children.FirstOrDefault()) as TextBox; //其他费用第12列 TextBox txtOthercosts = ((TextBox)((StackPanel)DaGrEdit.Columns[12].GetCellContent(obj)).Children.FirstOrDefault()) as TextBox; if (txtToolubsidies != null) { if (!string.IsNullOrEmpty(txtToolubsidies.Text)) { totall = totall + txtToolubsidies.Text.ToDouble();//交通费 } } if (txtASubsidies != null) { if (!string.IsNullOrEmpty(txtASubsidies.Text)) { totall = totall + txtASubsidies.Text.ToDouble();//住宿费 } } if (txtTFSubsidies != null) { if (!string.IsNullOrEmpty(txtTFSubsidies.Text)) { totall = totall + txtTFSubsidies.Text.ToDouble();//交通补贴 } } if (txtMealSubsidies != null) { if (!string.IsNullOrEmpty(txtMealSubsidies.Text)) { totall = totall + txtMealSubsidies.Text.ToDouble();// 餐费补贴 } } if (txtOthercosts != null) { if (!string.IsNullOrEmpty(txtOthercosts.Text)) { totall = totall + txtOthercosts.Text.ToDouble(); //其他费用 } } //获取出差补贴 T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); string cityValue = obj.DESTCITY;//目标城市值 //根据城市查出差标准补贴(已根据岗位级别过滤) entareaallowance = this.GetAllowanceByCityValue(cityValue); if (!string.IsNullOrEmpty(obj.BUSINESSDAYS) && obj.BUSINESSDAYS != "0") { //住宿天数 double totaldays = System.Convert.ToDouble(obj.BUSINESSDAYS); obj.THENUMBEROFNIGHTS = totaldays.ToString(); //住宿天数舍弃小数位 decimal days = System.Convert.ToDecimal(obj.BUSINESSDAYS); if (days.ToDouble() == 0.5) { days = 1; } else { days = decimal.Truncate(days); } if (entareaallowance != null) { if (txtASubsidies.Text.ToDouble() > entareaallowance.ACCOMMODATION.ToDouble() * days.ToDouble())//判断住宿费超标 { //文本框标红 txtASubsidies.BorderBrush = new SolidColorBrush(Colors.Red); txtASubsidies.Foreground = new SolidColorBrush(Colors.Red); this.txtAccommodation.Visibility = Visibility.Visible; IsPassEd = true; //this.txtAccommodation.Text = "住宿费超标"; } if (txtASubsidies.Text.ToDouble() <= entareaallowance.ACCOMMODATION.ToDouble() * days.ToDouble()) { if (txtASubsidiesForeBrush != null) { txtASubsidies.Foreground = txtASubsidiesForeBrush; } if (txtASubsidiesBorderBrush != null) { txtASubsidies.BorderBrush = txtASubsidiesBorderBrush; } string StrMessage = ""; StrMessage = this.txtAccommodation.Text; if (string.IsNullOrEmpty(StrMessage)) { this.txtAccommodation.Visibility = Visibility.Collapsed; } } } } //if (obj.ACCOMMODATION != null) totall = totall + Convert.ToDouble(obj.ACCOMMODATION.Value); //住宿补贴 //if (obj.TRANSPORTCOSTS != null) totall = totall + Convert.ToDouble(obj.TRANSPORTCOSTS.Value);//交通费 //if (obj.TRANSPORTATIONSUBSIDIES != null) totall = totall + Convert.ToDouble(obj.TRANSPORTATIONSUBSIDIES.Value);//交通补贴 //if (obj.OTHERCOSTS != null) totall = totall + Convert.ToDouble(obj.OTHERCOSTS.Value);//其他费用 //str =str+System.Environment.NewLine+ "交通费:" + obj.TRANSPORTCOSTS.Value // + " 住宿费:" + Accommodation // + " 其他费用" + obj.OTHERCOSTS.Value // + " 交通补贴" + obj.TRANSPORTATIONSUBSIDIES.Value // + " 住宿补贴" + obj.ACCOMMODATION.Value; //totall = totall // +Convert.ToDouble(obj.TRANSPORTCOSTS.Value)// textTransportcosts.Text.ToDouble() //交通费 // + Accommodation //住宿费 // + Convert.ToDouble(obj.OTHERCOSTS.Value)//textOthercosts.Text.ToDouble() //其他费用 // + Convert.ToDouble(obj.TRANSPORTATIONSUBSIDIES.Value)//txtTFSubsidies.Text.ToDouble() //交通补贴 // + Convert.ToDouble(obj.ACCOMMODATION.Value);//txtMealSubsidies.Text.ToDouble(); //住宿补贴 } if (IsPassEd) { this.txtAccommodation.Text = "住宿费超标"; } else { this.txtAccommodation.Text = string.Empty; this.txtAccommodation.Visibility = Visibility.Collapsed; } txtSubTotal.Text = totall.ToString();//差旅费小计 if (OpenFrom != "FromMVC") { fbCtr.TravelSubject.ApplyMoney = Convert.ToDecimal(totall); } if (fbCtr.totalMoney > 0) { totall = totall + Convert.ToDouble(fbCtr.totalMoney); } txtChargeApplyTotal.Text = totall.ToString(); //出差报销费用合计,包括费用报销控件中的费用 } catch (Exception ex) { Logger.Current.Log(ex.Message, Category.Debug, Priority.Low); ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("ERRORINFO"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation); } }
/// <summary> /// 计算补贴,在出差表格还没有loadingrow之前获取控件会报错。 /// </summary> /// <param name="FromReadOnlyDataGrid">是否显示只读的查看Grid</param> private void TravelAllowance(bool FromReadOnlyDataGrid) { try { DataGrid dataGrid = new DataGrid(); if (FromReadOnlyDataGrid)//查看模式下 { dataGrid = this.DaGrReadOnly; } else { dataGrid = this.DaGrEdit; } if (TravelDetailList_Golbal != null) { T_OA_AREAALLOWANCE entareaallowance = new T_OA_AREAALLOWANCE(); int i = 0; foreach (var detail in TravelDetailList_Golbal) { double toodays = 0; List<string> list = new List<string> { detail.BUSINESSDAYS }; if (detail.BUSINESSDAYS != null && !string.IsNullOrEmpty(detail.BUSINESSDAYS)) { double totalHours = System.Convert.ToDouble(list[0]); toodays = totalHours; } double totolDay = toodays;//计算本次出差的总天数 string cityValue = detail.DESTCITY.Replace(",", "");//目标城市值 entareaallowance = this.GetAllowanceByCityValue(cityValue); if (travelsolutions != null && employeepost != null) { if (EmployeePostLevel.ToInt32() <= travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //textStandards.Text = textStandards.Text +"报销人的岗位级别小于等于I级,无交通补贴及住宿补贴"; detail.TRANSPORTATIONSUBSIDIES = 0; detail.MEALSUBSIDIES = 0; } else { #region 根据本次出差的总天数,根据天数获取相应的补贴 if (totolDay <= travelsolutions.MINIMUMINTERVALDAYS.ToInt32())//本次出差总时间小于等于设定天数的报销标准 { if (entareaallowance != null) { if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.TRANSPORTATIONSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 { detail.TRANSPORTATIONSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { detail.TRANSPORTATIONSUBSIDIES = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES.ToDouble() * toodays); } else { detail.TRANSPORTATIONSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { detail.TRANSPORTATIONSUBSIDIES = 0; } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { detail.MEALSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { detail.MEALSUBSIDIES = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES.ToDouble() * toodays); } else { detail.MEALSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { //txtASubsidies.IsReadOnly = true; } } } #endregion #region 如果出差天数大于设定的最大天数,按驻外标准获取补贴 else if (totolDay > travelsolutions.MAXIMUMRANGEDAYS.ToInt32()) { if (entareaallowance != null) { double DbTranceport = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble(); double DbMeal = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble(); //区间补贴标准 区间报销比例(50)/100 double tfSubsidies = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); double mealSubsidies = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); if (entareaallowance != null) { if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.TRANSPORTATIONSUBSIDIES = 0; detail.TRANSPORTCOSTS = 0; } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 { detail.TRANSPORTATIONSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //可全额报销天数*每天的补贴 double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbTranceport; //区间可以报销天数*报销比例50% double middlemoney = (travelsolutions.MAXIMUMRANGEDAYS.ToDouble() - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * tfSubsidies; //除以2是因为驻外标准不分餐费和交通补贴,2者合2为一,否则会多加 (餐补及交通补贴都按驻外标准计算) double lastmoney = (totolDay - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble() / 2; detail.TRANSPORTATIONSUBSIDIES = Convert.ToDecimal(minmoney + middlemoney + lastmoney); } else { detail.TRANSPORTATIONSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { detail.MEALSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbMeal; //double middlemoney = (travelsolutions.MAXIMUMRANGEDAYS.ToDouble() - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * mealSubsidies; double IntMaxDays = travelsolutions.MAXIMUMRANGEDAYS.ToDouble(); double IntMinDAys = travelsolutions.MINIMUMINTERVALDAYS.ToDouble(); double middlemoney = (IntMaxDays - IntMinDAys) * mealSubsidies; //double lastmoney = (tresult - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble(); //驻外标准:交通费和餐费补贴为一起的,所以除以2 double lastmoney = (totolDay - travelsolutions.MAXIMUMRANGEDAYS.ToDouble()) * entareaallowance.OVERSEASSUBSIDIES.ToDouble() / 2; detail.MEALSUBSIDIES = Convert.ToDecimal(minmoney + middlemoney + lastmoney); } else { detail.MEALSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { } } } } #endregion #region 如果出差时间大于设定的最小天数并且小于设定的最大天数的报销标准 else if (totolDay >= travelsolutions.MINIMUMINTERVALDAYS.ToInt32() && totolDay <= travelsolutions.MAXIMUMRANGEDAYS.ToInt32()) { if (entareaallowance != null) { double DbTranceport = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble(); double DbMeal = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble(); double tfSubsidies = Convert.ToDecimal(entareaallowance.TRANSPORTATIONSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); double mealSubsidies = Convert.ToDecimal(entareaallowance.MEALSUBSIDIES).ToDouble() * (Convert.ToDecimal(travelsolutions.INTERVALRATIO).ToDouble() / 100); if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.TRANSPORTATIONSUBSIDIES = 0; detail.TRANSPORTCOSTS = 0; } else if (detail.GOOUTTOMEET == "1" || detail.COMPANYCAR == "1")//如果是开会或者是公司派车,交通费没有 { detail.TRANSPORTATIONSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbTranceport; double middlemoney = (totolDay - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * tfSubsidies; detail.TRANSPORTATIONSUBSIDIES = Convert.ToDecimal(minmoney + middlemoney); } else { detail.TRANSPORTATIONSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { //txtASubsidies.IsReadOnly = true; } if (detail.BUSINESSDAYS != null) { if (detail.PRIVATEAFFAIR == "1")//如果是私事不予报销 { detail.MEALSUBSIDIES = 0; } else if (detail.GOOUTTOMEET == "1")//如果是开会 { detail.MEALSUBSIDIES = 0; } else { if (EmployeePostLevel.ToInt32() > travelsolutions.NOALLOWANCEPOSTLEVEL.ToInt32())//当前用户的岗位级别小于副部长及以上级别的补贴标准 { //最小区间段金额 double minmoney = travelsolutions.MINIMUMINTERVALDAYS.ToDouble() * DbMeal; //中间区间段金额 double middlemoney = (totolDay - travelsolutions.MINIMUMINTERVALDAYS.ToDouble()) * mealSubsidies; detail.MEALSUBSIDIES = Convert.ToDecimal(minmoney + middlemoney); } else { detail.MEALSUBSIDIES = 0; } } } else//如果天数为null的禁用住宿费控件 { //txtASubsidies.IsReadOnly = true; } } } #endregion } } //交通补贴, if (detail.TRANSPORTATIONSUBSIDIES != null) { try { //交通补贴,在grid没有绑定之前获取不到。 TextBox txtTFSubsidies = DaGrEdit.Columns[10].GetCellContent(detail).FindName("txtTRANSPORTATIONSUBSIDIES") as TextBox; if (txtTFSubsidies != null) { txtTFSubsidies.Text = detail.TRANSPORTATIONSUBSIDIES.ToString(); } } catch (Exception ex) { Utility.SetLog(ex.ToString()); } } //餐费补贴 if (detail.MEALSUBSIDIES != null) { try { //餐费补贴,在grid没有绑定之前获取不到。 TextBox txtMealSubsidies = DaGrEdit.Columns[11].GetCellContent(detail).FindName("txtMEALSUBSIDIES") as TextBox; if (txtMealSubsidies != null) { txtMealSubsidies.Text = detail.MEALSUBSIDIES.ToString(); } } catch (Exception ex) { Utility.SetLog(ex.ToString()); } } //Fees = total; i++; } CountMoney(); } } catch (Exception ex) { Utility.SetLog(ex.ToString()); ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), ex.ToString(), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation); } }
//停止跳过 #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); } }
private void StarCopy(T_OA_TRAVELSOLUTIONS solutionitem, T_OA_AREADIFFERENCE area, string strSourceSolutionId) { var checkArea = (from ent in dal.T_OA_AREADIFFERENCE where ent.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == solutionitem.TRAVELSOLUTIONSID && ent.AREACATEGORY == area.AREACATEGORY + "(" + solutionitem.PROGRAMMENAME + ")" select ent).FirstOrDefault(); //复制城市分类 T_OA_AREADIFFERENCE areaNew = new T_OA_AREADIFFERENCE(); if (checkArea != null) { areaNew = checkArea; } else { Utility.CloneEntity(area, areaNew); areaNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); areaNew.AREACATEGORY = area.AREACATEGORY + "(" + solutionitem.PROGRAMMENAME + ")"; areaNew.AREADIFFERENCEID = Guid.NewGuid().ToString(); areaNew.CREATEDATE = DateTime.Now; areaNew.OWNERCOMPANYID = solutionitem.OWNERCOMPANYID; areaNew.CREATECOMPANYID = solutionitem.OWNERCOMPANYID; areaNew.CREATEUSERID = "系统复制"; areaNew.CREATEUSERNAME = "******"; dal.AddToT_OA_AREADIFFERENCE(areaNew);//添加城市分类 dal.SaveChanges(); } //1复制城市分类关联的城市 var cityall = (from ent in dal.T_OA_AREACITY where ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == area.AREADIFFERENCEID select ent).ToList(); foreach (var city in cityall) { var checkCity = (from ent in dal.T_OA_AREACITY where ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == areaNew.AREADIFFERENCEID && ent.CITY == city.CITY select ent).FirstOrDefault(); T_OA_AREACITY citynew = new T_OA_AREACITY(); if (checkCity != null) { citynew = checkCity; } else { Utility.CloneEntity(city, citynew); citynew.AREACITYID = Guid.NewGuid().ToString(); citynew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); citynew.CREATEUSERID = "系统复制"; dal.AddToT_OA_AREACITY(citynew);//添加城市 } } //2.修改补帖分类 查找集团所有补贴 var allowanceOldAll = (from ent in dal.T_OA_TRAVELSOLUTIONS join b in dal.T_OA_AREADIFFERENCE on ent.TRAVELSOLUTIONSID equals b.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID join c in dal.T_OA_AREAALLOWANCE on b.AREADIFFERENCEID equals c.T_OA_AREADIFFERENCE.AREADIFFERENCEID where ent.TRAVELSOLUTIONSID == strSourceSolutionId && b.AREADIFFERENCEID == area.AREADIFFERENCEID select c).ToList(); if (allowanceOldAll != null) { foreach (var allowanceOld in allowanceOldAll) { var checkEnt = (from ent in dal.T_OA_AREAALLOWANCE where ent.POSTLEVEL == allowanceOld.POSTLEVEL && ent.T_OA_TRAVELSOLUTIONS.TRAVELSOLUTIONSID == solutionitem.TRAVELSOLUTIONSID && ent.T_OA_AREADIFFERENCE.AREADIFFERENCEID == areaNew.AREADIFFERENCEID select ent).FirstOrDefault(); if (checkEnt != null)//如果已经设置,直接拷贝并删除旧的 { T_OA_AREAALLOWANCE allowanceNew = new T_OA_AREAALLOWANCE(); Utility.CloneEntity(checkEnt, allowanceNew); allowanceNew.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowanceNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); allowanceNew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); allowanceNew.CREATEDATE = DateTime.Now; allowanceNew.CREATEUSERID = "系统复制"; dal.AddToT_OA_AREAALLOWANCE(allowanceNew); dal.DeleteObject(checkEnt); } else { //如果没有补贴且集团已设置,拷贝 T_OA_AREAALLOWANCE allowanceNew = new T_OA_AREAALLOWANCE(); Utility.CloneEntity(allowanceOld, allowanceNew); allowanceNew.AREAALLOWANCEID = Guid.NewGuid().ToString(); allowanceNew.T_OA_TRAVELSOLUTIONSReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_TRAVELSOLUTIONS", "TRAVELSOLUTIONSID", solutionitem.TRAVELSOLUTIONSID); allowanceNew.T_OA_AREADIFFERENCEReference.EntityKey = new System.Data.EntityKey("SMT_OA_EFModelContext.T_OA_AREADIFFERENCE", "AREADIFFERENCEID", areaNew.AREADIFFERENCEID); allowanceNew.CREATEDATE = DateTime.Now; allowanceNew.CREATEUSERID = "系统复制集团方案"; dal.AddToT_OA_AREAALLOWANCE(allowanceNew); } } } }