Ejemplo n.º 1
0
 private void myChkBoxCar_Checked(object sender, RoutedEventArgs e)
 {
     try
     {
         CheckBox chk = sender as CheckBox;
         if (chk.IsChecked.Value)
         {
             T_OA_REIMBURSEMENTDETAIL btlist = (T_OA_REIMBURSEMENTDETAIL)chk.DataContext;
             if (btlist != null)
             {
                 var ents = from ent in TravelDetailList_Golbal
                            where ent.REIMBURSEMENTDETAILID == btlist.REIMBURSEMENTDETAILID
                            select ent;
                 if (ents.Count() > 0)
                 {
                     int k = TravelDetailList_Golbal.IndexOf(ents.FirstOrDefault());
                     TravelDetailList_Golbal[k].COMPANYCAR = "1";
                     ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("您已勾选公司派车,无交通补贴!"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                 }
             }
         }
     }
     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);
     }
 }
Ejemplo n.º 2
0
        private void txtDEPARTURECITY_SelectClick(object sender, EventArgs e)
        {
            SearchCity   txt         = (SearchCity)sender;
            AreaSortCity SelectCity  = new AreaSortCity();
            int          SelectIndex = 0;

            if (DaGrEdit.SelectedItem != null)
            {
                SelectIndex = DaGrEdit.SelectedIndex;//选择的行数,选择的行数也就是出发城市的位置,从0开始算起
            }
            else
            {
                return;
            }
            SelectCity.SelectedClicked += (obj, ea) =>
            {
                txt.TxtSelectedCity.Text = SelectCity.Result.Keys.FirstOrDefault();
                if (DaGrEdit.SelectedItem != null)
                {
                    if (DaGrEdit.Columns[1].GetCellContent(DaGrEdit.SelectedItem) != null)
                    {
                        T_OA_REIMBURSEMENTDETAIL Detail = DaGrEdit.SelectedItem as T_OA_REIMBURSEMENTDETAIL;
                        SearchCity myCitys     = DaGrEdit.Columns[1].GetCellContent(DaGrEdit.SelectedItem).FindName("txtDEPARTURECITY") as SearchCity; //出发城市
                        SearchCity mystartCity = DaGrEdit.Columns[3].GetCellContent(DaGrEdit.SelectedItem).FindName("txtTARGETCITIES") as SearchCity;  //目标城市

                        if (TravelDetailList_Golbal.Count > 1)
                        {
                            if (SelectCity.Result.Keys.FirstOrDefault().Trim() == TravelDetailList_Golbal[SelectIndex].DESTCITY.Trim())
                            {
                                myCitys.TxtSelectedCity.Text = string.Empty;
                                ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("出发城市和目标城市不能相同"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                                return;
                            }
                        }
                        //赋值
                        TravelDetailList_Golbal[SelectIndex].DEPCITY = SelectCity.Result.Values.FirstOrDefault().Trim();
                    }
                }
                StandardsMethod(SelectIndex);//显示选中的城市的出差标准
                //计算并给实体赋值
                SetTraveValueAndFBChargeValue();
            };
            var windows = SMT.SAAS.Controls.Toolkit.Windows.ProgramManager.ShowProgram(Utility.GetResourceStr("CITY"), "", "123", SelectCity, false, false, null);

            if (SelectCity is AreaSortCity)
            {
                (SelectCity as AreaSortCity).Close += (o, args) =>
                {
                    windows.Close();
                };
            }
            SelectCity.GetSelectedCities.Visibility = Visibility.Collapsed;//隐藏已选中城市的Border
        }
Ejemplo n.º 3
0
        private bool CheckIsFinishedCitys()
        {
            bool   IsResult     = true;
            string StrStartDt   = "";
            string EndDt        = "";
            string StrStartTime = "";
            string StrEndTime   = "";

            foreach (object obje in DaGrEdit.ItemsSource)
            {
                TrDetail = new T_OA_REIMBURSEMENTDETAIL();
                SearchCity myCitys = DaGrEdit.Columns[3].GetCellContent(obje).FindName("txtTARGETCITIES") as SearchCity;

                TrDetail.T_OA_TRAVELREIMBURSEMENT = TravelReimbursement_Golbal;
                DateTimePicker StartDate = DaGrEdit.Columns[0].GetCellContent(obje).FindName("StartTime") as DateTimePicker;
                DateTimePicker EndDate   = DaGrEdit.Columns[2].GetCellContent(obje).FindName("EndTime") as DateTimePicker;

                TravelDictionaryComboBox ToolType  = ((TravelDictionaryComboBox)((StackPanel)DaGrEdit.Columns[6].GetCellContent(obje)).Children.FirstOrDefault()) as TravelDictionaryComboBox;
                TravelDictionaryComboBox ToolLevel = ((TravelDictionaryComboBox)((StackPanel)DaGrEdit.Columns[7].GetCellContent(obje)).Children.FirstOrDefault()) as TravelDictionaryComboBox;

                StrStartDt   = StartDate.Value.Value.ToString("d");                         //开始日期
                EndDt        = EndDate.Value.Value.ToString("d");                           //结束日期
                StrStartTime = StartDate.Value.Value.ToString("HH:mm");                     //开始时间
                StrEndTime   = EndDate.Value.Value.ToString("HH:mm");                       //结束时间

                if (string.IsNullOrEmpty(StrStartDt) || string.IsNullOrEmpty(StrStartTime)) //开始日期不能为空
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "开始时间的年月日或时分不能为空", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }

                if (string.IsNullOrEmpty(EndDt) || string.IsNullOrEmpty(StrEndTime))//结束日期不能为空
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "结束时间的年月日或时分不能为空", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }
                DateTime DtStart = System.Convert.ToDateTime(StrStartDt + " " + StrStartTime);
                DateTime DtEnd   = System.Convert.ToDateTime(EndDt + " " + StrEndTime);
                if (DtStart >= DtEnd)
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "开始时间不能大于等于结束时间", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }


                if (ToolType.SelectedIndex <= 0)//交通工具类型
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("STRINGNOTNULL", "TYPEOFTRAVELTOOLS"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }
            }
            return(IsResult);
        }
Ejemplo n.º 4
0
 private void myChkBox_Unchecked(object sender, RoutedEventArgs e)
 {
     try
     {
         CheckBox chk = sender as CheckBox;
         if (!chk.IsChecked.Value)
         {
             T_OA_REIMBURSEMENTDETAIL btlist = (T_OA_REIMBURSEMENTDETAIL)chk.DataContext;
             if (btlist != null)
             {
                 btlist.PRIVATEAFFAIR = "0";
             }
         }
     }
     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);
     }
 }
Ejemplo n.º 5
0
        private void myChkBoxCar_Unchecked(object sender, RoutedEventArgs e)
        {
            CheckBox chk = sender as CheckBox;

            if (!chk.IsChecked.Value)
            {
                T_OA_REIMBURSEMENTDETAIL btlist = (T_OA_REIMBURSEMENTDETAIL)chk.DataContext;
                if (btlist != null)
                {
                    var ents = from ent in TravelDetailList_Golbal
                               where ent.REIMBURSEMENTDETAILID == btlist.REIMBURSEMENTDETAILID
                               select ent;
                    if (ents.Count() > 0)
                    {
                        int k = TravelDetailList_Golbal.IndexOf(ents.FirstOrDefault());
                        TravelDetailList_Golbal[k].COMPANYCAR = "0";
                    }
                }
            }
        }
Ejemplo n.º 6
0
        private void txtTARGETCITIES_SelectClick(object sender, EventArgs e)
        {
            SearchCity   txt         = (SearchCity)sender;
            AreaSortCity SelectCity  = new AreaSortCity();
            int          SelectIndex = 0;

            if (DaGrEdit.SelectedItem != null)
            {
                SelectIndex = DaGrEdit.SelectedIndex;//选择的行数,选择的行数也就是目的城市的位置,从0开始算起
            }
            else
            {
                return;
            }
            SelectCity.SelectedClicked += (obj, ea) =>
            {
                txt.TxtSelectedCity.Text = SelectCity.Result.Keys.FirstOrDefault();

                if (DaGrEdit.Columns[3].GetCellContent(DaGrEdit.SelectedItem) != null)
                {
                    T_OA_REIMBURSEMENTDETAIL detailEntity = TravelDetailList_Golbal[SelectIndex];
                    SearchCity myCitys     = DaGrEdit.Columns[3].GetCellContent(DaGrEdit.SelectedItem).FindName("txtTARGETCITIES") as SearchCity;
                    SearchCity mystartCity = DaGrEdit.Columns[1].GetCellContent(DaGrEdit.SelectedItem).FindName("txtDEPARTURECITY") as SearchCity;
                    //如果出发城市为空
                    if (string.IsNullOrEmpty(detailEntity.DEPCITY))
                    {
                        txt.TxtSelectedCity.Text = string.Empty;
                        ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("请先选择出发城市"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                        return;
                    }
                    if (TravelDetailList_Golbal.Count > 1)    //如果是非当天往返,判断出发城市目标城市是否相同
                    {
                        if (detailEntity.DEPCITY.Trim() == SelectCity.Result.Keys.FirstOrDefault().ToString())
                        {
                            myCitys.TxtSelectedCity.Text = string.Empty;
                            ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("出发城市和目标城市不能相同"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                            return;
                        }
                    }
                    //如果选择的是中间的记录,赋值并修改下一行记录的出发城市
                    if (SelectIndex >= 0 && SelectIndex < TravelDetailList_Golbal.Count - 1)  //selectIndex从1开始
                    {
                        //修改本行到达城市
                        TravelDetailList_Golbal[SelectIndex].DESTCITY = SelectCity.Result.Values.FirstOrDefault().ToString();
                        //修改下一行的出发城市
                        TravelDetailList_Golbal[SelectIndex + 1].DEPCITY = SelectCity.Result.Values.FirstOrDefault().ToString();
                        SearchCity mystarteachCity = DaGrEdit.Columns[1].GetCellContent(TravelDetailList_Golbal[SelectIndex + 1]).FindName("txtDEPARTURECITY") as SearchCity;
                        mystarteachCity.TxtSelectedCity.Text = GetCityName(TravelDetailList_Golbal[SelectIndex + 1].DEPCITY);
                    }
                    if (TravelDetailList_Golbal.Count == (SelectIndex + 1))    //选择的是最后一行的结束城市
                    {
                        TravelDetailList_Golbal[SelectIndex].DESTCITY = SelectCity.Result.Values.FirstOrDefault().ToString();
                    }
                }
                StandardsMethod(SelectIndex);//显示选中的城市的出差标准
                //计算并给实体赋值
                SetTraveValueAndFBChargeValue();
                DaGrEdit.ItemsSource = TravelDetailList_Golbal;
            };
            var windows = SMT.SAAS.Controls.Toolkit.Windows.ProgramManager.ShowProgram(Utility.GetResourceStr("CITY"), "", "123", SelectCity, false, false, null);

            if (SelectCity is AreaSortCity)
            {
                (SelectCity as AreaSortCity).Close += (o, args) =>
                {
                    windows.Close();
                };
            }
            SelectCity.GetSelectedCities.Visibility = Visibility.Collapsed;//隐藏已选中城市的Border
        }
Ejemplo n.º 7
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);
            }
        }
Ejemplo n.º 8
0
        /// <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);
            }
        }
Ejemplo n.º 10
0
        /// <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);
            }
        }
        private bool CheckIsFinishedCitys()
        {
            bool IsResult = true;
            string StrStartDt = "";
            string EndDt = "";
            string StrStartTime = "";
            string StrEndTime = "";
            foreach (object obje in DaGrEdit.ItemsSource)
            {
                TrDetail = new T_OA_REIMBURSEMENTDETAIL();
                SearchCity myCitys = DaGrEdit.Columns[3].GetCellContent(obje).FindName("txtTARGETCITIES") as SearchCity;

                TrDetail.T_OA_TRAVELREIMBURSEMENT = TravelReimbursement_Golbal;
                DateTimePicker StartDate = DaGrEdit.Columns[0].GetCellContent(obje).FindName("StartTime") as DateTimePicker;
                DateTimePicker EndDate = DaGrEdit.Columns[2].GetCellContent(obje).FindName("EndTime") as DateTimePicker;

                TravelDictionaryComboBox ToolType = ((TravelDictionaryComboBox)((StackPanel)DaGrEdit.Columns[6].GetCellContent(obje)).Children.FirstOrDefault()) as TravelDictionaryComboBox;
                TravelDictionaryComboBox ToolLevel = ((TravelDictionaryComboBox)((StackPanel)DaGrEdit.Columns[7].GetCellContent(obje)).Children.FirstOrDefault()) as TravelDictionaryComboBox;

                StrStartDt = StartDate.Value.Value.ToString("d");//开始日期
                EndDt = EndDate.Value.Value.ToString("d");//结束日期
                StrStartTime = StartDate.Value.Value.ToString("HH:mm");//开始时间
                StrEndTime = EndDate.Value.Value.ToString("HH:mm");//结束时间

                if (string.IsNullOrEmpty(StrStartDt) || string.IsNullOrEmpty(StrStartTime))//开始日期不能为空
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "开始时间的年月日或时分不能为空", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }

                if (string.IsNullOrEmpty(EndDt) || string.IsNullOrEmpty(StrEndTime))//结束日期不能为空
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "结束时间的年月日或时分不能为空", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }
                DateTime DtStart = System.Convert.ToDateTime(StrStartDt + " " + StrStartTime);
                DateTime DtEnd = System.Convert.ToDateTime(EndDt + " " + StrEndTime);
                if (DtStart >= DtEnd)
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), "开始时间不能大于等于结束时间", Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }


                if (ToolType.SelectedIndex <= 0)//交通工具类型
                {
                    ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("TIPS"), Utility.GetResourceStr("STRINGNOTNULL", "TYPEOFTRAVELTOOLS"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Exclamation);
                    IsResult = false;
                }
            }
            return IsResult;
        }
        void btnNew_Click(object sender, RoutedEventArgs e)
        {
            if (!CheckIsFinishedCitys())
            {
                return;
            }

            BtnNewButton = true;
            int i = 0;
            T_OA_REIMBURSEMENTDETAIL NewDetail = new T_OA_REIMBURSEMENTDETAIL();
            NewDetail.REIMBURSEMENTDETAILID = Guid.NewGuid().ToString();

            if (formType != FormTypes.New)
            {
                if (TravelDetailList_Golbal.Count() > 0)
                {
                    if (TravelDetailList_Golbal.LastOrDefault().DESTCITY == TravelDetailList_Golbal.FirstOrDefault().DEPCITY)
                    {
                        MessageBox.Show("请修改最后一条记录的到达城市后再新增记录!");
                        return;
                    }
                    //将原有记录的最后一条记录的目的城市作为出发城市。
                    //NewDetail.DEPCITY = SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(TrList.LastOrDefault<T_OA_REIMBURSEMENTDETAIL>().DESTCITY);
                    if (TravelDetailList_Golbal.LastOrDefault<T_OA_REIMBURSEMENTDETAIL>() != null)
                    {
                        //默认出发城市为上一条记录的到达城市
                        NewDetail.DEPCITY = TravelDetailList_Golbal.LastOrDefault<T_OA_REIMBURSEMENTDETAIL>().DESTCITY;
                        //默认出发日期为上一条记录的结束时间+1天
                        NewDetail.STARTDATE = TravelDetailList_Golbal.LastOrDefault<T_OA_REIMBURSEMENTDETAIL>().ENDDATE.Value.AddDays(1);
                        //默认结束城市为出差出发城市
                        NewDetail.DESTCITY = TravelDetailList_Golbal.FirstOrDefault<T_OA_REIMBURSEMENTDETAIL>().DEPCITY;
                        //默认结束日期为出发时间+1
                        NewDetail.ENDDATE = NewDetail.STARTDATE.Value.AddDays(1);
                    }
                }
                NewDetail.TYPEOFTRAVELTOOLS = "3";//默认乘坐交通工具为火车
                NewDetail.TAKETHETOOLLEVEL = "1";//默认交通工具级别为硬卧
                //NewDetail.ENDDATE = DateTime.Now;
                TravelDetailList_Golbal.Add(NewDetail);
                //禁用所有开始城市选择控件?
                foreach (Object obje in DaGrEdit.ItemsSource)
                {
                    if (DaGrEdit.Columns[1].GetCellContent(obje) != null)
                    {
                        SearchCity myCity = DaGrEdit.Columns[1].GetCellContent(obje).FindName("txtDEPARTURECITY") as SearchCity;

                        if (myCity != null)
                        {
                            myCity.IsEnabled = false;
                            ((DataGridCell)((StackPanel)myCity.Parent).Parent).IsEnabled = false;
                        }
                    }
                }
            }

            int lastIndex = TravelDetailList_Golbal.Count() - 1;
            StandardsMethod(lastIndex);//显示选中的城市的出差标准
            //计算并给实体赋值
            SetTraveValueAndFBChargeValue();
            DisAbleLastTxtASubsidies();
        }
Ejemplo n.º 13
0
        void btnNew_Click(object sender, RoutedEventArgs e)
        {
            if (!CheckIsFinishedCitys())
            {
                return;
            }

            BtnNewButton = true;
            int i = 0;
            T_OA_REIMBURSEMENTDETAIL NewDetail = new T_OA_REIMBURSEMENTDETAIL();

            NewDetail.REIMBURSEMENTDETAILID = Guid.NewGuid().ToString();

            if (formType != FormTypes.New)
            {
                if (TravelDetailList_Golbal.Count() > 0)
                {
                    if (TravelDetailList_Golbal.LastOrDefault().DESTCITY == TravelDetailList_Golbal.FirstOrDefault().DEPCITY)
                    {
                        MessageBox.Show("请修改最后一条记录的到达城市后再新增记录!");
                        return;
                    }
                    //将原有记录的最后一条记录的目的城市作为出发城市。
                    //NewDetail.DEPCITY = SMT.SaaS.FrameworkUI.Common.Utility.GetCityName(TrList.LastOrDefault<T_OA_REIMBURSEMENTDETAIL>().DESTCITY);
                    if (TravelDetailList_Golbal.LastOrDefault <T_OA_REIMBURSEMENTDETAIL>() != null)
                    {
                        //默认出发城市为上一条记录的到达城市
                        NewDetail.DEPCITY = TravelDetailList_Golbal.LastOrDefault <T_OA_REIMBURSEMENTDETAIL>().DESTCITY;
                        //默认出发日期为上一条记录的结束时间+1天
                        NewDetail.STARTDATE = TravelDetailList_Golbal.LastOrDefault <T_OA_REIMBURSEMENTDETAIL>().ENDDATE.Value.AddDays(1);
                        //默认结束城市为出差出发城市
                        NewDetail.DESTCITY = TravelDetailList_Golbal.FirstOrDefault <T_OA_REIMBURSEMENTDETAIL>().DEPCITY;
                        //默认结束日期为出发时间+1
                        NewDetail.ENDDATE = NewDetail.STARTDATE.Value.AddDays(1);
                    }
                }
                NewDetail.TYPEOFTRAVELTOOLS = "3"; //默认乘坐交通工具为火车
                NewDetail.TAKETHETOOLLEVEL  = "1"; //默认交通工具级别为硬卧
                //NewDetail.ENDDATE = DateTime.Now;
                TravelDetailList_Golbal.Add(NewDetail);
                //禁用所有开始城市选择控件?
                foreach (Object obje in DaGrEdit.ItemsSource)
                {
                    if (DaGrEdit.Columns[1].GetCellContent(obje) != null)
                    {
                        SearchCity myCity = DaGrEdit.Columns[1].GetCellContent(obje).FindName("txtDEPARTURECITY") as SearchCity;

                        if (myCity != null)
                        {
                            myCity.IsEnabled = false;
                            ((DataGridCell)((StackPanel)myCity.Parent).Parent).IsEnabled = false;
                        }
                    }
                }
            }

            int lastIndex = TravelDetailList_Golbal.Count() - 1;

            StandardsMethod(lastIndex);//显示选中的城市的出差标准
            //计算并给实体赋值
            SetTraveValueAndFBChargeValue();
            DisAbleLastTxtASubsidies();
        }