Example #1
0
        //停止跳过

        #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);
            }
        }