예제 #1
0
        public void Delete(string RequestID, string Type, string rowIndex)
        {
            string sqldel = "";

            if (Type == "T")
            {
                sqldel += "select * from Eflow where RequestID='" + RequestID + "' and [Type]='T';";
                sqldel += "select * from ETravel where ID='" + RequestID + "';";
                sqldel += "select * from ETraveleDetail where [No]='" + RequestID + "';";
                //sqldel += "delete from Eflow where RequestID='" + RequestID + "' and [Type]='T';";
                //sqldel += "delete from ETravel where ID='" + RequestID + "';";
                //sqldel += "delete from ETraveleDetail where [No]='" + RequestID + "';";
                sqldel += "update ETravel set Void=1 where ID='" + RequestID + "';";
            }
            else if (Type == "G")
            {
                sqldel += "select * from Eflow where RequestID='" + RequestID + "' and [Type]='G';";
                sqldel += "select * from Ecommon where ID='" + RequestID + "';";
                sqldel += "select * from EeommonDetail where [No]='" + RequestID + "';";
                //sqldel += "delete from Eflow where RequestID='" + RequestID + "' and [Type]='G';";
                //sqldel += "delete from Ecommon where ID='" + RequestID + "';";
                //sqldel += "delete from EeommonDetail where [No]='" + RequestID + "';";
                sqldel += "update Ecommon set Void=1 where ID='" + RequestID + "';";
            }
            cs.DBCommand dbc   = new cs.DBCommand();
            string       sqlre = dbc.UpdateData("eReimbursement", sqldel, "Update");
            //X.AddScript("Store1.removeAt(" + rowIndex + ");Store1.load();");
        }
예제 #2
0
        protected bool SaveDetail(string detailjson)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<DetailExpense> Details = ser.Deserialize<List<DetailExpense>>(detailjson);

            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //删除现有数据
            string deletesql = "delete from ETraveleDetail where [No]='" + hdTravelRequestID.Value.ToString() + "'";
            string newid1 = dbc.UpdateData("eReimbursement", deletesql, "Update");
            foreach (DetailExpense detail in Details)
            {
                if (newid1 == "-1")
                {
                    ErrorHandle("Data Error.");
                    return false;
                }
                //新增
                string word = "[No],[Tocity],[AccountName],[AccountCode],[AccountDes],[Cur],[Pamount],[Camount],[TSation],[Createdby],[CreadedDate],[Tdate],[Department1]";
                string value = "";
                value += "'" + hdTravelRequestID.Value.ToString() + "',";
                value += "'" + detail.Tocity + "',";
                value += "'" + detail.AccountName + "',";
                value += "'" + detail.AccountCode + "',";
                value += "'" + detail.AccountDes.Replace("'", "''") + "',";
                value += "'" + detail.Cur + "',";
                value += detail.Pamount == "" ? "null," : detail.Pamount + ",";
                value += detail.Camount == "" ? "null," : detail.Camount + ",";
                value += "'" + detail.TSation + "',";
                value += "'" + cbxOwner.Value.ToString() + "',";//edit
                value += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                value += detail.Tdate == "" ? "null" : "'" + detail.Tdate + "',";
                value += "'" + detail.Department1 + "'";

                string updatesql = "insert into ETraveleDetail (" + word + ") values(" + value + ");select [ID]=@@IDENTITY from ETraveleDetail";

                string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
                if (newid == "-1")
                {
                    ErrorHandle("Data Error."); return false;
                }
            }
            return true;
        }
예제 #3
0
        protected bool SaveDetail(string detail, string header0string, string header1string, string header2string, string Cur, string dept)
        {
            cs.DBCommand dbc = new cs.DBCommand();
            //删除现有数据
            string deletesql = "delete from ETraveleDetail where [No]='" + hdTravelRequestID.Value.ToString() + "'";
            string newid1 = dbc.UpdateData("eReimbursement", deletesql, "Update");

            SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["eReimbursement"].ConnectionString);
            //如果出差站点为空,则不保存信息
            StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(detail, null);
            XmlNode xml = eSubmit.Xml;
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml.InnerXml);
            int dtcol = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes.Count;
            //doc.SelectNodes("records").Item(0).SelectNodes("record").Item(i).ChildNodes[j].InnerText;
            int dtrow = doc.SelectNodes("records").Item(0).SelectNodes("record").Count;
            int groupcount = (dtcol - 3) / 2;//多少个站点会被更新,如果站点为空则不更新
            decimal psum = 0, csum = 0;//记录该申请单的费用合计
            for (int i = 0; i < groupcount; i++)
            {
                if (header0string.Split(',')[i] != "NA")//站点为空则不更新
                {
                    DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOwnerID.Value.ToString());
                    string station = "",Tstation="";
                    if (ds2.Tables[0].Rows.Count == 1)
                    {
                        DataTable dt1 = ds2.Tables[0];
                        station = dt1.Rows[0]["stationCode"].ToString();
                        DataTable dttemp = new DataTable();
                        string sqltemp = "select * from ESUSER where Userid='" + hdOwnerID.Value.ToString() + "'";
                        dttemp = dbc.GetData("eReimbursement", sqltemp);
                        if (dttemp.Rows.Count > 0)
                        {
                            station = dttemp.Rows[0]["Station"].ToString();
                        }
                    }
                    Tstation = header1string.Split(',')[i] == "NA" ? station : header1string.Split(',')[i];
                    double re = System.Math.Round(DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(station) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(Tstation), 4);
                    //共新增11行固定数据
                    for (int j = 0; j < 11; j++)
                    {
                        try
                        {
                            SqlCommand scdetail = sqlConn.CreateCommand();
                            scdetail.CommandText = "insert into ETraveleDetail ([No],[Tocity],[AccountCode],[Cur],[Pamount],[Camount],[TSation],[Createdby],[CreadedDate],[Tdate],[Department1],[DetailCode],[Tdate0],[CenterAmountP],[CenterAmountC]) values (@No,@Tocity,@AccountCode,@Cur,@Pamount,@Camount,@TSation,@Createdby,@CreadedDate,@Tdate,@Department1,@DetailCode,@Tdate0,@CenterAmountP,@CenterAmountC)";
                            SqlParameter spdetail = new SqlParameter("@No", SqlDbType.VarChar, 50);
                            spdetail.Value = hdTravelRequestID.Value.ToString();
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Tocity", SqlDbType.VarChar, 10);
                            spdetail.Value = header0string.Split(',')[i];
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@AccountCode", SqlDbType.VarChar, 50);
                            switch (j)
                            {
                                case 4:
                                    spdetail.Value = "62010900";
                                    break;
                                case 5:
                                    spdetail.Value = "62011900";
                                    break;
                                case 6:
                                    spdetail.Value = "62010500";
                                    break;
                                default:
                                    spdetail.Value = "62012000";
                                    break;
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Cur", SqlDbType.VarChar, 50);
                            spdetail.Value = Cur;
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Pamount", SqlDbType.Decimal);
                            if (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[1 + i * 2].InnerText != "")
                            {
                                spdetail.Value = System.Math.Round(Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[1 + i * 2].InnerText), 2);
                                psum += System.Math.Round(Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[1 + i * 2].InnerText), 2);
                            }
                            else
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@CenterAmountP", SqlDbType.Decimal);
                            if (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[1 + i * 2].InnerText != "")
                            {
                                spdetail.Value = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[1 + i * 2].InnerText) * re, 2));
                                
                            }
                            else
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Camount", SqlDbType.Decimal);
                            if (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[2 + i * 2].InnerText != "")
                            {
                                spdetail.Value = System.Math.Round(Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[2 + i * 2].InnerText), 2);
                                csum += System.Math.Round(Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[2 + i * 2].InnerText), 2);
                            }
                            else
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@CenterAmountC", SqlDbType.Decimal);
                            if (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[2 + i * 2].InnerText != "")
                            {
                                spdetail.Value = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(j).ChildNodes[2 + i * 2].InnerText) * re, 2));

                            }
                            else
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@TSation", SqlDbType.VarChar, 50);
                            spdetail.Value = header1string.Split(',')[i] == "NA" ? "" : header1string.Split(',')[i];
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Createdby", SqlDbType.VarChar, 50);
                            spdetail.Value = hdOwnerID.Value.ToString();
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@CreadedDate", SqlDbType.DateTime);
                            spdetail.Value = DateTime.Now;
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Tdate", SqlDbType.DateTime);
                            if (header2string.Split(',')[i * 2 + 1] == "NA")
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            else
                            {
                                spdetail.Value = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]);
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Tdate0", SqlDbType.DateTime);
                            if (header2string.Split(',')[i * 2] == "NA")
                            {
                                spdetail.Value = DBNull.Value;
                            }
                            else
                            {
                                spdetail.Value = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            }
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@Department1", SqlDbType.VarChar, 50);
                            spdetail.Value = dept;
                            scdetail.Parameters.Add(spdetail);

                            spdetail = new SqlParameter("@DetailCode", SqlDbType.Int);
                            spdetail.Value = j;
                            scdetail.Parameters.Add(spdetail);

                            sqlConn.Open();
                            int row = scdetail.ExecuteNonQuery();
                            sqlConn.Close();
                        }
                        catch (Exception er)
                        {
                            throw er;
                        }
                    }
                }
            }
            try
            {
                SqlCommand scdetail = sqlConn.CreateCommand();
                scdetail.CommandText = "update ETravel set Pamout=@Pamout,Camount=@Camount,Tamount=@Tamount where [ID]=@ID";
                SqlParameter spdetail = new SqlParameter("@ID", SqlDbType.VarChar, 50);
                spdetail.Value = hdTravelRequestID.Value.ToString();
                scdetail.Parameters.Add(spdetail);

                spdetail = new SqlParameter("@Pamout", SqlDbType.Decimal);
                spdetail.Value = psum;
                scdetail.Parameters.Add(spdetail);

                spdetail = new SqlParameter("@Camount", SqlDbType.Decimal);
                spdetail.Value = csum;
                scdetail.Parameters.Add(spdetail);

                spdetail = new SqlParameter("@Tamount", SqlDbType.Decimal);
                spdetail.Value = psum + csum;
                scdetail.Parameters.Add(spdetail);

                sqlConn.Open();
                int row = scdetail.ExecuteNonQuery();
                sqlConn.Close();
            }
            catch (Exception)
            {

                throw;
            }

            return true;
        }
예제 #4
0
        public void SaveAll(string type, string detail, string MailList, string header0string, string header1string, string header2string, string Cur, string dept)
        {
            if (Request.Cookies.Get("eReimUserID") == null || hdUser.Value.ToString() != Request.Cookies.Get("eReimUserID").Value)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    X.AddScript("Ext.Msg.show({ title: '提示', msg: '已切换用户,将刷新页面.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                else
                {
                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Current user changed,reloading...', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                return;
            }
            
            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            ////检查是否已经为该申请人设置过审批人
            string sqlCheckFlow = "";
            //if (Radio1.Checked)
            ////if (cbxBudget.Value.ToString() == "YES")//使用Budget审批流程
            //{
            sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + hdOwnerID.Value.ToString() + "')";
            //}
            //else//使用unBudget审批流程
            //{
            //    sqlCheckFlow = "select * from GroupFlow where [Type]=2 and GID=(select GID from GroupUsers where UserID='" + hdOwnerID.Value.ToString() + "')";
            //}
            DataTable dtGroupFlowData = dbc.GetData("eReimbursement", sqlCheckFlow);
            //if (dtGroupFlowData.Rows.Count < 1)
            //{
            //    if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
            //    {
            //        ErrorHandle("请先设置审批人.");
            //    }
            //    else
            //    {
            //        ErrorHandle("Not set Approve flow,please contact with Local MIS.");
            //    }
            //    return;
            //}

            //处理抄送人列表
            string CCMailList = "";
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<CCMailList> CCMailList1 = ser.Deserialize<List<CCMailList>>(MailList);
            foreach (CCMailList mail in CCMailList1)
            {
                CCMailList += mail.Email + ",";
            }
            CCMailList = CCMailList.Length > 0 ? CCMailList.Substring(0, CCMailList.Length - 1) : "";

            string userid = hdOwnerID.Value.ToString();
            string ostation = ""; string station = ""; string department = "";
            DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
            if (ds2.Tables[0].Rows.Count == 1)
            {
                DataTable dt1 = ds2.Tables[0];
                //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                ostation = dt1.Rows[0]["CostCenter"].ToString();
                station = dt1.Rows[0]["stationCode"].ToString();
                department = dt1.Rows[0]["CRPDepartmentName"].ToString();
                //DataTable dttemp = new DataTable();
                //string sqltemp = "select * from ESUSER where Userid='" + userid + "'";
                //dttemp = dbc.GetData("eReimbursement", sqltemp);
                //if (dttemp.Rows.Count > 0)
                //{
                //    ostation = dttemp.Rows[0]["Station"].ToString();
                //}
            }
            string para = type;
            for (int i = 0; i < header0string.Split(',').Length; i++)
            {
                //判断出差站点名称是否合法
                //if (header0string.Split(',')[i] != "NA")//站点为空则不更新
                //{
                //    bool isstation = DIMERCO.SDK.Utilities.LSDK.isStationExist(header0string.Split(',')[i]);
                //    if (!isstation)//如果不是合法站点,提示可选站点
                //    {
                //        DataSet GetCityInfo = DIMERCO.SDK.Utilities.LSDK.GetCityInfo(header0string.Split(',')[i], 5);
                //        DataTable dtGetCityInfo = (DataTable)GetCityInfo.Tables[0];
                //        string suggestStation = "";
                //        for (int j = 0; j < dtGetCityInfo.Rows.Count; j++)
                //        {
                //            suggestStation += dtGetCityInfo.Rows[j]["CityCode"].ToString() + ",";
                //        }
                //        if (suggestStation.Trim()!="")
                //        {
                //            suggestStation = suggestStation.Substring(0, suggestStation.Length - 1);
                //            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Invalid DSTN(" + header0string.Split(',')[i] + ").Suggestion:" + suggestStation + ".', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                //            return;
                //        }
                //        else
                //        {
                //            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Please input valid DSTN.', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                //            return;
                //        }
                //    }
                //}
                //判断成本中心名称是否合法
                if (header0string.Split(',')[i] != "NA" && header1string.Split(',')[i]!="NA")//站点为空则不更新
                {
                    bool isstation = DIMERCO.SDK.Utilities.LSDK.isCostCenterExist(header1string.Split(',')[i]);
                    if (!isstation)//如果不是合法站点,提示可选站点
                    {
                        DataSet GetCityInfo = DIMERCO.SDK.Utilities.LSDK.getCostCenterBYStationCode(header1string.Split(',')[i], 5);
                        DataTable dtGetCityInfo = (DataTable)GetCityInfo.Tables[0];
                        string suggestStation = "";
                        for (int j = 0; j < dtGetCityInfo.Rows.Count; j++)
                        {
                            suggestStation += dtGetCityInfo.Rows[j]["StationCode"].ToString() + ",";
                        }
                        if (suggestStation.Trim() != "")
                        {
                            suggestStation = suggestStation.Substring(0, suggestStation.Length - 1);
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Invalid Cost Center(" + header1string.Split(',')[i] + ").Suggestion:" + suggestStation + ".', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                            return;
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Please input valid Cost Center.', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                            return;
                        }
                    }
                }
            }

            //140306
            if (true)
            {
                DataTable dtbudget = new DataTable();
                dtbudget.Columns.Add("EName", typeof(System.String));
                dtbudget.Columns.Add("COACode", typeof(System.String));
                dtbudget.Columns.Add("Current", typeof(System.Decimal));
                dtbudget.Columns.Add("PU", typeof(System.Decimal));
                dtbudget.Columns.Add("PB", typeof(System.Decimal));
                dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("DU", typeof(System.Decimal));
                dtbudget.Columns.Add("DB", typeof(System.Decimal));
                dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("SU", typeof(System.Decimal));
                dtbudget.Columns.Add("SB", typeof(System.Decimal));
                dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                DataTable dtA = new DataTable();
                dtA.Columns.Add("COACode", typeof(System.String));
                dtA.Columns.Add("Amount", typeof(System.Decimal));
                dtA.Columns.Add("Date", typeof(System.DateTime));

                StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(detail, null);
                XmlNode xml = eSubmit.Xml;
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.InnerXml);
                int dtcol = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes.Count;
                int dtrow = doc.SelectNodes("records").Item(0).SelectNodes("record").Count;
                int groupcount = (dtcol - 3) / 2;//多少个站点会被更新,如果站点为空则不更新
                //string tstation = "", year = "", month = "", coacode = "";
                for (int i = 0; i < groupcount; i++)
                {
                    if (header0string.Split(',')[i] != "NA")//站点为空则不更新
                    {
                        //1. Air Ticket - Int'l
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //Domestic
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //2. Hotel Bill
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //3. Meals
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //4. Entertainment
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62010900";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //5. Car Rental/Transportation
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62011900";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //6. Communication
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62010500";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //7. Local Trip
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //8. Overseas Trip USD15/day
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //9. Airport Tax/Travel Insurance
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                        //10. Others
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtA.NewRow();
                            drnew["COACode"] = "62012000";
                            drnew["Date"] = Convert.ToDateTime(header2string.Split(',')[i * 2]);
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtA.Rows.Add(drnew);
                        }
                    }
                }
                
                //合计
                DataTable dtB = new DataTable();
                dtB.Columns.Add("COACode", typeof(System.String));
                dtB.Columns.Add("Amount", typeof(System.Decimal));
                if (dtA.Compute("Sum(Amount)", "COACode = 62010900").ToString() != "" && Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62010900").ToString()) != 0)
                {
                    DataRow dr = dtB.NewRow();
                    dr["COACode"] = "62010900";
                    dr["Amount"] = Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62010900").ToString());
                    dtB.Rows.Add(dr);
                }
                if (dtA.Compute("Sum(Amount)", "COACode = 62011900").ToString() != "" && Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62011900").ToString()) != 0)
                {
                    DataRow dr = dtB.NewRow();
                    dr["COACode"] = "62011900";
                    dr["Amount"] = Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62011900").ToString());
                    dtB.Rows.Add(dr);
                }
                if (dtA.Compute("Sum(Amount)", "COACode = 62010500").ToString() != "" && Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62010500").ToString()) != 0)
                {
                    DataRow dr = dtB.NewRow();
                    dr["COACode"] = "62010500";
                    dr["Amount"] = Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62010500").ToString());
                    dtB.Rows.Add(dr);
                }
                if (dtA.Compute("Sum(Amount)", "COACode = 62012000").ToString() != "" && Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62012000").ToString()) != 0)
                {
                    DataRow dr = dtB.NewRow();
                    dr["COACode"] = "62012000";
                    dr["Amount"] = Convert.ToDecimal(dtA.Compute("Sum(Amount)", "COACode = 62012000").ToString());
                    dtB.Rows.Add(dr);
                }

                ////取得传递预算的参数
                //string userid = dt.Rows[0]["PersonID"].ToString();
                //string dpt = dt.Rows[0]["Department"].ToString();
                //string ostation = dt.Rows[0]["CostCenter"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                string year = Convert.ToDateTime(dtA.Compute("Min(Date)", "").ToString()).Year.ToString();
                string month = Convert.ToDateTime(dtA.Compute("Min(Date)", "").ToString()).Month.ToString();
                //string accountcode = "";
                //for (int g = 0; g < dtB.Rows.Count; g++)
                //{
                //    if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                //    {
                //        DataRow dr = dtbudget.NewRow();
                //        dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                //        dr["Type"] = dtB.Rows[g]["Type"].ToString();
                //        accountcode = dtB.Rows[g]["Type"].ToString();
                //        DataTable dtC = new DataTable();
                //        dtC = Comm.RtnEB(userid, dpt, ostation, tstation, accountcode, year, month);
                //        for (int i = 0; i < dtC.Rows.Count; i++)
                //        {
                //            if (dtC.Rows[i]["Type"].ToString() == "全年个人")
                //            {
                //                dr["PU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                //                dr["PB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());
                //            }
                //            else if (dtC.Rows[i]["Type"].ToString() == "全年部门")
                //            {
                //                dr["DU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                //                dr["DB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());
                //            }
                //            else if (dtC.Rows[i]["Type"].ToString() == "全年站点")
                //            {
                //                dr["SU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                //                dr["SB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());
                //            }
                //        }
                //        dtbudget.Rows.Add(dr);
                //    }
                //}
                ////计算%,取得名称
                //for (int i = 0; i < dtbudget.Rows.Count; i++)
                //{
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                //    {
                //        dtbudget.Rows[i]["PPercent"] = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["PU"].ToString()) / Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()), 4) * 100;
                //    }
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                //    {
                //        dtbudget.Rows[i]["DPercent"] = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["DU"].ToString()) / Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()), 4) * 100;
                //    }
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                //    {
                //        dtbudget.Rows[i]["SPercent"] = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["SU"].ToString()) / Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()), 4) * 100;
                //    }
                //    if (dtbudget.Rows[i]["Type"].ToString() == "62010900")
                //    {
                //        dtbudget.Rows[i]["EName"] = "Travel expense";
                //    }
                //    else if (dtbudget.Rows[i]["Type"].ToString() == "62011900")
                //    {
                //        dtbudget.Rows[i]["EName"] = "Entertainment";
                //    }
                //    else if (dtbudget.Rows[i]["Type"].ToString() == "62010500")
                //    {
                //        dtbudget.Rows[i]["EName"] = "Transportation";
                //    }
                //    else if (dtbudget.Rows[i]["Type"].ToString() == "62012000")
                //    {
                //        dtbudget.Rows[i]["EName"] = "Communication";
                //    }
                //}

                //bool PB = false, DB = false, SB = false;
                //for (int i = 0; i < dtbudget.Rows.Count; i++)
                //{
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()) != 0)//是否显示个人预算列
                //    {
                //        PB = true;
                //    }
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()) != 0)//是否显示部门预算列
                //    {
                //        DB = true;
                //    }
                //    if (Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()) != 0)//是否显示站点预算列
                //    {
                //        SB = true;
                //    }
                //}
                ////添加数据列
                //var cm = GridPanelBudget.ColumnModel;
                //cm.Columns.Add(new Column
                //{
                //    DataIndex = "EName",
                //    Header = "Expense Item",
                //    Sortable = false,
                //    Resizable = false,
                //    MenuDisabled = true,
                //    Width = 100
                //});
                //cm.Columns.Add(new Column
                //{
                //    DataIndex = "Current",
                //    Header = "Current",
                //    Renderer = new Renderer { Fn = "GetNumber" },
                //    Sortable = false,
                //    Resizable = false,
                //    MenuDisabled = true,
                //    Width = 100
                //});
                ////显示个人预算部分
                //if (PB)
                //{
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "PU",
                //        Header = "Personal Used",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "PB",
                //        Header = "Personal Budget",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "PPercent",
                //        Header = "%(Used/Budget)",
                //        Renderer = new Renderer { Fn = "GetNumberPercent" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //}
                //if (DB)
                //{
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "DU",
                //        Header = "Department Used",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "DB",
                //        Header = "Department Budget",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "DPercent",
                //        Header = "%(Used/Budget)",
                //        Renderer = new Renderer { Fn = "GetNumberPercent" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //}
                //if (SB)
                //{
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "SU",
                //        Header = "Unit Used",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "SB",
                //        Header = "Unit Budget",
                //        Renderer = new Renderer { Fn = "GetNumber" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //    cm.Columns.Add(new Column
                //    {
                //        DataIndex = "SPercent",
                //        Header = "%(Used/Budget)",
                //        Renderer = new Renderer { Fn = "GetNumberPercent" },
                //        Sortable = false,
                //        Resizable = false,
                //        MenuDisabled = true,
                //        Width = 100
                //    });
                //}
                //StoreBudget.DataSource = dtbudget;
                //StoreBudget.DataBind();
            }
            string srr = "";
            return;
            //判断Budget下是否符合预算要求
            DataTable dtlocal = new DataTable();
            dtlocal.Columns.Add(new DataColumn("Station", typeof(System.String)));
            dtlocal.Columns.Add(new DataColumn("COACode", typeof(System.String)));
            dtlocal.Columns.Add(new DataColumn("Year", typeof(System.Int16)));
            dtlocal.Columns.Add(new DataColumn("Month", typeof(System.Int16)));
            dtlocal.Columns.Add(new DataColumn("Amount", typeof(System.Decimal)));
            if (Radio1.Checked)
            //if (cbxBudget.Value.ToString() == "YES")
            {
                StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(detail, null);
                XmlNode xml = eSubmit.Xml;
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.InnerXml);
                int dtcol = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes.Count;
                //doc.SelectNodes("records").Item(0).SelectNodes("record").Item(i).ChildNodes[j].InnerText;
                int dtrow = doc.SelectNodes("records").Item(0).SelectNodes("record").Count;
                int groupcount = (dtcol - 3) / 2;//多少个站点会被更新,如果站点为空则不更新
                //string tstation = "", year = "", month = "", coacode = "";
                for (int i = 0; i < groupcount; i++)
                {
                    if (header0string.Split(',')[i] != "NA")//站点为空则不更新
                    {
                        //处理数据,准备合并后比较预算
                        string costcenter = header1string.Split(',')[i] == "NA" ? ostation : header1string.Split(',')[i];
                        //1. Air Ticket - Int'l
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(0).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //Domestic
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(1).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //2. Hotel Bill
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(2).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //3. Meals
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(3).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //4. Entertainment
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62010900";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(4).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //5. Car Rental/Transportation
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62011900";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(5).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //6. Communication
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62010500";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(6).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //7. Local Trip
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(7).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //8. Overseas Trip USD15/day
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(8).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //9. Airport Tax/Travel Insurance
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(9).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                        //10. Others
                        if ((doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText) != 0) || (doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText != "" && Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText) != 0))
                        {
                            DataRow drnew = dtlocal.NewRow();
                            drnew["Station"] = costcenter;
                            drnew["Year"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Year.ToString();
                            drnew["Month"] = Convert.ToDateTime(header2string.Split(',')[i * 2 + 1]).Month.ToString();
                            drnew["COACode"] = "62012000";
                            decimal r1 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[1 + i * 2].InnerText);
                            decimal r2 = doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText == "" ? 0 : Convert.ToDecimal(doc.SelectNodes("records").Item(0).SelectNodes("record").Item(10).ChildNodes[2 + i * 2].InnerText);
                            drnew["Amount"] = r1 + r2;
                            dtlocal.Rows.Add(drnew);
                        }
                    }
                }
            }
            decimal sum1 = 0M;
            DataTable dt3 = new DataTable();
            dt3.Columns.Add(new DataColumn("Station",typeof(System.String)));
            dt3.Columns.Add(new DataColumn("Year", typeof(System.Int16)));
            dt3.Columns.Add(new DataColumn("COACode", typeof(System.String)));
            dt3.Columns.Add(new DataColumn("Amount", typeof(System.Decimal)));
            DataTable drnw = new DataTable();
            dtlocal.DefaultView.Sort = "Station ASC,Year ASC,COACode ASC";
            drnw = dtlocal.DefaultView.ToTable();

            for (int i = 0; i < drnw.Rows.Count; i++)
            {
                sum1 += Convert.ToDecimal(drnw.Rows[i]["Amount"].ToString());
                if (i == drnw.Rows.Count - 1)//第一行,也是最后一行
                {
                    DataRow dr3 = dt3.NewRow();
                    dr3["Station"] = drnw.Rows[i]["Station"].ToString();
                    dr3["Year"] = Convert.ToInt16(drnw.Rows[i]["Year"].ToString());
                    dr3["COACode"] = drnw.Rows[i]["COACode"].ToString();
                    dr3["Amount"] = sum1;
                    dt3.Rows.Add(dr3);
                }
                else
                {
                    if ((drnw.Rows[i]["Station"].ToString() != drnw.Rows[i + 1]["Station"].ToString()) || (drnw.Rows[i]["Year"].ToString() != drnw.Rows[i + 1]["Year"].ToString()) || (drnw.Rows[i]["COACode"].ToString() != drnw.Rows[i + 1]["COACode"].ToString()))
                    {
                        //与下一行内容不同,新增一行合计后重置sum1
                        DataRow dr3 = dt3.NewRow();
                        dr3["Station"] = drnw.Rows[i]["Station"].ToString();
                        dr3["Year"] = Convert.ToInt16(drnw.Rows[i]["Year"].ToString());
                        dr3["COACode"] = drnw.Rows[i]["COACode"].ToString();
                        dr3["Amount"] = sum1;
                        dt3.Rows.Add(dr3);
                        sum1 = 0M;
                    }
                }
            }
            string warningmsg = "";
            for (int i = 0; i < dt3.Rows.Count; i++)
            {
                decimal budgetstation = 0M, budgetusedstation = 0M;
                DataTable dt4 = new DataTable();
                dt4 = Comm.RtnEB(userid, department, ostation, dt3.Rows[i]["Station"].ToString(), dt3.Rows[i]["COACode"].ToString(), dt3.Rows[i]["Year"].ToString(), "1");
                for (int j = 0; j < dt4.Rows.Count; j++)
                {
                    if (dt4.Rows[j]["Type"].ToString() == "全年站点")
                    {
                        budgetstation = Convert.ToDecimal(dt4.Rows[j]["Budget"].ToString());
                        budgetusedstation = Convert.ToDecimal(dt4.Rows[j]["Used"].ToString());
                        if (ostation!=dt3.Rows[i]["Station"].ToString())
                        {
                            budgetstation = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(dt4.Rows[j]["Budget"].ToString()) * (DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(dt3.Rows[i]["Station"].ToString()) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(ostation)), 2));
                            budgetusedstation = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(dt4.Rows[j]["Used"].ToString()) * (DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(dt3.Rows[i]["Station"].ToString()) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(ostation)), 2));
                        }
                        break;
                    }
                }
                if (dt3.Rows[i]["COACode"].ToString() == "62012000")
                {
                    if (Convert.ToDecimal(dt3.Rows[i]["Amount"].ToString()) + budgetusedstation - budgetstation > Convert.ToDecimal(6.01)*500)
                    {
                        X.AddScript("Ext.Msg.show({ title: 'Message', msg: '差旅费部分超出 " + dt3.Rows[i]["Station"].ToString() + " 全年预算总额500美元以上,仅可按<a style=\"color:Red\">Un-Budget</a>流程申请,是否接受?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){Radio2.setValue(true);}else{return false;} } });");
                        //X.AddScript("Ext.Msg.show({ title: 'Message', msg: '差旅费部分超出 " + dt3.Rows[i]["Station"].ToString() + " 全年预算总额500美元以上,仅可按<a style=\"color:Red\">Un-Budget</a>流程申请.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                        return;
                    }
                }
                else
                {
                    if (Convert.ToDecimal(dt3.Rows[i]["Amount"].ToString()) + budgetusedstation - budgetstation > Convert.ToDecimal(6.01) * 500)
                    {
                        string rw = "";
                        switch (dt3.Rows[i]["COACode"].ToString())
                        {
                            case "62010900":
                                rw = "交际费";
                                break;
                            case "62011900":
                                rw = "交通费";
                                break;
                            case "62010500":
                                rw = "通讯费";
                                break;
                            default:
                                break;
                        }
                        warningmsg += rw + "部分超出 " + dt3.Rows[i]["Station"].ToString() + " 全年预算总额500美元以上.";
                    }
                }
            }
            
            if (warningmsg.Length>0)
            {
                //X.AddScript("Ext.Msg.show({ title: 'Message', msg: '" + warningmsg + "', buttons: { ok: 'Ok' }, fn: function (btn) { RM.SaveAll1('" + type + "','" + detail + "','" + MailList + "','" + header0string + "','" + header1string + "','" + header2string + "','" + Cur + "','" + dept + "',{eventMask:{showMask:true,target:'Page'}}); } });");
                X.AddScript("Ext.Msg.show({ title: 'Message', msg: '" + warningmsg + "', buttons: { ok: 'Ok' }, fn: function (btn) { SaveAll1('" + type + "','" + warningmsg + "')} });");
            }
            else
            {
                if (para == "ND")//保存并申请
                {
                    if (hdTravelRequestID.Value.ToString() == "")//直接新增申请,不通过草稿
                    {
                        string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[CreadedBy],[CreadedDate],[Attach],[Remark],[Bdate],[Edate],[PersonID],[CreadedByID],[ApplyDate],[CCMailList],[Budget],[Station2]";
                        string value = "";
                        value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                        value += "'" + hdOwner.Value.ToString() + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                        value += "'" + hdReport.Value.ToString() + "',";
                        value += hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString();
                        value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                        value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                        value += ",'" + Request.Cookies.Get("eReimUserName").Value + "'";//edit
                        value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        value += "'" + hdScanFile.Value.ToString() + "',";
                        value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                        value += "null,null";
                        value += ",'" + hdOwnerID.Value.ToString() + "'";
                        value += ",'" + Request.Cookies.Get("eReimUserID").Value + "'";
                        value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                        value += ",'" + CCMailList + "'";
                        value += "," + (Radio1.Checked ? "1" : "0");
                        //value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                        value += ",'" + ostation + "'";
                        string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'T' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                        string rows = "";
                        for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                        {
                            string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                            if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                            {
                                wordflow += ",[Active]";
                            }
                            string valueflow = "";
                            valueflow += "'" + newid.Split(',')[1] + "',";
                            valueflow += "'T',";
                            valueflow += "'" + station + "',";
                            valueflow += "'" + department + "',";
                            valueflow += "'" + hdOwner.Value.ToString() + "',";
                            valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                            valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                            valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                            valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                            valueflow += "1,";
                            valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                            valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                            valueflow += "'" + newid.Split(',')[0] + "'";
                            valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                            if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                            {
                                valueflow += ",1";
                            }
                            string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                            rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                        }
                        if (newid == "-1" || rows == "-1" || rows == "")
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        else
                        {
                            hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                            hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No

                            if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept) || !SendMail(warningmsg))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "差旅费申请单: " + newid.Split(',')[1];
                                UpdateMSG("保存申请单:" + newid.Split(',')[1] + "成功.");
                            }
                            else
                            {
                                Panel3.Title = "Travel Expense Form: " + newid.Split(',')[1];
                                UpdateMSG("Saved Travel Expense Form: " + newid.Split(',')[1] + " successfully.");
                            }

                        }
                        //
                    }
                    else//由草稿升级为正式申请
                    {
                        string updatesql = "update ETravel set [Person]='" + hdOwner.Value.ToString();
                        updatesql += "',[Station]='" + station;
                        updatesql += "',[Department]='" + department;
                        updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                        updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                        updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                        updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                        updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                        updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                        updatesql += ",[Type]=0";
                        updatesql += ",[PersonID]='" + hdOwnerID.Value.ToString() + "'";
                        string oldno = hdTravelRequestNo.Value.ToString();
                        string newno = hdTravelRequestNo.Value.ToString().Substring(0, hdTravelRequestNo.Value.ToString().Length - 1);
                        updatesql += ",[No]='" + newno + "',";
                        updatesql += "[CreadedDate]='" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        updatesql += "[CreadedBy]='" + Request.Cookies.Get("eReimUserName").Value + "',";
                        updatesql += "[CreadedByID]='" + Request.Cookies.Get("eReimUserID").Value + "'";
                        updatesql += ",[CCMailList]='" + CCMailList + "'";
                        updatesql += ",[Budget]=" + (Radio1.Checked ? "1" : "0");
                        //updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                        updatesql += ",[Station2]='" + ostation + "'";
                        updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                        //操作Flow表
                        string sqlDeleteEflow = "delete from Eflow where [Type]='T' and [RequestID]='" + hdTravelRequestID.Value.ToString() + "'";
                        string deleterows = dbc.UpdateData("eReimbursement", sqlDeleteEflow, "Update");
                        string rows = "";
                        for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                        {
                            string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                            if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                            {
                                wordflow += ",[Active]";
                            }
                            string valueflow = "";
                            valueflow += "'" + newno + "',";
                            valueflow += "'T',";
                            valueflow += "'" + station + "',";
                            valueflow += "'" + department + "',";
                            valueflow += "'" + hdOwner.Value.ToString() + "',";
                            valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                            valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                            valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                            valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                            valueflow += "1,";
                            valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                            valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                            valueflow += hdTravelRequestID.Value.ToString();
                            valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                            if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                            {
                                valueflow += ",1";
                            }
                            string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                            rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                        }
                        //
                        if (newid == "-1" || rows == "-1" || rows == "")
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        else
                        {
                            hdTravelRequestNo.Value = newno;

                            if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept) || !SendMail(warningmsg))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }


                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "差旅费申请单:" + newno;
                                UpdateMSG("保存差旅费申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                            }
                            else
                            {
                                Panel3.Title = "Travel Expense Form: " + newno;
                                UpdateMSG("Saved Travel Expense Form: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                            }

                        }
                    }
                    X.AddScript("btnAddDSTN.disable();btnGeteLeave.disable();btnSaveDraft.disable();btnSaveAndSend.disable();Radio1.disable();Radio2.disable();btnExport.enable();btnCC.disable();");
                    //X.AddScript("btnAddDSTN.disable();btnGeteLeave.disable();btnSaveDraft.disable();btnSaveAndSend.disable();cbxBudget.setReadOnly(true);btnExport.enable();btnCC.disable();");
                }
                else//保存草稿
                {
                    if (hdTravelRequestID.Value.ToString() != "")//由链接进入的草稿更新
                    {
                        string updatesql = "update ETravel set [Person]='" + hdOwner.Value.ToString();
                        updatesql += "',[Station]='" + station;
                        updatesql += "',[Department]='" + department;
                        updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                        updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                        updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                        updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                        updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                        updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                        updatesql += ",[PersonID]='" + hdOwnerID.Value.ToString() + "'";
                        updatesql += ",[CCMailList]='" + CCMailList + "'";
                        updatesql += ",[Budget]=" + (Radio1.Checked ? "1" : "0");
                        //updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                        updatesql += ",[Station2]='" + ostation + "'";
                        updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                        if (newid == "-1")
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        else
                        {
                            if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            //hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                            //Panel3.Title = "差旅费申请单:" + newid.Split(',')[1];
                            //X.AddScript("GridPanel2.submitData();");
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                UpdateMSG("保存差旅费申请单草稿: " + hdTravelRequestNo.Value.ToString() + "成功.");
                            }
                            else
                            {
                                UpdateMSG("Saved Travel Expense Draft: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                            }
                        }

                    }
                    else//如果ID为空则判断为新增草稿
                    {
                        string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[Attach],[Remark],[Bdate],[Edate],[Type],[PersonID],[ApplyDate],[CCMailList],[Station2],[Budget]";
                        string value = "";
                        value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                        value += "'" + hdOwner.Value.ToString() + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                        value += "'" + hdReport.Value.ToString() + "',";
                        value += (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                        value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                        value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                        value += ",'" + hdScanFile.Value.ToString() + "',";
                        value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                        value += "null,null,";
                        value += "1";//标识为草稿
                        value += ",'" + hdOwnerID.Value.ToString() + "'";
                        value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                        value += ",'" + CCMailList + "'";
                        value += ",'" + ostation + "'";
                        value += "," + (Radio1.Checked ? "1" : "0");
                        //value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                        string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'TD' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                        //操作Flow表
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[RequestID],[Active]";
                        string valueflow = "";
                        valueflow += "'" + newid.Split(',')[1] + "',";
                        valueflow += "'T',";
                        valueflow += "'" + station + "',";
                        valueflow += "'" + department + "',";
                        valueflow += "'" + hdOwner.Value.ToString() + "',";
                        valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                        valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += "'" + newid.Split(',')[0] + "'";
                        valueflow += ",1";
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        string rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                        //
                        if (newid == "-1" || rows == "-1")
                        {
                            ErrorHandle("Data Error."); return;
                        }
                        else
                        {
                            hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                            hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                            if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "差旅费申请单草稿: " + newid.Split(',')[1];
                                UpdateMSG("新增差旅费申请单草稿: " + newid.Split(',')[1] + "成功.");
                            }
                            else
                            {
                                Panel3.Title = "Travel Expense Draft: " + newid.Split(',')[1];
                                UpdateMSG("Added Travel Expense Draft: " + newid.Split(',')[1] + " successfully.");
                            }
                        }
                    }
                }
            }
        }
예제 #5
0
        public void SaveAll1(string type, string detail, string MailList, string header0string, string header1string, string header2string, string Cur, string dept,string warningmsg)
        {
            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //检查是否已经为该申请人设置过审批人
            string sqlCheckFlow = "";
            if (Radio1.Checked)
            //if (cbxBudget.Value.ToString() == "YES")//使用Budget审批流程
            {
                sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + hdOwnerID.Value.ToString() + "')";
            }
            else//使用unBudget审批流程
            {
                sqlCheckFlow = "select * from GroupFlow where [Type]=2 and GID=(select GID from GroupUsers where UserID='" + hdOwnerID.Value.ToString() + "')";
            }
            DataTable dtGroupFlowData = dbc.GetData("eReimbursement", sqlCheckFlow);
            if (dtGroupFlowData.Rows.Count < 1)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    ErrorHandle("请先设置审批人.");
                }
                else
                {
                    ErrorHandle("Not set Approve flow,please contact with Local MIS.");
                }
                return;
            }

            //处理抄送人列表
            string CCMailList = "";
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<CCMailList> CCMailList1 = ser.Deserialize<List<CCMailList>>(MailList);
            foreach (CCMailList mail in CCMailList1)
            {
                CCMailList += mail.Email + ",";
            }
            CCMailList = CCMailList.Length > 0 ? CCMailList.Substring(0, CCMailList.Length - 1) : "";

            string userid = hdOwnerID.Value.ToString();
            string ostation = ""; string station = ""; string department = "";
            DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
            if (ds2.Tables[0].Rows.Count == 1)
            {
                DataTable dt1 = ds2.Tables[0];
                //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                ostation = dt1.Rows[0]["stationCode"].ToString();
                station = dt1.Rows[0]["stationCode"].ToString();
                department = dt1.Rows[0]["CRPDepartmentName"].ToString();
                DataTable dttemp = new DataTable();
                string sqltemp = "select * from ESUSER where Userid='" + userid + "'";
                dttemp = dbc.GetData("eReimbursement", sqltemp);
                if (dttemp.Rows.Count > 0)
                {
                    ostation = dttemp.Rows[0]["Station"].ToString();
                }
            }
            string para = type;
            if (para == "ND")//保存并申请
            {
                if (hdTravelRequestID.Value.ToString() == "")//直接新增申请,不通过草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[CreadedBy],[CreadedDate],[Attach],[Remark],[Bdate],[Edate],[PersonID],[CreadedByID],[ApplyDate],[CCMailList],[Budget],[Station2]";
                    string value = "";
                    value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + hdOwner.Value.ToString() + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString();
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + Request.Cookies.Get("eReimUserName").Value + "'";//edit
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    value += "'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                    value += "null,null";
                    value += ",'" + hdOwnerID.Value.ToString() + "'";
                    value += ",'" + Request.Cookies.Get("eReimUserID").Value + "'";
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                    value += ",'" + CCMailList + "'";
                    value += "," + (Radio1.Checked ? "1" : "0");
                    //value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    value += ",'" + ostation + "'";
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'T' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newid.Split(',')[1] + "',";
                        valueflow += "'T',";
                        valueflow += "'" + station + "',";
                        valueflow += "'" + department + "',";
                        valueflow += "'" + hdOwner.Value.ToString() + "',";
                        valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                        valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += "'" + newid.Split(',')[0] + "'";
                        valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No

                        if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept) || !SendMail(warningmsg))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单: " + newid.Split(',')[1];
                            UpdateMSG("保存申请单:" + newid.Split(',')[1] + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Form: " + newid.Split(',')[1];
                            UpdateMSG("Saved Travel Expense Form: " + newid.Split(',')[1] + " successfully.");
                        }

                    }
                    //
                }
                else//由草稿升级为正式申请
                {
                    string updatesql = "update ETravel set [Person]='" + hdOwner.Value.ToString();
                    updatesql += "',[Station]='" + station;
                    updatesql += "',[Department]='" + department;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[Type]=0";
                    updatesql += ",[PersonID]='" + hdOwnerID.Value.ToString() + "'";
                    string oldno = hdTravelRequestNo.Value.ToString();
                    string newno = hdTravelRequestNo.Value.ToString().Substring(0, hdTravelRequestNo.Value.ToString().Length - 1);
                    updatesql += ",[No]='" + newno + "',";
                    updatesql += "[CreadedDate]='" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    updatesql += "[CreadedBy]='" + Request.Cookies.Get("eReimUserName").Value + "',";
                    updatesql += "[CreadedByID]='" + Request.Cookies.Get("eReimUserID").Value + "'";
                    updatesql += ",[CCMailList]='" + CCMailList + "'";
                    updatesql += ",[Budget]=" + (Radio1.Checked ? "1" : "0");
                    //updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    updatesql += ",[Station2]='" + ostation + "'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                    //操作Flow表
                    string sqlDeleteEflow = "delete from Eflow where [Type]='T' and [RequestID]='" + hdTravelRequestID.Value.ToString() + "'";
                    string deleterows = dbc.UpdateData("eReimbursement", sqlDeleteEflow, "Update");
                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newno + "',";
                        valueflow += "'T',";
                        valueflow += "'" + station + "',";
                        valueflow += "'" + department + "',";
                        valueflow += "'" + hdOwner.Value.ToString() + "',";
                        valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                        valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += hdTravelRequestID.Value.ToString();
                        valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    //
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestNo.Value = newno;

                        if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept) || !SendMail(warningmsg))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }


                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单:" + newno;
                            UpdateMSG("保存差旅费申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Form: " + newno;
                            UpdateMSG("Saved Travel Expense Form: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                        }

                    }
                }
                X.AddScript("btnAddDSTN.disable();btnGeteLeave.disable();btnSaveDraft.disable();btnSaveAndSend.disable();Radio1.disable();Radio2.disable();btnExport.enable();btnCC.disable();");
                //X.AddScript("btnAddDSTN.disable();btnGeteLeave.disable();btnSaveDraft.disable();btnSaveAndSend.disable();cbxBudget.setReadOnly(true);btnExport.enable();btnCC.disable();");
            }
            else//保存草稿
            {
                if (hdTravelRequestID.Value.ToString() != "")//由链接进入的草稿更新
                {
                    string updatesql = "update ETravel set [Person]='" + hdOwner.Value.ToString();
                    updatesql += "',[Station]='" + station;
                    updatesql += "',[Department]='" + department;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[PersonID]='" + hdOwnerID.Value.ToString() + "'";
                    updatesql += ",[CCMailList]='" + CCMailList + "'";
                    updatesql += ",[Budget]=" + (Radio1.Checked ? "1" : "0");
                    //updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    updatesql += ",[Station2]='" + ostation + "'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                    if (newid == "-1")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        //hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        //Panel3.Title = "差旅费申请单:" + newid.Split(',')[1];
                        //X.AddScript("GridPanel2.submitData();");
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            UpdateMSG("保存差旅费申请单草稿: " + hdTravelRequestNo.Value.ToString() + "成功.");
                        }
                        else
                        {
                            UpdateMSG("Saved Travel Expense Draft: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                        }
                    }

                }
                else//如果ID为空则判断为新增草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[Attach],[Remark],[Bdate],[Edate],[Type],[PersonID],[ApplyDate],[CCMailList],[Station2],[Budget]";
                    string value = "";
                    value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + hdOwner.Value.ToString() + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                    value += "null,null,";
                    value += "1";//标识为草稿
                    value += ",'" + hdOwnerID.Value.ToString() + "'";
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                    value += ",'" + CCMailList + "'";
                    value += ",'" + ostation + "'";
                    value += "," + (Radio1.Checked ? "1" : "0");
                    //value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'TD' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                    //操作Flow表
                    string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[RequestID],[Active]";
                    string valueflow = "";
                    valueflow += "'" + newid.Split(',')[1] + "',";
                    valueflow += "'T',";
                    valueflow += "'" + station + "',";
                    valueflow += "'" + department + "',";
                    valueflow += "'" + hdOwner.Value.ToString() + "',";
                    valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                    valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                    valueflow += "'" + newid.Split(',')[0] + "'";
                    valueflow += ",1";
                    string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                    string rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    //
                    if (newid == "-1" || rows == "-1")
                    {
                        ErrorHandle("Data Error."); return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                        if (!SaveDetail(detail, header0string, header1string, header2string, Cur, dept))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单草稿: " + newid.Split(',')[1];
                            UpdateMSG("新增差旅费申请单草稿: " + newid.Split(',')[1] + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Draft: " + newid.Split(',')[1];
                            UpdateMSG("Added Travel Expense Draft: " + newid.Split(',')[1] + " successfully.");
                        }
                    }
                }
            }
        }
예제 #6
0
 public void Delete(string RequestID, string Type, string rowIndex)
 {
     string sqldel = "";
     if (Type == "T")
     {
         sqldel += "select * from Eflow where RequestID='" + RequestID + "' and [Type]='T';";
         sqldel += "select * from ETravel where ID='" + RequestID + "';";
         sqldel += "select * from ETraveleDetail where [No]='" + RequestID + "';";
         //sqldel += "delete from Eflow where RequestID='" + RequestID + "' and [Type]='T';";
         //sqldel += "delete from ETravel where ID='" + RequestID + "';";
         //sqldel += "delete from ETraveleDetail where [No]='" + RequestID + "';";
         sqldel += "update ETravel set Void=1 where ID='" + RequestID + "';";
     }
     else if (Type == "G")
     {
         sqldel += "select * from Eflow where RequestID='" + RequestID + "' and [Type]='G';";
         sqldel += "select * from Ecommon where ID='" + RequestID + "';";
         sqldel += "select * from EeommonDetail where [No]='" + RequestID + "';";
         //sqldel += "delete from Eflow where RequestID='" + RequestID + "' and [Type]='G';";
         //sqldel += "delete from Ecommon where ID='" + RequestID + "';";
         //sqldel += "delete from EeommonDetail where [No]='" + RequestID + "';";
         sqldel += "update Ecommon set Void=1 where ID='" + RequestID + "';";
     }
     cs.DBCommand dbc = new cs.DBCommand();
     string sqlre = dbc.UpdateData("eReimbursement", sqldel, "Update");
     //X.AddScript("Store1.removeAt(" + rowIndex + ");Store1.load();");
 }
예제 #7
0
        protected void AddApp(object sender, DirectEventArgs e)
        {
            cs.DBCommand dbc = new cs.DBCommand();
            string ID = Request.QueryString["RequestID"].ToString();
            string userid1 = e.ExtraParams[0].Value;
            string username1 = e.ExtraParams[1].Value;
            string updatesql = "update Eflow set Active=-1,Status=2,Remark='" + txtRemark.Text.Replace("'", "''") + "',ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + Request.QueryString["ID"].ToString();
            updatesql += ";insert into Eflow ([Type],[Step],[Approver],[ApproverID],[ApproveDate],[RequestID],[Active],[Status]) values ";
            updatesql += "('G'," + Request.QueryString["Step"].ToString() + ",'" + username1 + "','" + userid1 + "','" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "','" + Request.QueryString["RequestID"].ToString() + "',1,1);select id from Eflow where id=@@IDENTITY";
            string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
            if (newid == "-1")
            {
                ErrorHandle();
                return;
            }
            else
            {
                string sqlf = "select * from Ecommon where ID=" + ID;
                DataTable dtf = dbc.GetData("eReimbursement", sqlf);
                //140226 显示预算
                DataTable dtbudget = new DataTable();
                dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                dtbudget.Columns.Add("Year", typeof(System.String));
                dtbudget.Columns.Add("Status", typeof(System.Int16));
                dtbudget.Columns.Add("EName", typeof(System.String));
                dtbudget.Columns.Add("COACode", typeof(System.String));
                dtbudget.Columns.Add("LocalCur", typeof(System.String));
                dtbudget.Columns.Add("CenterCur", typeof(System.String));
                dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                dtbudget.Columns.Add("Current", typeof(System.Decimal));
                dtbudget.Columns.Add("PU", typeof(System.Decimal));
                dtbudget.Columns.Add("PB", typeof(System.Decimal));
                dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("DU", typeof(System.Decimal));
                dtbudget.Columns.Add("DB", typeof(System.Decimal));
                dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("SU", typeof(System.Decimal));
                dtbudget.Columns.Add("SB", typeof(System.Decimal));
                dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                string sqld = "select * from EeommonDetail where [No]='" + ID + "' order by id";
                DataTable dtall = new DataTable();
                dtall = dbc.GetData("eReimbursement", sqld);
                //取得预算日期
                string sqlA = "select AccountCode as COACode,case when t1.Type='O' then t2.SAccountName else TDicSubType.EText end as [EName],year(Tdate) as [Year],Amount from EeommonDetail t1 left join (select * from Edic where KeyValue='SubType') TDicSubType on TDicSubType.CValue=t1.Type left join AccoundCode t2 on t2.SAccountCode=t1.AccountCode where t1.No='" + ID + "'";
                DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                //取得本币与成本中心汇率转换
                decimal rate = 1;
                string CurLocal = dtall.Rows[0]["Cur"].ToString();
                string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtall.Rows[0]["TSation"].ToString());
                

                //合计数据
                DataTable dtB = new DataTable();
                dtB.Columns.Add("EName", typeof(System.String));
                dtB.Columns.Add("COACode", typeof(System.String));
                dtB.Columns.Add("Amount", typeof(System.Decimal));
                dtB.Columns.Add("Year", typeof(System.String));
                for (int g = 0; g < dtA.Rows.Count; g++)
                {
                    bool er = false;
                    for (int j = 0; j < dtB.Rows.Count; j++)
                    {
                        if (dtB.Rows[j]["COACode"].ToString() == dtA.Rows[g]["COACode"].ToString() && dtB.Rows[j]["Year"].ToString() == dtA.Rows[g]["Year"].ToString())//已有记录
                        {
                            er = true;
                            break;
                        }
                    }
                    if (!er)//不存在重复记录
                    {
                        DataRow dr = dtB.NewRow();
                        dr["EName"] = dtA.Rows[g]["EName"].ToString();
                        dr["COACode"] = dtA.Rows[g]["COACode"].ToString();
                        dr["Amount"] = dtA.Compute("Sum(Amount)", "Year = " + dtA.Rows[g]["Year"].ToString() + " and COACode = " + dtA.Rows[g]["COACode"].ToString());
                        dr["Year"] = dtA.Rows[g]["Year"].ToString();
                        dtB.Rows.Add(dr);
                    }
                }
                string userid = dtf.Rows[0]["PersonID"].ToString();
                string ostation = ""; string station = ""; string department = "";
                DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
                if (ds2.Tables[0].Rows.Count == 1)
                {
                    DataTable dt1 = ds2.Tables[0];
                    ostation = dt1.Rows[0]["CostCenter"].ToString();//记录用户预算站点,即CostCenter
                    station = dt1.Rows[0]["stationCode"].ToString();//记录用户所在站点
                    department = dt1.Rows[0]["CRPDepartmentName"].ToString();
                }
                string accountcode = "";
                for (int g = 0; g < dtB.Rows.Count; g++)
                {
                    if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                    {
                        DataRow dr = dtbudget.NewRow();
                        dr["EName"] = dtB.Rows[g]["EName"].ToString();
                        dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                        dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                        dr["Year"] = dtB.Rows[g]["Year"].ToString();
                        accountcode = dtB.Rows[g]["COACode"].ToString();
                        DataTable dtC = new DataTable();
                        //dtC = Comm.RtnEB(userid, department, ostation, ostation, accountcode, dtB.Rows[g]["Year"].ToString(), "1");
                        dtC = Comm.ExRtnEB(userid, department, ostation, ostation, accountcode, dtB.Rows[g]["Year"].ToString(), "1","G",ID);
                        for (int f = 0; f < dtC.Rows.Count; f++)
                        {
                            if (dtC.Rows[f]["Type"].ToString() == "全年个人")
                            {
                                dr["PU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                dr["PB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                            }
                            else if (dtC.Rows[f]["Type"].ToString() == "全年部门")
                            {
                                dr["DU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                dr["DB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                            }
                            else if (dtC.Rows[f]["Type"].ToString() == "全年站点")
                            {
                                dr["SU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                dr["SB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                            }
                        }
                        dtbudget.Rows.Add(dr);
                    }
                }
                //计算%,取得名称,转为本地币种汇率,增加列记录Currency为邮件准备
                for (int g = 0; g < dtbudget.Rows.Count; g++)
                {
                    if (CurLocal != CurBudget)
                    {
                        rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToInt16(dtbudget.Rows[g]["Year"].ToString()));
                    }

                    if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                    }
                    if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                    }
                    if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                    }
                    
                    dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                    dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                    dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                    dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                    dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                    dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                    dtbudget.Rows[g]["RequestID"] = ID;
                    dtbudget.Rows[g]["Status"] = 2;
                    dtbudget.Rows[g]["LocalCur"] = CurLocal;
                    dtbudget.Rows[g]["CenterCur"] = CurBudget;
                    dtbudget.Rows[g]["Rate"] = rate;
                    
                }
                if (!SendMail("G", Request.QueryString["RequestID"].ToString(), newid, dtbudget))//Budget已经计入Current,%不需要重新计算
                {
                    ErrorHandle("Error mail address."); return;
                }
                X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
            }
        }
예제 #8
0
        protected void UploadScanFileClick(object sender, DirectEventArgs e)
        {
            //if (this.FileUploadField1.HasFile)
            //{
            //    string lstrFileName = null;     //上传文件路径
            //    string lstrFileFolder = null;   //存放文件路径
            //    string lstrFileNamePath = null; //上传目录及文件名

            //    //获得上传到服务器的目录名称,如果上传目录为空,就使用"D:\"作为缺省上传目录 
            //    //if (dir.Value != "") lstrFileFolder = dir.Value; else lstrFileFolder = "D:\\";
            //    lstrFileFolder = System.Web.HttpContext.Current.Request.MapPath("Upload/");

            //    //lstrFileName = FileUploadField1.PostedFile.FileName;  //获得文件名称
            //    //注:FileUploadField1.PostedFile.FileName 返回的是通过文件对话框选择的文件名,这之中包含了文件的目录信息

            //    lstrFileName = System.IO.Path.GetFileName(FileUploadField1.PostedFile.FileName);  //去掉目录信息,返回文件名称

            //    //判断上传目录是否存在,不存在就建立 
            //    if (!System.IO.Directory.Exists(lstrFileFolder)) System.IO.Directory.CreateDirectory(lstrFileFolder);
            //    string dtime = DateTime.Now.ToString("yyyyMMddHHmmss");
            //    lstrFileNamePath = lstrFileFolder + "SF" + dtime + System.IO.Path.GetExtension(lstrFileName); //得到上传目录及文件名称  
            //    FileUploadField1.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
            //    string filename = "SF" + dtime + System.IO.Path.GetExtension(lstrFileName);
            //    HLAttachFile.Text = filename; hdScanFile.Value = filename;
            //    HLAttachFile.NavigateUrl = "./Upload/" + filename;
            //    string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
            //    //更新数据
            //    if (hdDetailID.Value.ToString() != "")
            //    {
            //        string updatesql = "update EeommonDetail set Attach='" + filename + "' where ID=" + hdDetailID.Value.ToString();
            //        cs.DBCommand dbc = new cs.DBCommand();
            //        string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
            //    }
            //    X.Msg.Show(new MessageBoxConfig
            //    {
            //        Buttons = MessageBox.Button.OK,
            //        Icon = MessageBox.Icon.INFO,
            //        Title = "Success",
            //        Message = string.Format(tpl, this.FileUploadField1.PostedFile.FileName, this.FileUploadField1.PostedFile.ContentLength)
            //    });
            //}
            if (this.FileUploadField1.HasFile)
            {
                string lstrFileName = null;     //上传文件路径
                string lstrFileFolder = null;   //存放文件路径
                string lstrFileNamePath = null; //上传目录及文件名
                cs.DBCommand dbc = new cs.DBCommand();
                //获得上传到服务器的目录名称,如果上传目录为空,就使用"D:\"作为缺省上传目录 
                //if (dir.Value != "") lstrFileFolder = dir.Value; else lstrFileFolder = "D:\\";
                lstrFileFolder = System.Web.HttpContext.Current.Request.MapPath("Upload/");

                //lstrFileName = FileUploadField1.PostedFile.FileName;  //获得文件名称
                //注:FileUploadField1.PostedFile.FileName 返回的是通过文件对话框选择的文件名,这之中包含了文件的目录信息

                lstrFileName = System.IO.Path.GetFileName(FileUploadField1.PostedFile.FileName);  //去掉目录信息,返回文件名称

                //判断上传目录是否存在,不存在就建立 
                if (!System.IO.Directory.Exists(lstrFileFolder)) System.IO.Directory.CreateDirectory(lstrFileFolder);
                string dtime = DateTime.Now.ToString("yyyyMMddHHmmss");
                lstrFileNamePath = lstrFileFolder + "SF" + dtime + System.IO.Path.GetExtension(lstrFileName); //得到上传目录及文件名称 

                //151124.增加上传附件判断.
                string postfix = Path.GetExtension(lstrFileName);
                string postfixraw = Path.GetExtension(lstrFileName);
                int indexf = postfix.IndexOf('.');
                if (indexf != -1)
                {
                    postfixraw = postfixraw.Substring(1);
                }
                string station = hdStation.Value.ToString();
                string sql = "select * from FileRule where StationCode='" + station + "'";
                DataTable dtrule = dbc.GetData("eReimbursement", sql);
                if (dtrule.Rows.Count < 1)
                {
                    string sqlnew = "select * from FileRule where StationCode='DEFAULT'";
                    DataTable dtnew = dbc.GetData("eReimbursement", sqlnew);

                    if (dtnew.Select("Allow=0 and PostfixRaw='" + postfixraw + "'").Count() == 1)
                    {
                        //不允许上传该文件类型
                        X.AddScript("Ext.Msg.show({ title: 'Warning', msg: 'Not allowed file type.Please contact local MIS.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                        return;
                    }
                    else if (dtnew.Select("Allow=1 and PostfixRaw='" + postfixraw + "'").Count() == 1)
                    {
                        //允许上传的文件类型
                        FileUploadField1.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
                        string filename = "SF" + dtime + System.IO.Path.GetExtension(lstrFileName);

                        HLAttachFile.Text = filename; hdScanFile.Value = filename;
                        HLAttachFile.NavigateUrl = "./Upload/" + filename;
                        string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
                        //更新数据
                        if (hdDetailID.Value.ToString() != "")
                        {
                            string updatesql = "update EeommonDetail set Attach='" + filename + "' where ID=" + hdDetailID.Value.ToString();

                            string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        }
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Buttons = MessageBox.Button.OK,
                            Icon = MessageBox.Icon.INFO,
                            Title = "Success",
                            Message = string.Format(tpl, this.FileUploadField1.PostedFile.FileName, this.FileUploadField1.PostedFile.ContentLength)
                        });
                    }
                    else
                    {
                        //未知文件类型
                        FileUploadField1.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
                        //压缩文件
                        cs.ZipFloClass zip = new cs.ZipFloClass();
                        string filename = "SF" + dtime + postfix;
                        string filepath = lstrFileNamePath;
                        string zipfilepath = lstrFileFolder + "SF" + dtime + ".zip";
                        zip.ZipSingleFile(lstrFileName, filepath, zipfilepath);
                        string newfilename = "SF" + dtime + ".zip";

                        HLAttachFile.Text = newfilename; hdScanFile.Value = newfilename;
                        HLAttachFile.NavigateUrl = "./Upload/" + newfilename;
                        string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
                        //更新数据
                        if (hdDetailID.Value.ToString() != "")
                        {
                            string updatesql = "update EeommonDetail set Attach='" + newfilename + "' where ID=" + hdDetailID.Value.ToString();

                            string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        }
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Buttons = MessageBox.Button.OK,
                            Icon = MessageBox.Icon.INFO,
                            Title = "Success",
                            Message = string.Format(tpl, this.FileUploadField1.PostedFile.FileName, this.FileUploadField1.PostedFile.ContentLength)
                        });
                    }
                }
                else
                {
                    if (dtrule.Select("Allow=0 and PostfixRaw='" + postfixraw + "'").Count() == 1)
                    {
                        //不允许上传该文件类型
                        X.AddScript("Ext.Msg.show({ title: 'Warning', msg: 'Not allowed file type.Please contact local MIS.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                        return;
                    }
                    else if (dtrule.Select("Allow=1 and PostfixRaw='" + postfixraw + "'").Count() == 1)
                    {
                        //允许上传的文件类型
                        FileUploadField1.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
                        string filename = "SF" + dtime + System.IO.Path.GetExtension(lstrFileName);

                        HLAttachFile.Text = filename; hdScanFile.Value = filename;
                        HLAttachFile.NavigateUrl = "./Upload/" + filename;
                        string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
                        //更新数据
                        if (hdDetailID.Value.ToString() != "")
                        {
                            string updatesql = "update EeommonDetail set Attach='" + filename + "' where ID=" + hdDetailID.Value.ToString();

                            string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        }
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Buttons = MessageBox.Button.OK,
                            Icon = MessageBox.Icon.INFO,
                            Title = "Success",
                            Message = string.Format(tpl, this.FileUploadField1.PostedFile.FileName, this.FileUploadField1.PostedFile.ContentLength)
                        });
                    }
                    else
                    {
                        //未知文件类型
                        FileUploadField1.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
                        //压缩文件
                        cs.ZipFloClass zip = new cs.ZipFloClass();
                        string filename = "SF" + dtime + postfix;
                        string filepath = lstrFileNamePath;
                        string zipfilepath = lstrFileFolder + "SF" + dtime + ".zip";
                        zip.ZipSingleFile(lstrFileName, filepath, zipfilepath);
                        string newfilename = "SF" + dtime + ".zip";

                        HLAttachFile.Text = newfilename; hdScanFile.Value = newfilename;
                        HLAttachFile.NavigateUrl = "./Upload/" + newfilename;
                        string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
                        //更新数据
                        if (hdDetailID.Value.ToString() != "")
                        {
                            string updatesql = "update EeommonDetail set Attach='" + newfilename + "' where ID=" + hdDetailID.Value.ToString();

                            string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        }
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Buttons = MessageBox.Button.OK,
                            Icon = MessageBox.Icon.INFO,
                            Title = "Success",
                            Message = string.Format(tpl, this.FileUploadField1.PostedFile.FileName, this.FileUploadField1.PostedFile.ContentLength)
                        });
                    }
                }
            }
        }
예제 #9
0
        protected void AddApp(object sender, DirectEventArgs e)
        {
            cs.DBCommand dbc = new cs.DBCommand();
            string ID = Request.QueryString["RequestID"].ToString();
            string userid1 = e.ExtraParams[0].Value;
            string username1 = e.ExtraParams[1].Value;
            string updatesql = "update Eflow set Active=-1,Status=2,Remark='" + txtRemark.Text.Replace("'", "''") + "',ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + Request.QueryString["ID"].ToString();
            updatesql += ";insert into Eflow ([Type],[Step],[Approver],[ApproverID],[ApproveDate],[RequestID],[Active],[Status]) values ";
            updatesql += "('T'," + Request.QueryString["Step"].ToString() + ",'" + username1 + "','" + userid1 + "','" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "','" + Request.QueryString["RequestID"].ToString() + "',1,1);select id from Eflow where id=@@IDENTITY";
            string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
            if (newid == "-1")
            {
                ErrorHandle();
                return;
            }
            else
            {
                string sqlf = "select * from ETravel where ID=" + ID;
                DataTable dtf = dbc.GetData("eReimbursement", sqlf);

                string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                DataTable dtall = new DataTable();
                dtall = dbc.GetData("eReimbursement", sqld);
                //预算
                //140226 显示预算
                DataTable dtbudget = new DataTable();
                dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                dtbudget.Columns.Add("Status", typeof(System.Int16));
                dtbudget.Columns.Add("EName", typeof(System.String));
                dtbudget.Columns.Add("COACode", typeof(System.String));
                dtbudget.Columns.Add("LocalCur", typeof(System.String));
                dtbudget.Columns.Add("CenterCur", typeof(System.String));
                dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                dtbudget.Columns.Add("Current", typeof(System.Decimal));
                dtbudget.Columns.Add("PA", typeof(System.Decimal));
                dtbudget.Columns.Add("CA", typeof(System.Decimal));
                dtbudget.Columns.Add("PU", typeof(System.Decimal));
                dtbudget.Columns.Add("PB", typeof(System.Decimal));
                dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("DU", typeof(System.Decimal));
                dtbudget.Columns.Add("DB", typeof(System.Decimal));
                dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                dtbudget.Columns.Add("SU", typeof(System.Decimal));
                dtbudget.Columns.Add("SB", typeof(System.Decimal));
                dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                //取得预算日期
                string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                //取得本币与成本中心汇率转换
                decimal rate = 1;
                string CurLocal = dtall.Rows[0]["Cur"].ToString();
                string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtall.Rows[0]["TSation"].ToString());
                if (CurLocal != CurBudget)
                {
                    rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                }

                //取得4大类合计
                //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                //取得传递预算的参数
                string userid = dtf.Rows[0]["PersonID"].ToString();
                string dpt = dtf.Rows[0]["Department"].ToString();
                string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                string accountcode = "";
                for (int g = 0; g < dtB.Rows.Count; g++)
                {
                    if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                    {
                        DataRow dr = dtbudget.NewRow();
                        dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                        dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                        dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                        dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                        accountcode = dtB.Rows[g]["COACode"].ToString();
                        DataTable dtC = new DataTable();
                        dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                        for (int h = 0; h < dtC.Rows.Count; h++)
                        {
                            if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                            {
                                dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                            }
                            else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                            {
                                dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                            }
                            else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                            {
                                dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                            }
                        }
                        dtbudget.Rows.Add(dr);
                    }
                }
                //计算%,取得名称,预算转换为本地汇率
                for (int g = 0; g < dtbudget.Rows.Count; g++)
                {
                    if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                    }
                    if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                    }
                    if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                    {
                        dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                    }
                    if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                    {
                        dtbudget.Rows[g]["EName"] = "Travel expense";
                    }
                    else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                    {
                        dtbudget.Rows[g]["EName"] = "Entertainment";
                    }
                    else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                    {
                        dtbudget.Rows[g]["EName"] = "Transportation";
                    }
                    else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                    {
                        dtbudget.Rows[g]["EName"] = "Communication";
                    }
                    dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                    dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                    dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                    dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                    dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                    dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                    dtbudget.Rows[g]["RequestID"] = ID;
                    dtbudget.Rows[g]["Status"] = 3;
                    dtbudget.Rows[g]["LocalCur"] = CurLocal;
                    dtbudget.Rows[g]["CenterCur"] = CurBudget;
                    dtbudget.Rows[g]["Rate"] = rate;
                }
                //DataTable dtBudget = new DataTable();
                if (!SendMail("T", Request.QueryString["RequestID"].ToString(), newid, dtbudget))//Budget已经计入Current,%不需要重新计算
                {
                    ErrorHandle("Error mail address."); return;
                }
                X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
            }
        }
예제 #10
0
        protected void Save(object sender, DirectEventArgs e)
        {
            //检查是否登录超时
            if (Request.Cookies.Get("eReimUserID") == null)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    X.AddScript("Ext.Msg.show({ title: '提示', msg: '登录超时,将刷新页面.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                else
                {
                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Time out,reloading...', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                return;
            }
            cs.DBCommand dbc = new cs.DBCommand();
            string para = e.ExtraParams[0].Value;
            SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["eReimbursement"].ConnectionString);
            string ID = Request.QueryString["RequestID"].ToString();
            string sql = "select * from Eflow where RequestID='" + Request.QueryString["RequestID"].ToString() + "' and [Type]='" + Request.QueryString["Type"].ToString() + "' order by Step,id";
            DataTable dt = new DataTable();
            dt = dbc.GetData("eReimbursement", sql);

            string sqlf = "select * from ETravel where ID=" + ID;
            DataTable dtf = dbc.GetData("eReimbursement", sqlf);
            if (dt != null)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (dt.Rows[i]["Active"].ToString() == "1")
                    {
                        if (para=="3")//拒绝申请
                        {
                            string updatesql = "update Eflow set Active=2,Status=3,Remark='" + txtRemark.Text.Replace("'", "''") + "',ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + dt.Rows[i]["id"].ToString();
                            if (dt.Rows[i]["Type"].ToString() == "T")
                            {
                                updatesql += ";update ETravel set Status=3 where ID=" + dt.Rows[i]["RequestID"].ToString();
                            }
                            else
                            {
                                updatesql += ";update Ecommon set Status=3 where ID=" + dt.Rows[i]["RequestID"].ToString();
                            }
                            string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                            if (newid != "1")
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            else
                            {
                                //保存预算信息
                                try
                                {
                                    string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                                    DataTable dtall = new DataTable();
                                    dtall = dbc.GetData("eReimbursement", sqld);
                                    //预算
                                    //140226 显示预算
                                    DataTable dtbudget = new DataTable();
                                    dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                    dtbudget.Columns.Add("Status", typeof(System.Int16));
                                    dtbudget.Columns.Add("EName", typeof(System.String));
                                    dtbudget.Columns.Add("COACode", typeof(System.String));
                                    dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                    dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                    dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                    dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("CA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                    //取得预算日期
                                    string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                                    DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                    //取得本币与成本中心汇率转换
                                    decimal rate = 1;
                                    string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                    string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtall.Rows[0]["TSation"].ToString());
                                    if (CurLocal != CurBudget)
                                    {
                                        rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                                    }

                                    //取得4大类合计
                                    //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                                    string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                                    DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                                    //取得传递预算的参数
                                    string userid = dtf.Rows[0]["PersonID"].ToString();
                                    string dpt = dtf.Rows[0]["Department"].ToString();
                                    string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                                    string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                                    string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                                    string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                                    string accountcode = "";
                                    for (int g = 0; g < dtB.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                        {
                                            DataRow dr = dtbudget.NewRow();
                                            dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                            dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                                            dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                                            dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                            accountcode = dtB.Rows[g]["COACode"].ToString();
                                            DataTable dtC = new DataTable();
                                            dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                                            for (int h = 0; h < dtC.Rows.Count; h++)
                                            {
                                                if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                                                {
                                                    dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                                                {
                                                    dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                                                {
                                                    dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                            }
                                            dtbudget.Rows.Add(dr);
                                        }
                                    }
                                    //计算%,取得名称,预算转换为本地汇率
                                    for (int g = 0; g < dtbudget.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                        }
                                        if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Travel expense";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Entertainment";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Transportation";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Communication";
                                        }
                                        dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                        dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                        dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                        dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                        dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                        dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                                        dtbudget.Rows[g]["RequestID"] = ID;
                                        dtbudget.Rows[g]["Status"] = 3;
                                        dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                        dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                        dtbudget.Rows[g]["Rate"] = rate;
                                    }
                                    for (int g = 0; g < dtbudget.Rows.Count; g++)
                                    {
                                        SqlCommand scdetail = sqlConn.CreateCommand();
                                        scdetail.CommandText = "Insert into Budget_Complete (FormType,RequestID,Status,COACode,EName,LocalCur,CenterCur,Rate,LocalAmount,PA,CA,PU,PB,PPercent,DU,DB,DPercent,SU,SB,SPercent) values (@FormType,@RequestID,@Status,@COACode,@EName,@LocalCur,@CenterCur,@Rate,@LocalAmount,@PA,@CA,@PU,@PB,@PPercent,@DU,@DB,@DPercent,@SU,@SB,@SPercent)";
                                        SqlParameter spdetail = new SqlParameter("@RequestID", SqlDbType.Int);
                                        spdetail.Value = Convert.ToInt32(ID);
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@FormType", SqlDbType.VarChar, 10);
                                        spdetail.Value = "T";
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@Status", SqlDbType.Int);
                                        spdetail.Value = Convert.ToInt16(dtbudget.Rows[g]["Status"].ToString());
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@COACode", SqlDbType.VarChar,50);
                                        spdetail.Value = dtbudget.Rows[g]["COACode"].ToString();
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@EName", SqlDbType.VarChar, 50);
                                        spdetail.Value = dtbudget.Rows[g]["EName"].ToString();
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@LocalCur", SqlDbType.VarChar, 10);
                                        spdetail.Value = dtbudget.Rows[g]["LocalCur"].ToString();
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@CenterCur", SqlDbType.VarChar, 10);
                                        spdetail.Value = dtbudget.Rows[g]["CenterCur"].ToString();
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@Rate", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["Rate"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@LocalAmount", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["Current"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@PA", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["PA"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@CA", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["CA"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@PU", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["PU"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@PB", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["PB"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@PPercent", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["PPercent"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@DU", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["DU"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@DB", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["DB"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@DPercent", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["DPercent"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@SU", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["SU"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@SB", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["SB"];
                                        scdetail.Parameters.Add(spdetail);

                                        spdetail = new SqlParameter("@SPercent", SqlDbType.Decimal);
                                        spdetail.Value = dtbudget.Rows[g]["SPercent"];
                                        scdetail.Parameters.Add(spdetail);

                                        sqlConn.Open();
                                        int row = scdetail.ExecuteNonQuery();
                                        sqlConn.Close();
                                    }
                                    if (!SendMail("T", Request.QueryString["RequestID"].ToString(), dt.Rows[i]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                    {
                                        ErrorHandle("Error mail address."); return;
                                    }
                                }
                                catch (Exception)
                                {
                                    
                                    throw;
                                }
                                X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Rejected and form complete.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                            }
                        }
                        else//同意申请
                        {
                            if (i == dt.Rows.Count-1)
                            {
                                string updatesql = "update Eflow set Active=2,Status=2,Remark='" + txtRemark.Text.Replace("'", "''") + "',ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + dt.Rows[i]["id"].ToString();
                                if (dt.Rows[i]["Type"].ToString() == "T")
                                {
                                    updatesql += ";update ETravel set Status=2 where ID=" + dt.Rows[i]["RequestID"].ToString();
                                }
                                else
                                {
                                    updatesql += ";update Ecommon set Status=2 where ID=" + dt.Rows[i]["RequestID"].ToString();
                                }
                                string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                                if (newid != "1")
                                {
                                    ErrorHandle("Data Error.");
                                    return;
                                }
                                else
                                {
                                    //保存预算信息
                                    try
                                    {
                                        string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                                        DataTable dtall = new DataTable();
                                        dtall = dbc.GetData("eReimbursement", sqld);
                                        //预算
                                        //140226 显示预算
                                        DataTable dtbudget = new DataTable();
                                        dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                        dtbudget.Columns.Add("Status", typeof(System.Int16));
                                        dtbudget.Columns.Add("EName", typeof(System.String));
                                        dtbudget.Columns.Add("COACode", typeof(System.String));
                                        dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                        dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                        dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                        dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PA", typeof(System.Decimal));
                                        dtbudget.Columns.Add("CA", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                        //取得预算日期
                                        string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                                        DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                        //取得本币与成本中心汇率转换
                                        decimal rate = 1;
                                        string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                        string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtall.Rows[0]["TSation"].ToString());
                                        if (CurLocal != CurBudget)
                                        {
                                            rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                                        }

                                        //取得4大类合计
                                        //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                                        string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                                        DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                                        //取得传递预算的参数
                                        string userid = dtf.Rows[0]["PersonID"].ToString();
                                        string dpt = dtf.Rows[0]["Department"].ToString();
                                        string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                                        string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                                        string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                                        string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                                        string accountcode = "";
                                        for (int g = 0; g < dtB.Rows.Count; g++)
                                        {
                                            if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                            {
                                                DataRow dr = dtbudget.NewRow();
                                                dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                                dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                                                dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                                                dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                                accountcode = dtB.Rows[g]["COACode"].ToString();
                                                DataTable dtC = new DataTable();
                                                dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                                                for (int h = 0; h < dtC.Rows.Count; h++)
                                                {
                                                    if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                                                    {
                                                        dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                                                    {
                                                        dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                                                    {
                                                        dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                }
                                                dtbudget.Rows.Add(dr);
                                            }
                                        }
                                        //计算%,取得名称,预算转换为本地汇率
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                            }
                                            if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Travel expense";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Entertainment";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Transportation";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Communication";
                                            }
                                            dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                            dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                            dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                            dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                            dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                            dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                                            dtbudget.Rows[g]["RequestID"] = ID;
                                            dtbudget.Rows[g]["Status"] = 2;
                                            dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                            dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                            dtbudget.Rows[g]["Rate"] = rate;
                                        }
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            SqlCommand scdetail = sqlConn.CreateCommand();
                                            scdetail.CommandText = "Insert into Budget_Complete (FormType,RequestID,Status,COACode,EName,LocalCur,CenterCur,Rate,LocalAmount,PA,CA,PU,PB,PPercent,DU,DB,DPercent,SU,SB,SPercent) values (@FormType,@RequestID,@Status,@COACode,@EName,@LocalCur,@CenterCur,@Rate,@LocalAmount,@PA,@CA,@PU,@PB,@PPercent,@DU,@DB,@DPercent,@SU,@SB,@SPercent)";
                                            SqlParameter spdetail = new SqlParameter("@RequestID", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt32(ID);
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@FormType", SqlDbType.VarChar, 10);
                                            spdetail.Value = "T";
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Status", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt16(dtbudget.Rows[g]["Status"].ToString());
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@COACode", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["COACode"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@EName", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["EName"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["LocalCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@CenterCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["CenterCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Rate", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Rate"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalAmount", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Current"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PA", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PA"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@CA", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["CA"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            sqlConn.Open();
                                            int row = scdetail.ExecuteNonQuery();
                                            sqlConn.Close();
                                        }
                                        if (!SendMail("T", Request.QueryString["RequestID"].ToString(), dt.Rows[i]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                        {
                                            ErrorHandle("Error mail address."); return;
                                        }
                                    }
                                    catch (Exception)
                                    {

                                        throw;
                                    }
                                

                                    
                                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved and form complete.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                }
                            }
                            else
                            {
                                string updatesql = "update Eflow set Active=-1,Status=2,Remark='" + txtRemark.Text.Replace("'", "''") + "',ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + dt.Rows[i]["id"].ToString();
                                updatesql += ";update Eflow set Active=1 where id=" + dt.Rows[i + 1]["id"].ToString();
                                string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                                if (newid != "1")
                                {
                                    ErrorHandle(newid);
                                    return;
                                }
                                else
                                {
                                    string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                                    DataTable dtall = new DataTable();
                                    dtall = dbc.GetData("eReimbursement", sqld);
                                    //预算
                                    //140226 显示预算
                                    DataTable dtbudget = new DataTable();
                                    dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                    dtbudget.Columns.Add("Status", typeof(System.Int16));
                                    dtbudget.Columns.Add("EName", typeof(System.String));
                                    dtbudget.Columns.Add("COACode", typeof(System.String));
                                    dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                    dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                    dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                    dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("CA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                    //取得预算日期
                                    string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                                    DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                    //取得本币与成本中心汇率转换
                                    decimal rate = 1;
                                    string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                    string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtall.Rows[0]["TSation"].ToString());
                                    if (CurLocal != CurBudget)
                                    {
                                        rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                                    }

                                    //取得4大类合计
                                    //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                                    string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                                    DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                                    //取得传递预算的参数
                                    string userid = dtf.Rows[0]["PersonID"].ToString();
                                    string dpt = dtf.Rows[0]["Department"].ToString();
                                    string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                                    string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                                    string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                                    string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                                    string accountcode = "";
                                    for (int g = 0; g < dtB.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                        {
                                            DataRow dr = dtbudget.NewRow();
                                            dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                            dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                                            dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                                            dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                            accountcode = dtB.Rows[g]["COACode"].ToString();
                                            DataTable dtC = new DataTable();
                                            dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                                            for (int h = 0; h < dtC.Rows.Count; h++)
                                            {
                                                if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                                                {
                                                    dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                                                {
                                                    dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                                                {
                                                    dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                            }
                                            dtbudget.Rows.Add(dr);
                                        }
                                    }
                                    //计算%,取得名称,预算转换为本地汇率
                                    for (int g = 0; g < dtbudget.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                        }
                                        if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Travel expense";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Entertainment";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Transportation";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Communication";
                                        }
                                        dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                        dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                        dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                        dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                        dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                        dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                                        dtbudget.Rows[g]["RequestID"] = ID;
                                        dtbudget.Rows[g]["Status"] = 3;
                                        dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                        dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                        dtbudget.Rows[g]["Rate"] = rate;
                                    }

                                    if (!SendMail("T", Request.QueryString["RequestID"].ToString(), dt.Rows[i + 1]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                    {
                                        ErrorHandle("Error mail address."); return;
                                    }
                                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                }
                            }
                        }
                        break;
                    }
                }
            }
            
        }
예제 #11
0
        //用于保存差旅费明细
        protected void SubmitData(object sender, StoreSubmitDataEventArgs e)
        {
            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //检查是否已经被该人设置过审批人
            string sqlCheckFlow = "select * from GroupFlow where GID=(select GID from GroupUsers where UserID='" + cbxOwner.Text + "')";
            DataTable dtCheckFlow = dbc.GetData("eReimbursement", sqlCheckFlow);
            if (dtCheckFlow.Rows.Count < 1)
            {
                return;
            }
            string json = e.Json;
            XmlNode xml = e.Xml;
            List<Detail> Details = e.Object<Detail>();
            //删除现有数据
            string deletesql = "delete from ETraveleDetail where [No]='" + hdTravelRequestID.Value.ToString() + "'";
            string newid1 = dbc.UpdateData("eReimbursement", deletesql, "Update");
            foreach (Detail detail in Details)
            {
                if (newid1 == "-1")
                {
                    ErrorHandle("Data Error.");
                    return;
                }
                //新增
                string word = "[No],[Tocity],[AccountName],[AccountCode],[AccountDes],[Cur],[Pamount],[Camount],[TSation],[Createdby],[CreadedDate],[Tdate]";
                string value = "";
                value += "'" + hdTravelRequestID.Value.ToString() + "',";
                value += "'" + detail.Tocity + "',";
                value += "'" + detail.AccountName + "',";
                value += "'" + detail.AccountCode + "',";
                value += "'" + detail.AccountDes + "',";
                value += "'" + detail.Cur + "',";
                value += detail.Pamount == "" ? "null," : detail.Pamount + ",";
                value += detail.Camount == "" ? "null," : detail.Camount + ",";
                value += "'" + detail.TSation + "',";
                value += "'" + cbxOwner.Text + "',";//edit
                value += "'" + DateTime.Now.ToString() + "',";
                value += detail.Tdate == "" ? "null" : "'" + detail.Tdate + "'";

                string updatesql = "insert into ETraveleDetail (" + word + ") values(" + value + ");select [ID]=@@IDENTITY from ETraveleDetail";

                string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
                if (newid == "-1")
                {
                    ErrorHandle("Data Error."); return;
                }
            }
            //发送提醒邮件
            string sql = "select * from V_Eflow_ETravel where [Type]='T' and Step!=0 and RequestID=" + hdTravelRequestID.Value.ToString() + " order by Step,FlowID";
            DataTable dtMail = new DataTable();
            dtMail = dbc.GetData("eReimbursement", sql);
            if (dtMail != null && dtMail.Rows.Count > 0)
            {
                DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
                mail.Title = "Dimerco eReimbursement (" + dtMail.Rows[0]["Person"].ToString() + ") - Seek For Your Approval";
                mail.FromDispName = "eReimbursement";
                mail.From = "*****@*****.**";

                string mailto = "";
                DataSet dsTo = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[0]["ApproverID"].ToString());
                if (dsTo.Tables[0].Rows.Count == 1)
                {
                    mailto += dsTo.Tables[0].Rows[0]["eMail"].ToString() + ",";
                }
                else
                {
                    ErrorHandle("Error mail address of Approver."); return;
                }

                string mailcc = "";
                DataSet dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[0]["PersonID"].ToString());
                if (dsCC.Tables[0].Rows.Count == 1)
                {
                    mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                }
                else
                {
                    ErrorHandle("Error mail address of Owner."); return;
                }
                if (dtMail.Rows[0]["CreadedByID"].ToString() != "" && dtMail.Rows[0]["CreadedByID"].ToString() != dtMail.Rows[0]["PersonID"].ToString())//代理人
                {
                    dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[0]["CreadedByID"].ToString());
                    mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                }

                mail.To = mailto;
                mail.Cc = mailcc;
                string divstyle = "style='font-size:small;'";
                string divstyleCurrent = "style='font-size:small;color:blue;'";
                string tdstyle = "style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF'";
                StringBuilder sb = new StringBuilder();
                sb.Append("<div>");
                sb.Append("<div " + divstyle + "> Dear " + dtMail.Rows[0]["Approver"].ToString() + ",</div><br />");
                sb.Append("<div " + divstyle + ">The following eReimbursement application for your approval:</div><br /><br />");
                sb.Append("<div " + divstyle + ">eReimbursement Approval Remarks :</div><br />");
                sb.Append("<div " + divstyle + ">Owner:" + dtMail.Rows[0]["Person"].ToString() + "</div>");
                sb.Append("<div " + divstyle + ">Station:" + dtMail.Rows[0]["Station"].ToString() + "</div>");
                sb.Append("<div " + divstyle + ">Department:" + dtMail.Rows[0]["Department"].ToString() + "</div>");
                string period = "";
                period += dtMail.Rows[0]["Bdate"].ToString() == "" ? "From NA " : ("From " + Convert.ToDateTime(dtMail.Rows[0]["Bdate"].ToString()).ToString("yyyy/MM/dd") + " ");
                period += dtMail.Rows[0]["Edate"].ToString() == "" ? "To NA" : "To " + Convert.ToDateTime(dtMail.Rows[0]["Edate"].ToString()).ToString("yyyy/MM/dd");
                sb.Append("<div " + divstyle + ">Period:" + period + "</div><br />");
                sb.Append("<div><table><thead><tr><th colspan=\"9\" " + tdstyle + ">Expense Detail</th></tr><tr>");
                sb.Append("<th " + tdstyle + "></th>");
                sb.Append("<th " + tdstyle + ">Location</th>");
                sb.Append("<th " + tdstyle + ">Date</th>");
                sb.Append("<th " + tdstyle + ">Expense Type</th>");
                sb.Append("<th " + tdstyle + ">Currency</th>");
                sb.Append("<th " + tdstyle + ">Employee Pay</th>");
                sb.Append("<th " + tdstyle + ">Company Pay</th>");
                sb.Append("<th " + tdstyle + ">Collection Station</th>");
                sb.Append("<th " + tdstyle + ">Remark</th></tr></thead>");

                sb.Append("<tbody>");
                decimal ptotal = 0; decimal ctotal = 0;
                string sqldetail = "select t2.SAccountName,t1.* from ETraveleDetail t1 left join AccoundCode t2 on t2.SAccountCode=t1.AccountCode where t1.[No]='" + hdTravelRequestID.Value.ToString() + "'";
                DataTable dtdetail = new DataTable();
                dtdetail = dbc.GetData("eReimbursement", sqldetail);
                for (int i = 0; i < dtdetail.Rows.Count; i++)
                {
                    sb.Append("<tr><th " + tdstyle + ">" + (i + 1).ToString() + "</th>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["Tocity"].ToString() + "</td>");
                    string tdate = dtdetail.Rows[i]["Tdate"].ToString() == "" ? "" : Convert.ToDateTime(dtdetail.Rows[i]["Tdate"].ToString()).ToString("yyyy/MM/dd");
                    sb.Append("<td " + tdstyle + ">" + tdate + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["SAccountName"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["Cur"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["Pamount"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["Camount"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["TSation"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["AccountDes"].ToString() + "</td></tr>");
                    ptotal += dtdetail.Rows[i]["Pamount"].ToString() == "" ? 0 : Convert.ToDecimal(dtdetail.Rows[i]["Pamount"].ToString());
                    ctotal += dtdetail.Rows[i]["Camount"].ToString() == "" ? 0 : Convert.ToDecimal(dtdetail.Rows[i]["Camount"].ToString());
                }
                sb.Append("</tbody>");
                sb.Append("<tfoot><tr>");
                sb.Append("<th " + tdstyle + ">Total:</th>");
                sb.Append("<td " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[0]["Cur"].ToString() + "</td>");
                sb.Append("<td " + tdstyle + ">" + ptotal.ToString() + "</td>");
                sb.Append("<td " + tdstyle + ">" + ctotal.ToString() + "</td>");
                sb.Append("<td " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + "></td>");
                sb.Append("</tr></tfoot></table></div><br />");
                
                
                StringBuilder sb1 = new StringBuilder();
                sb1.Append("<div><span " + divstyle + ">Approval Flow:</span>");
                for (int i = 0; i < dtMail.Rows.Count; i++)
                {
                    if (i == 0)
                    {
                        sb1.Append("<div " + divstyleCurrent + ">" + (i + 1).ToString() + ".Current Approver:" + dtMail.Rows[i]["Approver"].ToString() + "</div>");
                    }
                    else
                    {
                        sb1.Append("<div " + divstyle + ">" + (i + 1).ToString() + ".Approver:" + dtMail.Rows[i]["Approver"].ToString() + "</div>");
                    }
                }
                sb1.Append("</div><br />");
                sb.Append(sb1.ToString());
                string url = "http://" + Request.Url.Authority + "/Approve.aspx";
                sb.Append("<div><a href=\"" + url + "?FlowID=" + dtMail.Rows[0]["FlowID"].ToString() + "\" style=\"color: #0000FF\">Click here to visit Dimerco eReimbursement.</a></div>");
                sb.Append("</div>");
                mail.Body = sb.ToString();
                mail.Send();
            }
        }
예제 #12
0
        protected void Save(object sender, DirectEventArgs e)
        {
            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //检查是否已经为该申请人设置过审批人
            string sqlCheckFlow = "select * from GroupFlow where GID=(select GID from GroupUsers where UserID='" + cbxOwner.Text + "')";
            DataTable dtCheckFlow = dbc.GetData("eReimbursement", sqlCheckFlow);
            if (dtCheckFlow.Rows.Count < 1)
            {
                ErrorHandle("请先设置审批人.");
                return;
            }
            string para = e.ExtraParams[0].Value;
            if (para == "ND")//保存并申请
            {
                if (hdTravelRequestID.Value.ToString() == "")//直接新增申请,不通过草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[CreadedBy],[CreadedDate],[Attach],[Remark],[Bdate],[Edate],[PersonID],[CreadedByID]";
                    string value = "";
                    value += "'" + labelStation.Text + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + X.GetValue("cbxOwner") + "',"; value += "'" + labelStation.Text + "',"; value += "'" + labelDepartment.Text + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString();
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + Session["UserName"].ToString() + "'";//edit
                    value += ",'" + DateTime.Now.ToString() + "',";
                    value += "'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text + "',";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    value += Bdate == "" ? "null," : "'" + Bdate + "',";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    value += Edate == "" ? "null" : "'" + Edate + "'";
                    value += ",'" + cbxOwner.Text + "'";
                    value += ",'" + Session["UserID"].ToString() + "'";
                    
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+convert(varchar,ID)+'T' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
                    
                    //操作Flow表
                    string sqlGetGroupFlowData = "select * from GroupFlow where GID=(select GID from GroupUsers where UserID='" + cbxOwner.Text + "')";
                    DataTable dtGroupFlowData = new DataTable();
                    dtGroupFlowData = dbc.GetData("eReimbursement", sqlGetGroupFlowData);
                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[Remark],[RequestID]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newid.Split(',')[1] + "',";
                        valueflow += "'T',";
                        valueflow += "'" + labelStation.Text + "',";
                        valueflow += "'" + labelDepartment.Text + "',";
                        valueflow += "'" + X.GetValue("cbxOwner") + "',";
                        valueflow += "'" + Session["UserName"].ToString() + "',";
                        valueflow += "'" + DateTime.Now.ToString() + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += "'" + txtRemark.Text + "',";
                        valueflow += "'" + newid.Split(',')[0] + "'";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                        Panel3.Title = "差旅费申请单:" + newid.Split(',')[1];
                        UpdateMSG("保存申请单:" + newid.Split(',')[1] + "成功.");

                    }
                    //
                }
                else//由草稿升级为正式申请
                {
                    string updatesql = "update ETravel set [Person]='" + X.GetValue("cbxOwner");
                    updatesql += "',[Station]='" + labelStation.Text;
                    updatesql += "',[Department]='" + labelDepartment.Text;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[Type]=0";
                    updatesql += ",[PersonID]='" + cbxOwner.Text + "'";
                    string oldno = hdTravelRequestNo.Value.ToString();
                    string newno = hdTravelRequestNo.Value.ToString().Substring(0, hdTravelRequestNo.Value.ToString().Length - 1);
                    updatesql += ",[No]='" + newno + "',";
                    updatesql += "[CreadedDate]='" + DateTime.Now.ToString() + "',";
                    updatesql += "[CreadedBy]='" + Session["UserName"].ToString() + "',";
                    updatesql += "[CreadedByID]='" + Session["UserID"].ToString() + "'";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    updatesql += Bdate == "" ? ",Bdate=null" : ",Bdate='" + Bdate + "'";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    updatesql += Edate == "" ? ",Edate=null" : ",Edate='" + Edate + "'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                    
                    //操作Flow表
                    string sqlDeleteEflow = "delete from Eflow where [No]='" + oldno + "'";
                    string deleterows = dbc.UpdateData("eReimbursement", sqlDeleteEflow, "Update");
                    string sqlGetGroupFlowData = "select * from GroupFlow where GID=(select GID from GroupUsers where UserID='" + cbxOwner.Text + "')";
                    DataTable dtGroupFlowData = new DataTable();
                    dtGroupFlowData = dbc.GetData("eReimbursement", sqlGetGroupFlowData);
                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[Remark],[RequestID]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newno + "',";
                        valueflow += "'T',";
                        valueflow += "'" + labelStation.Text + "',";
                        valueflow += "'" + labelDepartment.Text + "',";
                        valueflow += "'" + X.GetValue("cbxOwner") + "',";
                        valueflow += "'" + Session["UserName"].ToString() + "',";
                        valueflow += "'" + DateTime.Now.ToString() + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += "'" + txtRemark.Text + "'";
                        valueflow += "," + hdTravelRequestID.Value.ToString();
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    //
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestNo.Value = newno;
                        Panel3.Title = "差旅费申请单:" + newno;
                        UpdateMSG("保存申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                    }
                }
                X.AddScript("btnGeteLeave.disable();btnEditDetail.disable();btnNewDetail.disable();btnSaveDraft.disable();btnSaveAndSend.disable();");
            }
            else//保存草稿
            {
                if (hdTravelRequestID.Value.ToString() != "")//由链接进入的草稿更新
                {
                    string updatesql = "update ETravel set [Person]='" + X.GetValue("cbxOwner");
                    updatesql += "',[Station]='" + labelStation.Text;
                    updatesql += "',[Department]='" + labelDepartment.Text;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[PersonID]='" + cbxOwner.Text + "'";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    updatesql += Bdate == "" ? ",Bdate=null" : ",Bdate='" + Bdate + "'";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    updatesql += Edate == "" ? ",Edate=null" : ",Edate='" + Edate + "'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                    
                    //更新Eflow表
                    string sqlupdateflow = "update Eflow set [Station]='" + labelStation.Text + "',";
                    sqlupdateflow += "[Department]='" + labelDepartment.Text + "',";
                    sqlupdateflow += "[Person]='" + X.GetValue("cbxOwner") + "',";
                    sqlupdateflow += "[Tamount]=" + (hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",");
                    sqlupdateflow += "[Remark]='" + txtRemark.Text + "'";
                    sqlupdateflow += " where [No]='" + hdTravelRequestNo.Value.ToString() + "'";

                    string rows = dbc.UpdateData("eReimbursement", sqlupdateflow, "Update");
                    if (newid == "-1" || rows != "1")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        //hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        //Panel3.Title = "差旅费申请单:" + newid.Split(',')[1];
                        //X.AddScript("GridPanel2.submitData();");
                        UpdateMSG("保存草稿:" + hdTravelRequestNo.Value.ToString() + "成功.");
                    }

                }
                else//如果ID为空则判断为新增草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[Attach],[Remark],[Bdate],[Edate],[Type],[PersonID]";
                    string value = "";
                    value += "'" + labelStation.Text + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + X.GetValue("cbxOwner") + "',"; value += "'" + "GCR" + "',"; value += "'" + "MIS" + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text + "',";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    value += Bdate == "" ? "null," : "'" + Bdate + "',";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    value += Edate == "" ? "null," : "'" + Edate + "',";
                    value += "1";//标识为草稿
                    value += ",'" + cbxOwner.Text + "'";
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+convert(varchar,ID)+'TD' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");
                    
                    //操作Flow表
                    string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Remark],[RequestID],[Active]";
                    string valueflow = "";
                    valueflow += "'" + newid.Split(',')[1] + "',";
                    valueflow += "'T',";
                    valueflow += "'" + labelStation.Text + "',";
                    valueflow += "'" + labelDepartment.Text + "',";
                    valueflow += "'" + X.GetValue("cbxOwner") + "',";
                    valueflow += "'" + Session["UserName"].ToString() + "',";
                    valueflow += "'" + DateTime.Now.ToString() + "',";
                    valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                    valueflow += "'" + txtRemark.Text + "',";
                    valueflow += "'" + newid.Split(',')[0] + "'";
                    valueflow += ",1";
                    string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                    string rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    //
                    if (newid == "-1" || rows == "-1")
                    {
                        ErrorHandle("Data Error."); return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                        Panel3.Title = "差旅费申请单草稿:" + newid.Split(',')[1];
                        UpdateMSG("新增草稿:" + newid.Split(',')[1] + "成功.");
                    }
                }
            }
        }
예제 #13
0
        public void SaveAll(string type, string detail, string MailList)
        {
            if (Request.Cookies.Get("eReimUserID") == null || hdUser.Value.ToString() != Request.Cookies.Get("eReimUserID").Value)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    X.AddScript("Ext.Msg.show({ title: '提示', msg: '登录超时或已切换用户,将刷新页面.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                else
                {
                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Time out or user changed,reloading...', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                return;
            }
            //页面权限
            //DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //string userid = cbxPerson.Value.ToString();
            //160113 垫付人
            string userid = (hdOnBehalf.Value == null || hdOnBehalf.Value.ToString() == "") ? cbxPerson.Value.ToString() : hdOnBehalf.Value.ToString();
            string ostation = "";
            string para = type;
            string station = ""; string department = "";

            string station_applyperson = ""; string costcenter_applyperson = ""; string dept_applyperson = "";
            DataSet ds_apply = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(cbxPerson.Value.ToString());
            if (ds_apply.Tables[0].Rows.Count == 1)
            {
                DataTable dt_apply = ds_apply.Tables[0];
                dept_applyperson = dt_apply.Rows[0]["DepartmentName"].ToString();
                station_applyperson = dt_apply.Rows[0]["stationCode"].ToString();
                costcenter_applyperson = dt_apply.Rows[0]["CostCenter"].ToString();
            }

            DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
            if (ds2.Tables[0].Rows.Count == 1)
            {
                DataTable dt1 = ds2.Tables[0];
                //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                station = dt1.Rows[0]["stationCode"].ToString();
                ostation = dt1.Rows[0]["CostCenter"].ToString();
                department = dt1.Rows[0]["CRPDepartmentName"].ToString();
            }

            decimal rate = 1;//记录用户币种与预算站点币种汇率
            string CurLocal = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(station_applyperson);
            //检查是否本地维护过特殊币种
            DataTable dttemp = new DataTable();
            string sqltemp = "select * from ESUSER where Userid='" + cbxPerson.Value.ToString() + "'";
            dttemp = dbc.GetData("eReimbursement", sqltemp);
            if (dttemp.Rows.Count > 0)
            {
                CurLocal = dttemp.Rows[0]["Currency"].ToString();//如果单独设置了币种
            }
            string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(ostation);
            //预算
            DataTable dtbudget = new DataTable();
            dtbudget.Columns.Add("Year", typeof(System.String));//区分跨年情况
            dtbudget.Columns.Add("EName", typeof(System.String));
            dtbudget.Columns.Add("COACode", typeof(System.String));
            dtbudget.Columns.Add("Current", typeof(System.Decimal));
            dtbudget.Columns.Add("PU", typeof(System.Decimal));
            dtbudget.Columns.Add("PB", typeof(System.Decimal));
            dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
            dtbudget.Columns.Add("DU", typeof(System.Decimal));
            dtbudget.Columns.Add("DB", typeof(System.Decimal));
            dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
            dtbudget.Columns.Add("SU", typeof(System.Decimal));
            dtbudget.Columns.Add("SB", typeof(System.Decimal));
            dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

            //StoreBudget添加Field
            //StoreBudget.Reader[0].Fields.Clear();
            StoreBudget.Reader[0].Fields.Add("Year", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("EName", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("COACode", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("Current", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("PU", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("PB", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("PPercent", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("DU", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("DB", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("DPercent", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("SU", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("SB", RecordFieldType.String);
            StoreBudget.Reader[0].Fields.Add("SPercent", RecordFieldType.String);

            //基础数据
            DataTable dtA = new DataTable();
            dtA.Columns.Add("EName", typeof(System.String));
            dtA.Columns.Add("COACode", typeof(System.String));
            dtA.Columns.Add("Amount", typeof(System.Decimal));
            dtA.Columns.Add("Year", typeof(System.String));

            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<DetailExpense> Details = ser.Deserialize<List<DetailExpense>>(detail);
            if (Details.Count < 1)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    X.AddScript("Ext.Msg.show({ title: '提示', msg: '请至少填写一项费用.', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                }
                else
                {
                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Please input at least one expense item.', buttons: { ok: 'Ok' }, fn: function (btn) {  } });");
                }
                return;
            }
            foreach (DetailExpense details in Details)
            {
                DataRow dr = dtA.NewRow();
                string EName = "";
                if (details.Type == "E")
                {
                    EName = "Entertainment";
                }
                else if (details.Type == "T")
                {
                    EName = "Transportation";
                }
                else if (details.Type == "C")
                {
                    EName = "Communication";
                }
                else
                {
                    EName = details.COAName;
                }
                dr["EName"] = EName;
                dr["COACode"] = details.AccountCode;
                dr["Amount"] = Convert.ToDecimal(details.Amount);
                if (details.Type == "C")
                {
                    dr["Year"] = Convert.ToDateTime(details.EffectTime).Year.ToString();
                }
                else
                {
                    dr["Year"] = Convert.ToDateTime(details.Tdate).Year.ToString();
                }
                dtA.Rows.Add(dr);
            }
            //合计数据
            DataTable dtB = new DataTable();
            dtB.Columns.Add("EName", typeof(System.String));
            dtB.Columns.Add("COACode", typeof(System.String));
            dtB.Columns.Add("Amount", typeof(System.Decimal));
            dtB.Columns.Add("Year", typeof(System.String));
            for (int i = 0; i < dtA.Rows.Count; i++)
            {
                bool er = false;
                for (int j = 0; j < dtB.Rows.Count; j++)
                {
                    if (dtB.Rows[j]["COACode"].ToString() == dtA.Rows[i]["COACode"].ToString() && dtB.Rows[j]["Year"].ToString() == dtA.Rows[i]["Year"].ToString())//已有记录
                    {
                        er = true;
                        break;
                    }
                }
                if (!er)//不存在重复记录
                {
                    DataRow dr = dtB.NewRow();
                    dr["EName"] = dtA.Rows[i]["EName"].ToString();
                    dr["COACode"] = dtA.Rows[i]["COACode"].ToString();
                    dr["Amount"] = dtA.Compute("Sum(Amount)", "Year = " + dtA.Rows[i]["Year"].ToString() + " and COACode = " + dtA.Rows[i]["COACode"].ToString());
                    dr["Year"] = dtA.Rows[i]["Year"].ToString();
                    dtB.Rows.Add(dr);
                }
            }
            string accountcode = "";
            for (int g = 0; g < dtB.Rows.Count; g++)
            {
                if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                {
                    DataRow dr = dtbudget.NewRow();
                    dr["EName"] = dtB.Rows[g]["EName"].ToString();
                    dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                    dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                    dr["Year"] = dtB.Rows[g]["Year"].ToString();
                    accountcode = dtB.Rows[g]["COACode"].ToString();
                    DataTable dtC = new DataTable();
                    dtC = Comm.RtnEB(userid, department, ostation, ostation, accountcode, dtB.Rows[g]["Year"].ToString(), "1");
                    for (int i = 0; i < dtC.Rows.Count; i++)
                    {
                        if (dtC.Rows[i]["Type"].ToString() == "全年个人")
                        {
                            dr["PU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                            dr["PB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());
                        }
                        else if (dtC.Rows[i]["Type"].ToString() == "全年部门")
                        {
                            dr["DU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                            dr["DB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());
                        }
                        else if (dtC.Rows[i]["Type"].ToString() == "全年站点")
                        {
                            dr["SU"] = Convert.ToDecimal(dtC.Rows[i]["Used"].ToString());
                            dr["SB"] = Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString());

                            //if (Convert.ToDecimal(dtC.Rows[i]["Budget"].ToString())==0)
                            //{
                            //    //输出预算内容
                            //    DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();

                            //    mail.FromDispName = "eReimbursement";
                            //    mail.From = "*****@*****.**";
                            //    mail.To = "*****@*****.**";
                            //    mail.Title = "eReimbursement Bug" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:dd");
                            //    string body = "<div>" + userid + "<br/>";
                            //    body += "department:" + department + "<br/>";
                            //    body += "ostation:" + ostation + "<br/>";
                            //    body += "accountcode:" + accountcode + "<br/>";
                            //    body += "year:" + dtB.Rows[g]["Year"].ToString() + "<br/>";
                            //    body += "budget EB:" + dtC.Rows[i]["Budget"].ToString() + "<br/></div>";
                            //    mail.Body = body;
                            //    mail.Send();
                            //}
                            
                        }
                    }
                    dtbudget.Rows.Add(dr);
                }
            }
            //bool UnBudget = false;
            //14/10/24
            int budgetnew = 1;//默认预算内,0 - UnBudgeted,-1 Over-Budgeted,-2,UnBudgeted & Over-Budgeted
            bool PB = false, DB = false, SB = false;
            //计算%,取得名称,转为本地币种汇率,增加列记录Currency为邮件准备
            dtbudget.Columns.Add("Currency", typeof(System.String));
            for (int i = 0; i < dtbudget.Rows.Count; i++)
            {
                dtbudget.Rows[i]["Currency"] = CurLocal;
                if (Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                {
                    decimal PPercent = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["PU"].ToString()) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()), 2);
                    decimal PPercent1 = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[i]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[i]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()), 2);
                    dtbudget.Rows[i]["PPercent"] = PPercent;
                    //if (!UnBudget)
                    //{
                    //    if (PPercent1 > 100)
                    //    {
                    //        UnBudget = true;
                    //    }
                    //}
                    //14/10/24
                    if (PPercent1 > 100)
                    {
                        if (budgetnew == 0)
                        {
                            budgetnew = -2;
                        }
                        else if (budgetnew == 1)
                        {
                            budgetnew = -1;
                        }
                    }
                    if (!PB)
                    {
                        PB = true;
                    }
                }
                if (Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                {
                    decimal DPercent = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["DU"].ToString()) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()), 2);
                    decimal DPercent1 = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[i]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[i]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()), 2);
                    dtbudget.Rows[i]["DPercent"] = DPercent;
                    //if (!UnBudget)
                    //{
                    //    if (DPercent1 > 100)
                    //    {
                    //        UnBudget = true;
                    //    }
                    //}
                    //14/10/24
                    if (DPercent1 > 100)
                    {
                        if (budgetnew == 0)
                        {
                            budgetnew = -2;
                        }
                        else if (budgetnew == 1)
                        {
                            budgetnew = -1;
                        }
                    }
                    if (!DB)
                    {
                        DB = true;
                    }
                }
                if (Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                {
                    decimal SPercent = System.Math.Round(Convert.ToDecimal(dtbudget.Rows[i]["SU"].ToString()) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()), 2);
                    decimal SPercent1 = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[i]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[i]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()), 2);
                    dtbudget.Rows[i]["SPercent"] = SPercent;
                    //if (!UnBudget)
                    //{
                    //    if (SPercent1 > 100)
                    //    {
                    //        UnBudget = true;
                    //    }
                    //}
                    //14/10/24
                    if (SPercent1 > 100)
                    {
                        if (budgetnew == 0)
                        {
                            budgetnew = -2;
                        }
                        else if (budgetnew == 1)
                        {
                            budgetnew = -1;
                        }
                    }
                    if (!SB)
                    {
                        SB = true;
                    }
                }
                if (Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()) == 0 && Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()) == 0 && Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()) == 0)
                {
                    //如果个人,部门,站点,全未分配预算,则判断为Un-Budget
                    //if (!UnBudget)
                    //{
                    //    UnBudget = true;
                    //}
                    //14/10/24
                    if (budgetnew == -1)
                    {
                        budgetnew = -2;
                    }
                    else if (budgetnew == 1)
                    {
                        budgetnew = 0;
                    }
                }
                if (CurLocal != CurBudget)
                {
                    rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToInt16(dtbudget.Rows[i]["Year"].ToString()));
                    if (rate == -1)
                    {
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            X.AddScript("Ext.Msg.show({ title: '提示', msg: '汇率异常,请联系Local MIS.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Currency rate error,please contact Local MIS.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                        }
                        return;
                    }
                }
                dtbudget.Rows[i]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["PU"].ToString()), 2);
                dtbudget.Rows[i]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["PB"].ToString()), 2);
                dtbudget.Rows[i]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["DU"].ToString()), 2);
                dtbudget.Rows[i]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["DB"].ToString()), 2);
                dtbudget.Rows[i]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["SU"].ToString()), 2);
                dtbudget.Rows[i]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[i]["SB"].ToString()), 2);
            }
            //160113 垫付人
            if (hdOnBehalf.Value == null || hdOnBehalf.Value.ToString()=="")
            {
                //添加数据列
                var cm = GridPanelBudget.ColumnModel;
                cm.Columns.Clear();
                cm.Columns.Add(new Column
                {
                    DataIndex = "EName",
                    Header = "Expense Item",
                    Sortable = false,
                    Resizable = false,
                    MenuDisabled = true,
                    Width = 160
                });
                cm.Columns.Add(new Column
                {
                    DataIndex = "Current",
                    Header = "Current",
                    Renderer = new Renderer { Fn = "GetNumber" },
                    Sortable = false,
                    Resizable = false,
                    MenuDisabled = true,
                    Width = 100
                });
                cm.Columns.Add(new Column
                {
                    DataIndex = "Year",
                    Header = "Budget Year",
                    Sortable = false,
                    Resizable = false,
                    MenuDisabled = true,
                    Width = 100
                });
                //显示个人预算部分
                if (PB)
                {
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "PU",
                        Header = "Personal Used",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "PB",
                        Header = "Personal Budget",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "PPercent",
                        Header = "%(Used/Budget)",
                        Renderer = new Renderer { Fn = "GetNumberPercent" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                }
                if (DB)
                {
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "DU",
                        Header = "Department Used",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "DB",
                        Header = "Department Budget",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "DPercent",
                        Header = "%(Used/Budget)",
                        Renderer = new Renderer { Fn = "GetNumberPercent" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                }
                if (SB)
                {
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "SU",
                        Header = "Unit Used",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "SB",
                        Header = "Unit Budget",
                        Renderer = new Renderer { Fn = "GetNumber" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                    cm.Columns.Add(new Column
                    {
                        DataIndex = "SPercent",
                        Header = "%(Used/Budget)",
                        Renderer = new Renderer { Fn = "GetNumberPercent" },
                        Sortable = false,
                        Resizable = false,
                        MenuDisabled = true,
                        Width = 100
                    });
                }

                StoreBudget.DataSource = dtbudget;
                StoreBudget.DataBind();
                GridPanelBudget.Render();
            }
            
            //return;
            //处理抄送人列表
            string CCMailList = "";
            JavaScriptSerializer serd = new JavaScriptSerializer();
            List<CCMailList> CCMailList1 = serd.Deserialize<List<CCMailList>>(MailList);
            foreach (CCMailList mail in CCMailList1)
            {
                CCMailList += mail.Email + ",";
            }
            CCMailList = CCMailList.Length > 0 ? CCMailList.Substring(0, CCMailList.Length - 1) : "";

            //处理申请单为Budget或Un-Budget
            //如果有费用大类超过预算,则提示询问
            //if (UnBudget)//
            //{
            //    X.AddScript("Ext.Msg.show({ title: 'Message', msg: '部分费用超过预算,仅可按<a style=\"color:Red\">Un-Budget</a>流程申请,是否接受?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew();}else{return false;} } });");
            //}
            //14/10/24
            if (budgetnew != 1)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    if (budgetnew == 0)
                    {
                        //输出预算内容
                        //DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();

                        //mail.FromDispName = "eReimbursement";
                        //mail.From = "*****@*****.**";
                        //mail.To = "*****@*****.**";
                        //mail.Title = "eReimbursement Bug" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:dd");
                        //string body = "<div>" + Request.Cookies.Get("eReimUserID").Value + "<br/>Common<br/><table>";
                        //body += "<tr>";
                        //for (int j = 0; j < dtbudget.Columns.Count; j++)
                        //{
                        //    body += "<th>" + dtbudget.Columns[j].ColumnName + "</th>";
                        //}
                        //body += "</tr>";
                        //for (int i = 0; i < dtbudget.Rows.Count; i++)
                        //{
                        //    body += "<tr>";
                        //    for (int j = 0; j < dtbudget.Columns.Count; j++)
                        //    {
                        //        body += "<td>" + dtbudget.Rows[i][j].ToString() + "</td>";
                        //    }
                        //    body += "</tr>";
                        //}
                        //body += "</table></div>";
                        //mail.Body = body;
                        //mail.Send();
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '未设置预算,仅可按<a style=\"color:Red\">UnBudgeted</a>流程申请,是否接受?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                    else if (budgetnew == -1)
                    {
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '超出预算,仅可按<a style=\"color:Red\">Over-Budgeted</a>流程申请,是否接受?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                    else if (budgetnew == -2)
                    {
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '未设置预算或超出预算,仅可按<a style=\"color:Red\">UnBudgeted</a>流程申请,是否接受?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                }
                else
                {
                    if (budgetnew == 0)
                    {
                        //输出预算内容
                        //DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();

                        //mail.FromDispName = "eReimbursement";
                        //mail.From = "*****@*****.**";
                        //mail.To = "*****@*****.**";
                        //mail.Title = "eReimbursement Bug" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:dd");
                        //string body = "<div>" + Request.Cookies.Get("eReimUserID").Value + "<br/>Common<br/><table>";
                        //body += "<tr>";
                        //for (int j = 0; j < dtbudget.Columns.Count; j++)
                        //{
                        //    body += "<th>" + dtbudget.Columns[j].ColumnName + "</th>";
                        //}
                        //body += "</tr>";
                        //for (int i = 0; i < dtbudget.Rows.Count; i++)
                        //{
                        //    body += "<tr>";
                        //    for (int j = 0; j < dtbudget.Columns.Count; j++)
                        //    {
                        //        body += "<td>" + dtbudget.Rows[i][j].ToString() + "</td>";
                        //    }
                        //    body += "</tr>";
                        //}
                        //body += "</table></div>";
                        //mail.Body = body;
                        //mail.Send();
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '<a style=\"color:Red\">UnBudgeted</a>,do you accept?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                    else if (budgetnew == -1)
                    {
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '<a style=\"color:Red\">Over-Budgeted</a>,do you accept?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                    else if (budgetnew == -2)
                    {
                        //160224 如果为垫付,则直接保存不提示预算情况
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            X.AddScript("SaveAllNew('" + budgetnew.ToString() + "');");
                        }
                        else
                        {
                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: '<a style=\"color:Red\">UnBudgeted</a>,do you accept?', buttons: { ok: 'Ok',cancel:'No' }, fn: function (btn) { if(btn=='ok'){SaveAllNew('" + budgetnew.ToString() + "');}else{return false;} } });");
                        }
                    }
                }
                return;
            }
            else//全在预算内,按预算内申请流程处理
            {
                //判断是否设置了审批流程
                string sqlCheckFlow = ""; DataTable dtGroupFlowData = new DataTable();

                if (hdOnBehalf.Value == null || hdOnBehalf.Value.ToString() == "")
                {
                    //sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + cbxPerson.Value.ToString() + "')";
                    sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + cbxPerson.Value.ToString() + "') order by FlowNo";
                    dtGroupFlowData = dbc.GetData("eReimbursement", sqlCheckFlow);
                    if (dtGroupFlowData.Rows.Count < 1)
                    {
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            ErrorHandleNojump("请先设置审批人.");
                        }
                        else
                        {
                            ErrorHandleNojump("Not set Approve flow,please contact with Local MIS.");
                        }
                        return;
                    }
                }
                else//160113 垫付审批流程
                {
                    sqlCheckFlow = "select UserID,t1.* from (select * from GroupFlow where [Type]!=2 and GID in (select GID from GroupUsers where UserID='" + cbxPerson.Value.ToString() + "' or UserID='" + hdOnBehalf.Value.ToString() + "')) t1 left join (select * from GroupUsers where UserID='" + cbxPerson.Value.ToString() + "' or UserID='" + hdOnBehalf.Value.ToString() + "') t2 on t2.Gid=t1.Gid order by Gid,FlowNo";
                    //sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID in (select GID from GroupUsers where UserID='" + cbxPerson.Value.ToString() + "' or UserID='"+hdOnBehalf.Value.ToString()+"') order by Gid,FlowNo";
                    dtGroupFlowData = dbc.GetData("eReimbursement", sqlCheckFlow);
                    if (dtGroupFlowData.Rows.Count < 1)
                    {
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            ErrorHandleNojump("请先设置审批人.");
                        }
                        else
                        {
                            ErrorHandleNojump("Not set Approve flow,please contact with Local MIS.");
                        }
                        return;
                    }
                }
                if (type == "ND")//保存并申请
                {
                    string onbehalfname = "";
                    if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                    {
                        DataSet dsCon = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOnBehalf.Value.ToString());
                        onbehalfname = dsCon.Tables[0].Rows[0]["fullName"].ToString();
                    }
                    if (hdTravelRequestID.Value.ToString() != "")
                    {
                        if (LabelMonth.Text != DateTime.Now.Month.ToString() && DateTime.Now.Day > 5)
                        {
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                X.AddScript("Ext.Msg.show({ title: '提示', msg: '草稿已过期,请新增本月草稿.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                            }
                            else
                            {
                                X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Draft expired,please add new draft.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                            }
                            return;
                        }
                        string oldno = hdTravelRequestNo.Value.ToString();
                        string newno = hdTravelRequestNo.Value.ToString().Substring(0, hdTravelRequestNo.Value.ToString().Length - 1);
                        string updatesql = "update Ecommon set [No]='" + newno + "',";
                        updatesql += "Person='" + X.GetValue("cbxPerson") + "',";
                        updatesql += "PersonID='" + cbxPerson.Text + "',";
                        updatesql += "Department='" + dept_applyperson + "',";
                        updatesql += "Station='" + station_applyperson + "',";
                        updatesql += "Tamount=" + (hdSum.Value.ToString() == "" ? "null," : ("'" + hdSum.Value.ToString() + "',"));
                        updatesql += "[Type]=0,";
                        updatesql += "CreadedBy='" + Request.Cookies.Get("eReimUserName").Value + "',";
                        updatesql += "CreatedByID='" + Request.Cookies.Get("eReimUserID").Value + "',";
                        updatesql += "CreadedDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                        updatesql += "Remark='" + txtRemark.Text.Replace("'", "''") + "',";
                        updatesql += "CCMailList='" + CCMailList + "'";
                        updatesql += ",[Budget]=1";
                        updatesql += ",Station2='" + ostation + "'";
                        //160123 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            updatesql += ",OnBehalfPersonID='" + hdOnBehalf.Value.ToString() + "'";
                            DataSet dsE = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOnBehalf.Value.ToString());
                            if (dsE.Tables[0].Rows.Count == 1)
                            {
                                DataTable dtE = dsE.Tables[0];
                                onbehalfname = dtE.Rows[0]["fullName"].ToString();
                                updatesql += ",OnBehalfPersonName='" + dtE.Rows[0]["fullName"].ToString() + "'";
                                updatesql += ",OnBehalfPersonUnit='" + dtE.Rows[0]["stationCode"].ToString() + "'";
                                updatesql += ",OnBehalfPersonDept='" + dtE.Rows[0]["CRPDepartmentName"].ToString() + "'";
                                updatesql += ",OnBehalfPersonCostCenter='" + dtE.Rows[0]["CostCenter"].ToString() + "'";
                            }
                        }
                        
                        updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                        //操作Flow表
                        string sqlDeleteEflow = "delete from Eflow where [Type]='G' and [RequestID]='" + hdTravelRequestID.Value.ToString() + "'";
                        string deleterows = dbc.UpdateData("eReimbursement", sqlDeleteEflow, "Update");
                        string rows = "";

                        //160113 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            string personid = cbxPerson.Value.ToString();
                            string onbehalfid = hdOnBehalf.Value.ToString();
                            DataTable dtOnbehalf = new DataTable();
                            dtOnbehalf.Columns.Add("FlowNo");
                            dtOnbehalf.Columns.Add("FlowUser");
                            dtOnbehalf.Columns.Add("FlowUserid");
                            dtOnbehalf.Columns.Add("Fn");
                            dtOnbehalf.Columns.Add("PersonID");

                            //160905垫付流程变更 2016090007E
                            DataRow drConfirm = dtOnbehalf.NewRow();
                            drConfirm["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            drConfirm["FlowUser"] = onbehalfname;
                            drConfirm["FlowUserid"] = hdOnBehalf.Value.ToString();
                            drConfirm["Fn"] = "Confirm";
                            drConfirm["PersonID"] = hdOnBehalf.Value.ToString();
                            dtOnbehalf.Rows.Add(drConfirm);

                            //被垫付人的Verifier
                            if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count() >= 1)
                            {
                                
                                DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count()) - 1];

                                if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                {
                                    DataRow dr = dtOnbehalf.NewRow();
                                    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                    dr["FlowUser"] = drold["FlowUser"].ToString();
                                    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                    dr["Fn"] = "Verifier";
                                    dr["PersonID"] = drold["UserID"].ToString();
                                    dtOnbehalf.Rows.Add(dr);
                                }
                            }
                            //被垫付人的Apporver
                            if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            {
                                int flowcount = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count();
                                if (flowcount >= 2)
                                {
                                    DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 2];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                    DataRow drold1 = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold1["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold1["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold1["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold1["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                }
                                else
                                {
                                    DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                }
                            }
                            //160905垫付流程变更 2016090007E
                            ////垫付人的Apporver
                            //if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            //{
                            //    DataRow dr = dtOnbehalf.NewRow();
                            //    DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                            //    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //    dr["FlowUser"] = drold["FlowUser"].ToString();
                            //    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                            //    dr["Fn"] = "Apporver";
                            //    dr["PersonID"] = drold["UserID"].ToString();
                            //    dtOnbehalf.Rows.Add(dr);
                            //}
                            //垫付人的Issuer
                            if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count() >= 1)
                            {
                                DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count()) - 1];
                                if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                {
                                    DataRow dr = dtOnbehalf.NewRow();

                                    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                    dr["FlowUser"] = drold["FlowUser"].ToString();
                                    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                    dr["Fn"] = "Issuer";
                                    dr["PersonID"] = drold["UserID"].ToString();
                                    dtOnbehalf.Rows.Add(dr);
                                }
                                
                            }
                            for (int j = 0; j < dtOnbehalf.Rows.Count; j++)
                            {
                                string wordflow = "[RequestID],[Type],[Step],[Status],[Approver],[ApproverID],[FlowFn],PersonID";
                                //if (dtGroupFlowData.Rows[j]["FlowNo"].ToString() == "1")
                                //{
                                //    wordflow += ",[Active]";
                                //}
                                if (j == 0)
                                {
                                    wordflow += ",[Active]";
                                }
                                string valueflow = "";
                                valueflow += "'" + hdTravelRequestID.Value.ToString() + "',";
                                valueflow += "'G',";
                                valueflow += dtOnbehalf.Rows[j]["FlowNo"].ToString() + ",";
                                valueflow += "1,";
                                valueflow += "'" + dtOnbehalf.Rows[j]["FlowUser"].ToString() + "',";
                                valueflow += "'" + dtOnbehalf.Rows[j]["FlowUserid"].ToString() + "'";
                                valueflow += ",'" + (dtOnbehalf.Rows[j]["Fn"].ToString() == "" ? "Apporver" : dtOnbehalf.Rows[j]["Fn"].ToString()) + "'";
                                valueflow += ",'" + dtOnbehalf.Rows[j]["PersonID"].ToString() + "'";
                                //if (dtGroupFlowData.Rows[j]["FlowNo"].ToString() == "1")
                                //{
                                //    valueflow += ",1";
                                //}
                                if (j == 0)
                                {
                                    valueflow += ",1";
                                }
                                string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";

                                rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                            }

                        }
                        else
                        {
                            for (int j = 0; j < dtGroupFlowData.Rows.Count; j++)
                            {
                                string wordflow = "[RequestID],[Type],[Step],[Status],[Approver],[ApproverID],[FlowFn]";
                                //if (dtGroupFlowData.Rows[j]["FlowNo"].ToString() == "1")
                                //{
                                //    wordflow += ",[Active]";
                                //}
                                if (j == 0)
                                {
                                    wordflow += ",[Active]";
                                }
                                string valueflow = "";
                                valueflow += "'" + hdTravelRequestID.Value.ToString() + "',";
                                valueflow += "'G',";
                                valueflow += dtGroupFlowData.Rows[j]["FlowNo"].ToString() + ",";
                                valueflow += "1,";
                                valueflow += "'" + dtGroupFlowData.Rows[j]["FlowUser"].ToString() + "',";
                                valueflow += "'" + dtGroupFlowData.Rows[j]["FlowUserid"].ToString() + "'";
                                valueflow += ",'" + (dtGroupFlowData.Rows[j]["Fn"].ToString() == "" ? "Apporver" : dtGroupFlowData.Rows[j]["Fn"].ToString()) + "'";
                                //if (dtGroupFlowData.Rows[j]["FlowNo"].ToString() == "1")
                                //{
                                //    valueflow += ",1";
                                //}
                                if (j == 0)
                                {
                                    valueflow += ",1";
                                }
                                string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";

                                rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                            }
                        }
                        
                        if (newid == "-1" || rows == "-1" || rows == "")
                        {
                            ErrorHandle("Data Error");
                        }
                        else
                        {
                            hdTravelRequestNo.Value = newno;
                            // || !SendMail(hdTravelRequestID.Value.ToString())
                            if (!SaveDetail(detail, CurLocal, ostation, CurBudget) || !SendMailNew(dtbudget))//Budget未计入Current,%需重新计算
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "通用申请单:" + newno;
                                UpdateMSG("保存通用申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                            }
                            else
                            {
                                Panel3.Title = "General Expense Form: " + newno;
                                UpdateMSG("Saved General Expense Form: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                            }
                        }
                    }
                    else//直接申请
                    {
                        string word = "[No],[Person],[PersonID],[Department],[Station],[ApplyDate],[Remark],[Tamount],[CreadedBy],[CreatedByID],[CreadedDate],[CCMailList],[Budget],[Station2]";
                        //160123 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        { word += ",OnBehalfPersonID,OnBehalfPersonName,OnBehalfPersonUnit,OnBehalfPersonDept,OnBehalfPersonCostCenter"; }
                        string value = "";
                        value += "'" + station_applyperson + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                        value += "'" + X.GetValue("cbxPerson") + "',";
                        value += "'" + cbxPerson.Text + "',";
                        value += "'" + dept_applyperson + "',";
                        value += "'" + station_applyperson + "',";
                        value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                        value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                        value += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        value += "'" + Request.Cookies.Get("eReimUserName").Value + "',";//session
                        value += "'" + Request.Cookies.Get("eReimUserID").Value + "',";//session
                        value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "'";
                        value += ",'" + CCMailList + "'";
                        value += ",1";
                        value += ",'" + ostation + "'";
                        //160123 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            value += ",'" + hdOnBehalf.Value.ToString() + "'";
                            DataSet dsE = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOnBehalf.Value.ToString());
                            if (dsE.Tables[0].Rows.Count == 1)
                            {
                                DataTable dtE = dsE.Tables[0];
                                value += ",'" + dtE.Rows[0]["fullName"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["stationCode"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["CRPDepartmentName"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["CostCenter"].ToString() + "'";
                            }
                        }

                        string updatesql = "insert into Ecommon (" + word + ") values(" + value + ");update Ecommon set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from Ecommon where (month(ApplyDate) in (select month(ApplyDate) from Ecommon where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from Ecommon where [ID]=@@IDENTITY)) and Station=(select Station from Ecommon where ID=@@IDENTITY)))+'G' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from Ecommon where ID=@@IDENTITY";

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                        string rows = "";

                        //160113 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            string personid = cbxPerson.Value.ToString();
                            string onbehalfid = hdOnBehalf.Value.ToString();
                            DataTable dtOnbehalf = new DataTable();
                            dtOnbehalf.Columns.Add("FlowNo");
                            dtOnbehalf.Columns.Add("FlowUser");
                            dtOnbehalf.Columns.Add("FlowUserid");
                            dtOnbehalf.Columns.Add("Fn");
                            dtOnbehalf.Columns.Add("PersonID");
                            //160905垫付流程变更 2016090007E
                            DataRow drConfirm = dtOnbehalf.NewRow();
                            drConfirm["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            drConfirm["FlowUser"] = onbehalfname;
                            drConfirm["FlowUserid"] = hdOnBehalf.Value.ToString();
                            drConfirm["Fn"] = "Confirm";
                            drConfirm["PersonID"] = hdOnBehalf.Value.ToString();
                            dtOnbehalf.Rows.Add(drConfirm);

                            //被垫付人的Verifier
                            if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count() >= 1)
                            {

                                DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count()) - 1];

                                if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                {
                                    DataRow dr = dtOnbehalf.NewRow();
                                    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                    dr["FlowUser"] = drold["FlowUser"].ToString();
                                    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                    dr["Fn"] = "Verifier";
                                    dr["PersonID"] = drold["UserID"].ToString();
                                    dtOnbehalf.Rows.Add(dr);
                                }
                            }
                            //被垫付人的Apporver
                            if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            {
                                int flowcount = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count();
                                if (flowcount >= 2)
                                {
                                    DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 2];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                    DataRow drold1 = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold1["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold1["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold1["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold1["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                }
                                else
                                {
                                    DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                                    if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                    {
                                        DataRow dr = dtOnbehalf.NewRow();
                                        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                        dr["FlowUser"] = drold["FlowUser"].ToString();
                                        dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                        dr["Fn"] = "Apporver";
                                        dr["PersonID"] = drold["UserID"].ToString();
                                        dtOnbehalf.Rows.Add(dr);
                                    }
                                }
                            }
                            //160905垫付流程变更 2016090007E
                            ////垫付人的Apporver
                            //if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            //{
                            //    DataRow dr = dtOnbehalf.NewRow();
                            //    DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                            //    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //    dr["FlowUser"] = drold["FlowUser"].ToString();
                            //    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                            //    dr["Fn"] = "Apporver";
                            //    dr["PersonID"] = drold["UserID"].ToString();
                            //    dtOnbehalf.Rows.Add(dr);
                            //}
                            //垫付人的Issuer
                            if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count() >= 1)
                            {
                                DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count()) - 1];
                                if (dtOnbehalf.Select("FlowUserid='" + drold["FlowUserID"].ToString() + "'").Count() < 1)
                                {
                                    DataRow dr = dtOnbehalf.NewRow();

                                    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                                    dr["FlowUser"] = drold["FlowUser"].ToString();
                                    dr["FlowUserid"] = drold["FlowUserID"].ToString();
                                    dr["Fn"] = "Issuer";
                                    dr["PersonID"] = drold["UserID"].ToString();
                                    dtOnbehalf.Rows.Add(dr);
                                }

                            }

                            ////被垫付人的Verifier
                            //if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count() >= 1)
                            //{
                            //    DataRow dr = dtOnbehalf.NewRow();
                            //    DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and Fn='Verifier'").Count()) - 1];
                            //    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //    dr["FlowUser"] = drold["FlowUser"].ToString();
                            //    dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //    dr["Fn"] = "Verifier";
                            //    dr["PersonID"] = drold["UserID"].ToString();
                            //    dtOnbehalf.Rows.Add(dr);
                            //}
                            ////被垫付人的Apporver
                            //if (dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            //{
                            //    int flowcount = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count();
                            //    if (flowcount >= 2)
                            //    {
                            //        DataRow dr = dtOnbehalf.NewRow();
                            //        DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 2];
                            //        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //        dr["FlowUser"] = drold["FlowUser"].ToString();
                            //        dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //        dr["Fn"] = "Apporver";
                            //        dr["PersonID"] = drold["UserID"].ToString();
                            //        dtOnbehalf.Rows.Add(dr);

                            //        dr = dtOnbehalf.NewRow();
                            //        drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                            //        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //        dr["FlowUser"] = drold["FlowUser"].ToString();
                            //        dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //        dr["Fn"] = "Apporver";
                            //        dr["PersonID"] = drold["UserID"].ToString();
                            //        dtOnbehalf.Rows.Add(dr);
                            //    }
                            //    else
                            //    {
                            //        DataRow dr = dtOnbehalf.NewRow();
                            //        DataRow drold = dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + onbehalfid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                            //        dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //        dr["FlowUser"] = drold["FlowUser"].ToString();
                            //        dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //        dr["Fn"] = "Apporver";
                            //        dr["PersonID"] = drold["UserID"].ToString();
                            //        dtOnbehalf.Rows.Add(dr);
                            //    }

                            //}
                            ////垫付人的Apporver
                            //if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count() >= 1)
                            //{
                            //    DataRow dr = dtOnbehalf.NewRow();
                            //    DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Apporver' or Fn is null)").Count()) - 1];
                            //    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //    dr["FlowUser"] = drold["FlowUser"].ToString();
                            //    dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //    dr["Fn"] = "Apporver";
                            //    dr["PersonID"] = drold["UserID"].ToString();
                            //    dtOnbehalf.Rows.Add(dr);
                            //}
                            ////垫付人的Issuer
                            //if (dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count() >= 1)
                            //{
                            //    DataRow dr = dtOnbehalf.NewRow();
                            //    DataRow drold = dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)")[(dtGroupFlowData.Select("UserID='" + personid + "' and (Fn='Issuer' or Fn is null)").Count()) - 1];
                            //    dr["FlowNo"] = (dtOnbehalf.Rows.Count + 1).ToString();
                            //    dr["FlowUser"] = drold["FlowUser"].ToString();
                            //    dr["FlowUserid"] = drold["FlowUserid"].ToString();
                            //    dr["Fn"] = "Issuer";
                            //    dr["PersonID"] = drold["UserID"].ToString();
                            //    dtOnbehalf.Rows.Add(dr);
                            //}

                            for (int j = 0; j < dtOnbehalf.Rows.Count; j++)
                            {
                                string wordflow = "[RequestID],[Type],[Step],[Status],[Approver],[ApproverID],[FlowFn],PersonID";
                                //if (dtGroupFlowData.Rows[j]["FlowNo"].ToString() == "1")
                                //{
                                //    wordflow += ",[Active]";
                                //}
                                if (j == 0)
                                {
                                    wordflow += ",[Active]";
                                }
                                string valueflow = "";
                                valueflow += "'" + newid.Split(',')[0] + "',";
                                valueflow += "'G',";
                                valueflow += dtOnbehalf.Rows[j]["FlowNo"].ToString() + ",";
                                valueflow += "1,";
                                valueflow += "'" + dtOnbehalf.Rows[j]["FlowUser"].ToString() + "',";
                                valueflow += "'" + dtOnbehalf.Rows[j]["FlowUserid"].ToString() + "'";
                                valueflow += ",'" + (dtOnbehalf.Rows[j]["Fn"].ToString() == "" ? "Apporver" : dtOnbehalf.Rows[j]["Fn"].ToString()) + "'";
                                valueflow += ",'" + dtOnbehalf.Rows[j]["PersonID"].ToString() + "'";
                                if (j == 0)
                                {
                                    valueflow += ",1";
                                }
                                string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";

                                rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                            }

                        }
                        else
                        {
                            for (int j = 0; j < dtGroupFlowData.Rows.Count; j++)
                            {
                                string wordflow = "[RequestID],[Type],[Step],[Status],[Approver],[ApproverID],[FlowFn]";
                                if (j == 0)
                                {
                                    wordflow += ",[Active]";
                                }
                                string valueflow = "";
                                valueflow += "'" + newid.Split(',')[0] + "',";
                                valueflow += "'G',";
                                valueflow += dtGroupFlowData.Rows[j]["FlowNo"].ToString() + ",";
                                valueflow += "1,";
                                valueflow += "'" + dtGroupFlowData.Rows[j]["FlowUser"].ToString() + "',";
                                valueflow += "'" + dtGroupFlowData.Rows[j]["FlowUserid"].ToString() + "'";
                                valueflow += ",'" + (dtGroupFlowData.Rows[j]["Fn"].ToString() == "" ? "Apporver" : dtGroupFlowData.Rows[j]["Fn"].ToString()) + "'";
                                if (j == 0)
                                {
                                    valueflow += ",1";
                                }

                                string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                                rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                            }
                        }
                        
                        if (newid == "-1" || rows == "-1" || rows == "")
                        {
                            ErrorHandle("Data Error");
                        }
                        else
                        {
                            hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                            hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                            if (!SaveDetail(detail, CurLocal, ostation, CurBudget) || !SendMailNew(dtbudget))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "通用申请单:" + newid.Split(',')[1];
                                UpdateMSG("保存通用申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                            }
                            else
                            {
                                Panel3.Title = "General Expense Form: " + newid.Split(',')[1];
                                UpdateMSG("Saved General Expense Form: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                            }
                        }
                    }
                    X.AddScript("btnSaveDraft.disable();btnSaveAndSend.disable();btnExport.enable();btnCC.disable();btnE.disable();btnT.disable();btnC.disable();btnO.disable();");
                }
                else//保存草稿信息时不保存Budget状态,仅正式申请时保存
                {
                    if (hdTravelRequestID.Value.ToString() != "")//由链接进入的草稿更新
                    {
                        if (LabelMonth.Text != DateTime.Now.Month.ToString() && DateTime.Now.Day > 5)//检查日期是否超期
                        {
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                X.AddScript("Ext.Msg.show({ title: '提示', msg: '草稿已过期,请新增本月草稿.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                            }
                            else
                            {
                                X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Draft expired,please add new draft.', buttons: { ok: 'Ok' }, fn: function (btn) { return false; } });");
                            }
                            return;
                        }

                        string updatesql = "update Ecommon set [Person]='" + X.GetValue("cbxPerson") + "',";
                        updatesql += "[Station]='" + station_applyperson + "',";
                        updatesql += "[Department]='" + dept_applyperson + "',";
                        updatesql += "[Tamount]=" + (hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString()) + ",";
                        updatesql += "[Remark]='" + txtRemark.Text.Replace("'", "''") + "',";
                        updatesql += "[PersonID]='" + cbxPerson.Text + "',";
                        updatesql += "CCMailList='" + CCMailList + "'";
                        updatesql += ",Budget=1";
                        updatesql += ",Station2='" + ostation + "'";
                        //160123 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            updatesql += ",OnBehalfPersonID='" + hdOnBehalf.Value.ToString() + "'";
                            DataSet dsE = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOnBehalf.Value.ToString());
                            if (dsE.Tables[0].Rows.Count == 1)
                            {
                                DataTable dtE = dsE.Tables[0];
                                updatesql += ",OnBehalfPersonName='" + dtE.Rows[0]["fullName"].ToString() + "'";
                                updatesql += ",OnBehalfPersonUnit='" + dtE.Rows[0]["stationCode"].ToString() + "'";
                                updatesql += ",OnBehalfPersonDept='" + dtE.Rows[0]["CRPDepartmentName"].ToString() + "'";
                                updatesql += ",OnBehalfPersonCostCenter='" + dtE.Rows[0]["CostCenter"].ToString() + "'";
                            }
                        }
                        updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        if (newid == "-1")
                        {
                            ErrorHandle("Data Error.");
                        }
                        else
                        {
                            if (!SaveDetail(detail, CurLocal, ostation, CurBudget))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                UpdateMSG("保存通用申请单草稿: " + hdTravelRequestNo.Value.ToString() + "成功.<br />请核对后点击申请按钮.");
                            }
                            else
                            {
                                UpdateMSG("Saved General Expense Draft: " + hdTravelRequestNo.Value.ToString() + " successfully.<br />Please check up and click Apply button.");
                            }

                        }
                    }
                    else//如果ID为空则判断为新增草稿
                    {
                        string word = "[No],[Person],[PersonID],[Department],[Station],[ApplyDate],[Remark],[Tamount],[Type],[CCMailList],[Budget],[Station2]";
                        //160115 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        { word += ",OnBehalfPersonID,OnBehalfPersonName,OnBehalfPersonUnit,OnBehalfPersonDept,OnBehalfPersonCostCenter"; }
					
                        string value = "";
                        value += "'" + station_applyperson + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                        value += "'" + X.GetValue("cbxPerson") + "',";
                        value += "'" + cbxPerson.Text + "',";
                        value += "'" + dept_applyperson + "',";
                        value += "'" + station_applyperson + "',";
                        value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                        value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                        value += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        value += "1,";
                        value += "'" + CCMailList + "'";
                        value += ",1";
                        value += ",'" + ostation + "'";
                        //160123 垫付
                        if (hdOnBehalf.Value != null && hdOnBehalf.Value.ToString() != "")
                        {
                            value += ",'" + hdOnBehalf.Value.ToString() + "'";
                            DataSet dsE = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(hdOnBehalf.Value.ToString());
                            if (dsE.Tables[0].Rows.Count == 1)
                            {
                                DataTable dtE = dsE.Tables[0];
                                value += ",'" + dtE.Rows[0]["fullName"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["stationCode"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["CRPDepartmentName"].ToString() + "'";
                                value += ",'" + dtE.Rows[0]["CostCenter"].ToString() + "'";
                            }
                        }

                        string updatesql = "insert into Ecommon (" + word + ") values(" + value + ");update Ecommon set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from Ecommon where (month(ApplyDate) in (select month(ApplyDate) from Ecommon where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from Ecommon where [ID]=@@IDENTITY)) and Station=(select Station from Ecommon where ID=@@IDENTITY)))+'GD' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from Ecommon where ID=@@IDENTITY";

                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                        //操作Flow表
                        string wordflow = "[RequestID],[Type],[Active]";
                        string valueflow = "";
                        valueflow += "'" + newid.Split(',')[0] + "',";
                        valueflow += "'G',";
                        valueflow += "1";

                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        string rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                        //
                        if (newid == "-1" || rows == "-1")
                        {
                            ErrorHandle("Data Error.");
                        }
                        else
                        {
                            hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                            hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No

                            if (!SaveDetail(detail, CurLocal, ostation, CurBudget))
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                            {
                                Panel3.Title = "通用申请单草稿: " + newid.Split(',')[1];
                                UpdateMSG("新增通用申请单草稿: " + newid.Split(',')[1] + "成功.<br />请核对后点击申请按钮.");
                            }
                            else
                            {
                                Panel3.Title = "General Expense Draft: " + newid.Split(',')[1];
                                UpdateMSG("Added General Expense Draft: " + newid.Split(',')[1] + " successfully.<br />Please check up and click Apply button.");
                            }

                        }
                    }
                }
            }
            X.AddScript("cbxPerson.disable();cbxOnBehalfName.disable();");
        }
예제 #14
0
        /// <summary>
        /// 保存草稿明细,不保存Budget状态
        /// </summary>
        /// <param name="detailjson">json数据</param>
        /// <returns>保存是否成功</returns>
        protected bool SaveDetail(string detailjson,string localcur,string costcenter,string costcentercur)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<DetailExpense> Details = ser.Deserialize<List<DetailExpense>>(detailjson);

            //DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();

            //取得币种转换值
            //删除现有数据
            string deletesql = "delete from EeommonDetail where [No]='" + hdTravelRequestID.Value.ToString() + "'";
            string newid1 = dbc.UpdateData("eReimbursement", deletesql, "Update");
            if (newid1 == "-1")
            {
                ErrorHandle("Data Error.");
                return false;
            }
            foreach (DetailExpense detail in Details)
            {
                
                //新增
                string word = "[No],[Type],[AccountName],[AccountCode],[AccountDes],[Cur],[Amount],[TSation],[Tdate],[Fcity],[Tcity],[Attach],[EType],[EcompanyCode],[Ecompany],[Eperson],[Epurpos],[Creadedby],[CreaedeDate],[EffectTime],[ETypeCode],[Department1],[PaymentType],[PaymentDate],[Vendor],[Budget],[CostCenterAmount]";
                string value = "";
                value += "'" + hdTravelRequestID.Value.ToString() + "',";
                value += "'" + detail.Type + "',";
                value += "'" + detail.AccountName + "',";
                value += "'" + detail.AccountCode + "',";
                value += detail.AccountDes == null ? "null," : ("'" + detail.AccountDes.Replace("'", "''") + "',");
                value += "'" + localcur + "',";
                value += detail.Amount == "" ? "null," : (detail.Amount + ",");
                value += "'" + costcenter + "',";

                if (detail.Type == "C")
                {
                    value += "'" + Convert.ToDateTime(detail.EffectTime).ToString("yyyy/MM/dd") + "',";
                }
                else
                {
                    value += detail.Tdate == "" ? "null," : ("'" + detail.Tdate + "',");
                }
                value += detail.Fcity == null ? "null," : ("'" + detail.Fcity.Replace("'", "''") + "',");
                value += detail.Tcity == null ? "null," : ("'" + detail.Tcity.Replace("'", "''") + "',");
                value += "'" + detail.Attach + "',";
                value += detail.EType == null ? "null," : ("'" + detail.EType.Replace("'", "''") + "',");
                value += detail.EcompanyCode == null ? "null," : ("'" + detail.EcompanyCode.Replace("'", "''") + "',");
                value += detail.Ecompany == null ? "null," : ("'" + detail.Ecompany.Replace("'", "''") + "',");
                value += detail.Eperson == null ? "null," : ("'" + detail.Eperson.Replace("'", "''") + "',");
                value += detail.Epurpos == null ? "null," : ("'" + detail.Epurpos.Replace("'", "''") + "',");
                value += "'" + Request.Cookies.Get("eReimUserID").Value + "',";//Session
                value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                value += detail.EffectTime == null ? "null," : ("'" + detail.EffectTime.Replace("'", "''") + "',");
                value += detail.ETypeCode == null ? "null" : ("'" + detail.ETypeCode.Replace("'", "''") + "'");
                value += ",'" + detail.Department1 + "'";
                value += ",'" + detail.PaymentType + "'";
                value += detail.PaymentDate == "" ? ",null" : (",'" + detail.PaymentDate + "'");
                value += ",'" + detail.Vendor + "'";
                if (detail.Budget)
                {
                    value += ",0,";
                }
                else
                {
                    value += ",1,";
                }
                //处理成本中心币种金额
                //DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(cbxPerson.Text);
                //string station = "";
                //if (ds2.Tables[0].Rows.Count == 1)
                //{
                //    DataTable dt1 = ds2.Tables[0];
                //    station = dt1.Rows[0]["stationCode"].ToString();
                //    DataTable dttemp = new DataTable();
                //    string sqltemp = "select * from ESUSER where Userid='" + cbxPerson.Text + "'";
                //    dttemp = dbc.GetData("eReimbursement", sqltemp);
                //    if (dttemp.Rows.Count > 0)
                //    {
                //        station = dttemp.Rows[0]["Station"].ToString();
                //    }
                //}
                //string Tstation = detail.TSation == "" ? station : detail.TSation;
                decimal re = GetRateByUserID(DateTime.Now.Year, true, localcur,costcentercur);
                string ccamount = String.IsNullOrEmpty(detail.Amount) ? "0" : (System.Math.Round(Convert.ToDecimal(detail.Amount) * re, 2)).ToString();
                value += ccamount;


                string updatesql = "insert into EeommonDetail (" + word + ") values(" + value + ")";
                string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                if (newid == "-1")
                {
                    ErrorHandle("Data Error."); return false;
                }
            }
            return true;
        }
예제 #15
0
        /// <summary>
        /// 区分Budget保存正式Detail
        /// </summary>
        /// <param name="detailjson">json数据</param>
        /// <param name="Type">Budget:1/Un-Budget:0</param>
        /// <returns></returns>
        protected bool SaveDetail2(string detailjson,string Type,string RequestID)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<DetailExpense> Details = ser.Deserialize<List<DetailExpense>>(detailjson);

            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            //删除现有草稿的Detail数据
            string deletesql = "delete from EeommonDetail where [No]=" + RequestID;
            string newid1 = dbc.UpdateData("eReimbursement", deletesql, "Update");
            if (newid1 == "-1")
            {
                ErrorHandle("Data Error.");
                return false;
            }
            if (Type == "1")//预算内
            {
                decimal tamount = 0M;
                foreach (DetailExpense detail in Details)
                {
                    //新增
                    if ((detail.BudgetCurrent == "预算内" || detail.BudgetCurrent == "In Budget") && !detail.Budget)
                    {
                        string word = "[No],[Type],[AccountName],[AccountCode],[AccountDes],[Cur],[Amount],[TSation],[Tdate],[Fcity],[Tcity],[Attach],[EType],[EcompanyCode],[Ecompany],[Eperson],[Epurpos],[Creadedby],[CreaedeDate],[EffectTime],[ETypeCode],[Department1],[PaymentType],[PaymentDate],[Vendor],[Budget],[BudgetCurrent],[CostCenterAmount]";
                        string value = "";
                        value += "'" + RequestID + "',";
                        value += "'" + detail.Type + "',";
                        value += "'" + detail.AccountName + "',";
                        value += "'" + detail.AccountCode + "',";
                        value += detail.AccountDes == null ? "null," : ("'" + detail.AccountDes.Replace("'", "''") + "',");
                        value += "'" + detail.Cur + "',";
                        value += detail.Amount == "" ? "null," : (detail.Amount + ",");
                        value += "'" + detail.TSation + "',";
                        //value += detail.Tdate == "" ? "null," : ("'" + detail.Tdate + "',");
                        if (detail.Type == "C")
                        {
                            value += "'" + Convert.ToDateTime(detail.EffectTime).ToString("yyyy/MM/dd") + "',";
                        }
                        else
                        {
                            value += detail.Tdate == "" ? "null," : ("'" + detail.Tdate + "',");
                        }
                        value += detail.Fcity == null ? "null," : ("'" + detail.Fcity.Replace("'", "''") + "',");
                        value += detail.Tcity == null ? "null," : ("'" + detail.Tcity.Replace("'", "''") + "',");
                        value += "'" + detail.Attach + "',";
                        value += detail.EType == null ? "null," : ("'" + detail.EType.Replace("'", "''") + "',");
                        value += detail.EcompanyCode == null ? "null," : ("'" + detail.EcompanyCode.Replace("'", "''") + "',");
                        value += detail.Ecompany == null ? "null," : ("'" + detail.Ecompany.Replace("'", "''") + "',");
                        value += detail.Eperson == null ? "null," : ("'" + detail.Eperson.Replace("'", "''") + "',");
                        value += detail.Epurpos == null ? "null," : ("'" + detail.Epurpos.Replace("'", "''") + "',");
                        value += "'" + Request.Cookies.Get("eReimUserID").Value + "',";//Session
                        value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                        value += detail.EffectTime == null ? "null," : ("'" + detail.EffectTime.Replace("'", "''") + "',");
                        value += detail.ETypeCode == null ? "null" : ("'" + detail.ETypeCode.Replace("'", "''") + "'");
                        value += ",'" + detail.Department1 + "'";
                        value += ",'" + detail.PaymentType + "'";
                        value += detail.PaymentDate == "" ? ",null" : (",'" + detail.PaymentDate + "'");
                        value += ",'" + detail.Vendor + "'";
                        value += ",1,1,";
                        //处理成本中心币种金额
                        DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(cbxPerson.Text);
                        string station = "";
                        if (ds2.Tables[0].Rows.Count == 1)
                        {
                            DataTable dt1 = ds2.Tables[0];
                            station = dt1.Rows[0]["stationCode"].ToString();
                            DataTable dttemp = new DataTable();
                            string sqltemp = "select * from ESUSER where Userid='" + cbxPerson.Text + "'";
                            dttemp = dbc.GetData("eReimbursement", sqltemp);
                            if (dttemp.Rows.Count > 0)
                            {
                                station = dttemp.Rows[0]["Station"].ToString();
                            }
                        }
                        string Tstation = detail.TSation == "" ? station : detail.TSation;
                        string ccamount = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(detail.Amount) * (DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(station) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(Tstation)), 2)).ToString();
                        value += detail.Amount == "" ? "null" : ccamount;

                        string updatesql = "insert into EeommonDetail (" + word + ") values(" + value + ")";
                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        if (newid == "-1")
                        {
                            ErrorHandle("Data Error."); return false;
                        }
                        tamount += Convert.ToDecimal(detail.Amount);
                    }
                }
                string ecommonsql = "update Ecommon set Tamount=" + tamount + " where ID=" + RequestID;
                string ecommonre = dbc.UpdateData("eReimbursement", ecommonsql, "Update");
            }
            else
            {
                decimal tamount = 0M;
                foreach (DetailExpense detail in Details)
                {
                    //新增
                    if ((detail.BudgetCurrent == "超预算" || detail.BudgetCurrent == "Over Budget" || detail.BudgetCurrent == "NA") || detail.Budget)
                    {
                        string word = "[No],[Type],[AccountName],[AccountCode],[AccountDes],[Cur],[Amount],[TSation],[Tdate],[Fcity],[Tcity],[Attach],[EType],[EcompanyCode],[Ecompany],[Eperson],[Epurpos],[Creadedby],[CreaedeDate],[EffectTime],[ETypeCode],[Department1],[PaymentType],[PaymentDate],[Vendor],[Budget],[BudgetCurrent],[CostCenterAmount]";
                        string value = "";
                        value += "'" + RequestID + "',";
                        value += "'" + detail.Type + "',";
                        value += "'" + detail.AccountName + "',";
                        value += "'" + detail.AccountCode + "',";
                        value += detail.AccountDes == null ? "null," : ("'" + detail.AccountDes.Replace("'", "''") + "',");
                        value += "'" + detail.Cur + "',";
                        value += detail.Amount == "" ? "null," : (detail.Amount + ",");
                        value += "'" + detail.TSation + "',";
                        //value += detail.Tdate == "" ? "null," : ("'" + detail.Tdate + "',");
                        if (detail.Type == "C")
                        {
                            value += "'" + Convert.ToDateTime(detail.EffectTime).ToString("yyyy/MM/dd") + "',";
                        }
                        else
                        {
                            value += detail.Tdate == "" ? "null," : ("'" + detail.Tdate + "',");
                        }
                        value += detail.Fcity == null ? "null," : ("'" + detail.Fcity.Replace("'", "''") + "',");
                        value += detail.Tcity == null ? "null," : ("'" + detail.Tcity.Replace("'", "''") + "',");
                        value += "'" + detail.Attach + "',";
                        value += detail.EType == null ? "null," : ("'" + detail.EType.Replace("'", "''") + "',");
                        value += detail.EcompanyCode == null ? "null," : ("'" + detail.EcompanyCode.Replace("'", "''") + "',");
                        value += detail.Ecompany == null ? "null," : ("'" + detail.Ecompany.Replace("'", "''") + "',");
                        value += detail.Eperson == null ? "null," : ("'" + detail.Eperson.Replace("'", "''") + "',");
                        value += detail.Epurpos == null ? "null," : ("'" + detail.Epurpos.Replace("'", "''") + "',");
                        value += "'" + Request.Cookies.Get("eReimUserID").Value + "',";//Session
                        value += "'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "',";
                        value += detail.EffectTime == null ? "null," : ("'" + detail.EffectTime.Replace("'", "''") + "',");
                        value += detail.ETypeCode == null ? "null" : ("'" + detail.ETypeCode.Replace("'", "''") + "'");
                        value += ",'" + detail.Department1 + "'";
                        value += ",'" + detail.PaymentType + "'";
                        value += detail.PaymentDate == "" ? ",null" : (",'" + detail.PaymentDate + "'");
                        value += ",'" + detail.Vendor + "'";
                        value += detail.Budget ? ",0" : ",1";
                        if (detail.BudgetCurrent == "超预算" || detail.BudgetCurrent == "Over Budget")
                        {
                            value += ",0,";
                        }
                        else
                        {
                            value += ",-1,";
                        }
                        //处理成本中心币种金额
                        DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(cbxPerson.Text);
                        string station = "";
                        if (ds2.Tables[0].Rows.Count == 1)
                        {
                            DataTable dt1 = ds2.Tables[0];
                            station = dt1.Rows[0]["stationCode"].ToString();
                            DataTable dttemp = new DataTable();
                            string sqltemp = "select * from ESUSER where Userid='" + cbxPerson.Text + "'";
                            dttemp = dbc.GetData("eReimbursement", sqltemp);
                            if (dttemp.Rows.Count > 0)
                            {
                                station = dttemp.Rows[0]["Station"].ToString();
                            }
                        }
                        string Tstation = detail.TSation == "" ? station : detail.TSation;
                        string ccamount = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(detail.Amount) * (DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(station) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(Tstation)), 2)).ToString();
                        value += detail.Amount == "" ? "null" : ccamount;

                        string updatesql = "insert into EeommonDetail (" + word + ") values(" + value + ")";
                        string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                        if (newid == "-1")
                        {
                            ErrorHandle("Data Error."); return false;
                        }
                        tamount += Convert.ToDecimal(detail.Amount);
                    }
                }
                string ecommonsql = "update Ecommon set Tamount=" + tamount + " where ID=" + RequestID;
                string ecommonre = dbc.UpdateData("eReimbursement", ecommonsql, "Update");
            }
            return true;
        }
예제 #16
0
        public void SaveAll(string type, string detail, string MailList)
        {
            if (Request.Cookies.Get("eReimUserID") == null || hdUser.Value.ToString() != Request.Cookies.Get("eReimUserID").Value)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    X.AddScript("Ext.Msg.show({ title: '提示', msg: '已切换用户,将刷新页面.', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                else
                {
                    X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Current user changed,reloading...', buttons: { ok: 'Ok' }, fn: function (btn) { window.location.reload(); } });");
                }
                return;
            }
            //如果正式申请必须上传出差报告
            if (type == "ND")
            {
                if (hdReport.Value.ToString() == "")
                {
                    if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                    {
                        X.AddScript("Ext.Msg.show({ title: '提示', msg: '必须上传出差报告.', buttons: { ok: 'Ok' }, fn: function (btn) { return false;} });");
                    }
                    else
                    {
                        X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Please upload travel report.', buttons: { ok: 'Ok' }, fn: function (btn) {return false;} });");
                    }
                    return;
                }
            }
            DateTime dtnull = new DateTime(1, 1, 1, 0, 0, 0);
            cs.DBCommand dbc = new cs.DBCommand();
            string userid = cbxOwner.Value.ToString();
            string ostation = "";
            DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
            if (ds2.Tables[0].Rows.Count == 1)
            {
                DataTable dt1 = ds2.Tables[0];
                //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                ostation = dt1.Rows[0]["stationCode"].ToString();

                DataTable dttemp = new DataTable();
                string sqltemp = "select * from ESUSER where Userid='" + userid + "'";
                dttemp = dbc.GetData("eReimbursement", sqltemp);
                if (dttemp.Rows.Count > 0)
                {
                    ostation = dttemp.Rows[0]["Station"].ToString();
                }
            }
            //判断Budget下是否符合预算要求
            if (cbxBudget.Value.ToString()=="YES")
            {
                JavaScriptSerializer ser1 = new JavaScriptSerializer();
                List<DetailExpense> DetailList = ser1.Deserialize<List<DetailExpense>>(detail);
                for (int ig = 0; ig < DetailList.Count; ig++)
                {
                    DetailExpense detailitem = DetailList[ig];
                    
                    string dpt = detailitem.Department1;
                    
                    string tstation = detailitem.TSation == "" ? ostation : detailitem.TSation;
                    string accountcode = detailitem.AccountCode;
                    string Years = Convert.ToDateTime(detailitem.Tdate).Year.ToString();
                    string month = Convert.ToDateTime(detailitem.Tdate).Month.ToString();

                    DataTable dt = new DataTable();
                    dt = Comm.RtnEB(userid, dpt, ostation, tstation, accountcode, Years, month);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        decimal stationbudget = 0, departmentbudget = 0, personbudget = 0;
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (dt.Rows[i]["Type"].ToString() == "站点")
                            {
                                stationbudget = Convert.ToDecimal(dt.Rows[i]["Budget"].ToString());
                            }
                        }
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (dt.Rows[i]["Type"].ToString() == "部门")
                            {
                                departmentbudget = Convert.ToDecimal(dt.Rows[i]["Budget"].ToString());
                            }
                        }
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (dt.Rows[i]["Type"].ToString() == "个人")
                            {
                                personbudget = Convert.ToDecimal(dt.Rows[i]["Budget"].ToString());
                            }
                        }
                        if (stationbudget == 0 && departmentbudget == 0 && personbudget == 0)
                        {
                            //hdBudget.Value = "0";
                            //ErrorHandleNojump("No budget,please check with Account.");
                            //X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'No budget,please check with Account.', buttons: { ok: 'Ok' }, fn: function (btn) { RowSelectionModel1.selectRow("+ig.ToString()+") } });");
                            X.AddScript("RowSelectionModel1.selectRow(" + ig.ToString() + ")");
                            return;
                        }
                        //else
                        //{
                        //    hdBudget.Value = "1";
                        //}
                    }
                    else
                    {
                        //hdBudget.Value = "0";
                        ErrorHandleNojump("Data error.");
                        return;
                    }
                }

                //foreach (DetailExpense detailitem in DetailList)
                //{
                    
                //}
            }
            //return;
            //处理抄送人列表
            string CCMailList = "";
            JavaScriptSerializer ser = new JavaScriptSerializer();
            List<CCMailList> CCMailList1 = ser.Deserialize<List<CCMailList>>(MailList);
            foreach (CCMailList mail in CCMailList1)
            {
                CCMailList += mail.Email + ",";
            }
            CCMailList = CCMailList.Length > 0 ? CCMailList.Substring(0, CCMailList.Length - 1) : "";
            //检查是否已经为该申请人设置过审批人
            string sqlCheckFlow = "";
            if (cbxBudget.Value.ToString() == "YES")//使用Budget审批流程
            {
                sqlCheckFlow = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
            }
            else//使用unBudget审批流程
            {
                sqlCheckFlow = "select * from GroupFlow where [Type]=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
            }
            DataTable dtGroupFlowData = dbc.GetData("eReimbursement", sqlCheckFlow);
            if (dtGroupFlowData.Rows.Count < 1)
            {
                if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                {
                    ErrorHandleNojump("请先设置审批人.");
                }
                else
                {
                    ErrorHandleNojump("Not set Approve flow,please contact with Local MIS.");
                }
                return;
            }
            string para = type;
            string station = ""; string department = "";
            DataSet ds1 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(cbxOwner.Value.ToString());
            if (ds1.Tables[0].Rows.Count == 1)
            {
                DataTable dt1 = ds1.Tables[0];
                station = dt1.Rows[0]["stationCode"].ToString();
                department = dt1.Rows[0]["DepartmentName"].ToString();
            }
            if (para == "ND")//保存并申请
            {
                if (hdTravelRequestID.Value.ToString() == "")//直接新增申请,不通过草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[CreadedBy],[CreadedDate],[Attach],[Remark],[Bdate],[Edate],[PersonID],[CreadedByID],[ApplyDate],[CCMailList],[Budget],[Station2]";
                    string value = "";
                    value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + X.GetValue("cbxOwner") + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString();
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + Request.Cookies.Get("eReimUserName").Value + "'";//edit
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    value += "'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    value += Bdate == "" ? "null," : "'" + Bdate + "',";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    value += Edate == "" ? "null" : "'" + Edate + "'";
                    value += ",'" + cbxOwner.Value.ToString() + "'";
                    value += ",'" + Request.Cookies.Get("eReimUserID").Value + "'";
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                    value += ",'" + CCMailList + "'";
                    value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    value += ",'"+ostation+"'";
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'T' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                    //操作Flow表
                    //根据cbxBudget,选择不同的审批流程
                    //string sqlGetGroupFlowData = "";
                    //if (cbxBudget.Value.ToString() == "YES")//使用Budget审批流程
                    //{
                    //    sqlGetGroupFlowData = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
                    //}
                    //else//使用unBudget审批流程
                    //{
                    //    sqlGetGroupFlowData = "select * from GroupFlow where [Type]=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
                    //}
                    //DataTable dtGroupFlowData = new DataTable();
                    //dtGroupFlowData = dbc.GetData("eReimbursement", sqlGetGroupFlowData);
                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newid.Split(',')[1] + "',";
                        valueflow += "'T',";
                        valueflow += "'" + station + "',";
                        valueflow += "'" + department + "',";
                        valueflow += "'" + X.GetValue("cbxOwner") + "',";
                        valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                        valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += "'" + newid.Split(',')[0] + "'";
                        valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                        
                        if (!SaveDetail(detail) || !SendMail())
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单: " + newid.Split(',')[1];
                            UpdateMSG("保存申请单:" + newid.Split(',')[1] + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Form: " + newid.Split(',')[1];
                            UpdateMSG("Saved Travel Expense Form: " + newid.Split(',')[1] + " successfully.");
                        }
                        
                    }
                    //
                }
                else//由草稿升级为正式申请
                {
                    string updatesql = "update ETravel set [Person]='" + X.GetValue("cbxOwner");
                    updatesql += "',[Station]='" + station;
                    updatesql += "',[Department]='" + department;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[Type]=0";
                    updatesql += ",[PersonID]='" + cbxOwner.Value.ToString() + "'";
                    string oldno = hdTravelRequestNo.Value.ToString();
                    string newno = hdTravelRequestNo.Value.ToString().Substring(0, hdTravelRequestNo.Value.ToString().Length - 1);
                    updatesql += ",[No]='" + newno + "',";
                    updatesql += "[CreadedDate]='" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    updatesql += "[CreadedBy]='" + Request.Cookies.Get("eReimUserName").Value + "',";
                    updatesql += "[CreadedByID]='" + Request.Cookies.Get("eReimUserID").Value + "'";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    updatesql += Bdate == "" ? ",Bdate=null" : ",Bdate='" + Bdate + "'";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    updatesql += Edate == "" ? ",Edate=null" : ",Edate='" + Edate + "'";
                    updatesql += ",[CCMailList]='" + CCMailList + "'";
                    updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    updatesql += ",[Station2]='"+ostation+"'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                    //操作Flow表
                    string sqlDeleteEflow = "delete from Eflow where [Type]='T' and [RequestID]='" + hdTravelRequestID.Value.ToString() + "'";
                    string deleterows = dbc.UpdateData("eReimbursement", sqlDeleteEflow, "Update");
                    //根据cbxBudget,选择不同的审批流程
                    //string sqlGetGroupFlowData = "";
                    //if (cbxBudget.Value.ToString() == "YES")//使用Budget审批流程
                    //{
                    //    sqlGetGroupFlowData = "select * from GroupFlow where [Type]!=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
                    //}
                    //else//使用unBudget审批流程
                    //{
                    //    sqlGetGroupFlowData = "select * from GroupFlow where [Type]=2 and GID=(select GID from GroupUsers where UserID='" + cbxOwner.Value.ToString() + "')";
                    //}
                    //DataTable dtGroupFlowData = new DataTable();
                    //dtGroupFlowData = dbc.GetData("eReimbursement", sqlGetGroupFlowData);
                    string rows = "";
                    for (int i = 0; i < dtGroupFlowData.Rows.Count; i++)
                    {
                        string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[Step],[Status],[Approver],[ApproverID],[RequestID],[FlowFn]";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            wordflow += ",[Active]";
                        }
                        string valueflow = "";
                        valueflow += "'" + newno + "',";
                        valueflow += "'T',";
                        valueflow += "'" + station + "',";
                        valueflow += "'" + department + "',";
                        valueflow += "'" + X.GetValue("cbxOwner") + "',";
                        valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                        valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                        valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                        valueflow += dtGroupFlowData.Rows[i]["FlowNo"].ToString() + ",";
                        valueflow += "1,";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUser"].ToString() + "',";
                        valueflow += "'" + dtGroupFlowData.Rows[i]["FlowUserid"].ToString() + "',";
                        valueflow += hdTravelRequestID.Value.ToString();
                        valueflow += ",'" + (dtGroupFlowData.Rows[i]["Fn"].ToString() == "" ? "Approver" : dtGroupFlowData.Rows[i]["Fn"].ToString()) + "'";
                        if (dtGroupFlowData.Rows[i]["FlowNo"].ToString() == "1")
                        {
                            valueflow += ",1";
                        }
                        string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                        rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    }
                    //
                    if (newid == "-1" || rows == "-1" || rows == "")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        hdTravelRequestNo.Value = newno;
                        
                        if (!SaveDetail(detail) || !SendMail())
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        

                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单:" + newno;
                            UpdateMSG("保存差旅费申请单:" + hdTravelRequestNo.Value.ToString() + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Form: " + newno;
                            UpdateMSG("Saved Travel Expense Form: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                        }
                        
                    }
                }
                X.AddScript("btnGeteLeave.disable();btnEditDetail.disable();btnNewDetail.disable();btnSaveDraft.disable();btnSaveAndSend.disable();cbxBudget.setReadOnly(true);btnExport.enable();btnCC.disable();");
            }
            else//保存草稿
            {
                if (hdTravelRequestID.Value.ToString() != "")//由链接进入的草稿更新
                {
                    string updatesql = "update ETravel set [Person]='" + X.GetValue("cbxOwner");
                    updatesql += "',[Station]='" + station;
                    updatesql += "',[Department]='" + department;
                    updatesql += "',[ReportFile]='" + hdReport.Value.ToString();
                    updatesql += "',[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    updatesql += ",[Pamout]=" + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    updatesql += ",[Camount]=" + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    updatesql += ",[Remark]='" + txtRemark.Text.Replace("'", "''") + "'";
                    updatesql += ",[Attach]='" + hdScanFile.Value.ToString() + "'";
                    updatesql += ",[PersonID]='" + cbxOwner.Value.ToString() + "'";
                    
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    updatesql += Bdate == "" ? ",Bdate=null" : ",Bdate='" + Bdate + "'";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    updatesql += Edate == "" ? ",Edate=null" : ",Edate='" + Edate + "'";
                    updatesql += ",[CCMailList]='" + CCMailList + "'";
                    updatesql += ",[Budget]=" + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    updatesql += ",[Station2]='"+ostation+"'";
                    updatesql += " where ID=" + hdTravelRequestID.Value.ToString();

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");

                    ////更新Eflow表
                    //string sqlupdateflow = "update Eflow set [Station]='" + station + "',";
                    //sqlupdateflow += "[Department]='" + department + "',";
                    //sqlupdateflow += "[Person]='" + X.GetValue("cbxOwner") + "',";
                    //sqlupdateflow += "[Tamount]=" + (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    //sqlupdateflow += " where [No]='" + hdTravelRequestNo.Value.ToString() + "'";

                    //string rows = dbc.UpdateData("eReimbursement", sqlupdateflow, "Update");
                    if (newid == "-1")
                    {
                        ErrorHandle("Data Error.");
                        return;
                    }
                    else
                    {
                        if (!SaveDetail(detail))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        //hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        //Panel3.Title = "差旅费申请单:" + newid.Split(',')[1];
                        //X.AddScript("GridPanel2.submitData();");
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            UpdateMSG("保存差旅费申请单草稿: " + hdTravelRequestNo.Value.ToString() + "成功.");
                        }
                        else
                        {
                            UpdateMSG("Saved Travel Expense Draft: " + hdTravelRequestNo.Value.ToString() + " successfully.");
                        }
                    }

                }
                else//如果ID为空则判断为新增草稿
                {
                    string word = "[No],[Person],[Station],[Department],[ReportFile],[Tamount],[Pamout],[Camount],[Attach],[Remark],[Bdate],[Edate],[Type],[PersonID],[ApplyDate],[CCMailList],[Station2],[Budget]";
                    string value = "";
                    value += "'" + station + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + "',";//edit
                    value += "'" + X.GetValue("cbxOwner") + "',"; value += "'" + station + "',"; value += "'" + department + "',";//edit
                    value += "'" + hdReport.Value.ToString() + "',";
                    value += (hdSum.Value.ToString() == "" ? "null" : hdSum.Value.ToString());
                    value += "," + (hdPamountSum.Value.ToString() == "" ? "null" : hdPamountSum.Value.ToString());
                    value += "," + (hdCamountSum.Value.ToString() == "" ? "null" : hdCamountSum.Value.ToString());
                    value += ",'" + hdScanFile.Value.ToString() + "',";
                    value += "'" + txtRemark.Text.Replace("'", "''") + "',";
                    string Bdate = "";
                    if (dfBdate.SelectedDate != dtnull)
                    {
                        Bdate = dfBdate.SelectedDate.ToString();
                    }
                    value += Bdate == "" ? "null," : "'" + Bdate + "',";
                    string Edate = "";
                    if (dfEdate.SelectedDate != dtnull)
                    {
                        Edate = dfEdate.SelectedDate.ToString();
                    }
                    value += Edate == "" ? "null," : "'" + Edate + "',";
                    value += "1";//标识为草稿
                    value += ",'" + cbxOwner.Value.ToString() + "'";
                    value += ",'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "'";
                    value += ",'" + CCMailList + "'";
                    value += ",'"+ostation+"'";
                    value += "," + (cbxBudget.Value.ToString() == "YES" ? "1" : "0");
                    string updatesql = "insert into ETravel (" + word + ") values(" + value + ");update ETravel set [No]=[No]+(select [MonthCount]=right('0000'+cast(count(ID) as varchar(10)),4) from ETravel where (month(ApplyDate) in (select month(ApplyDate) from ETravel where [ID]=@@IDENTITY) and (year(ApplyDate) in (select year(ApplyDate) from ETravel where [ID]=@@IDENTITY)) and Station=(select Station from ETravel where ID=@@IDENTITY)))+'TD' where ID=@@IDENTITY;select [msg]=convert(varchar,ID)+','+[No] from ETravel where ID=@@IDENTITY";

                    string newid = dbc.UpdateData("eReimbursement", updatesql, "Insert");

                    //操作Flow表
                    string wordflow = "[No],[Type],[Station],[Department],[Person],[CreadedBy],[CreatedDate],[Tamount],[RequestID],[Active]";
                    string valueflow = "";
                    valueflow += "'" + newid.Split(',')[1] + "',";
                    valueflow += "'T',";
                    valueflow += "'" + station + "',";
                    valueflow += "'" + department + "',";
                    valueflow += "'" + X.GetValue("cbxOwner") + "',";
                    valueflow += "'" + Request.Cookies.Get("eReimUserName").Value + "',";
                    valueflow += "'" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "',";
                    valueflow += hdSum.Value.ToString() == "" ? "null," : hdSum.Value.ToString() + ",";
                    valueflow += "'" + newid.Split(',')[0] + "'";
                    valueflow += ",1";
                    string sqlupdateEFlow = "insert into Eflow (" + wordflow + ") values(" + valueflow + ")";
                    string rows = dbc.UpdateData("eReimbursement", sqlupdateEFlow, "Update");
                    //
                    if (newid == "-1" || rows == "-1")
                    {
                        ErrorHandle("Data Error."); return;
                    }
                    else
                    {
                        hdTravelRequestID.Value = newid.Split(',')[0];//新增后记录ID
                        hdTravelRequestNo.Value = newid.Split(',')[1];//新增后记录No
                        if (!SaveDetail(detail))
                        {
                            ErrorHandle("Data Error.");
                            return;
                        }
                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                        {
                            Panel3.Title = "差旅费申请单草稿: " + newid.Split(',')[1];
                            UpdateMSG("新增差旅费申请单草稿: " + newid.Split(',')[1] + "成功.");
                        }
                        else
                        {
                            Panel3.Title = "Travel Expense Draft: " + newid.Split(',')[1];
                            UpdateMSG("Added Travel Expense Draft: " + newid.Split(',')[1] + " successfully.");
                        }
                    }
                }
            }
        }
예제 #17
0
        protected void UploadScanFileClick(object sender, DirectEventArgs e)
        {
            if (this.FileUploadField2.HasFile)
            {
                string lstrFileName = null;     //上传文件路径
                string lstrFileFolder = null;   //存放文件路径
                string lstrFileNamePath = null; //上传目录及文件名

                //获得上传到服务器的目录名称,如果上传目录为空,就使用"D:\"作为缺省上传目录 
                //if (dir.Value != "") lstrFileFolder = dir.Value; else lstrFileFolder = "D:\\";
                lstrFileFolder = System.Web.HttpContext.Current.Request.MapPath("Upload/");

                //lstrFileName = FileUploadField1.PostedFile.FileName;  //获得文件名称
                //注:FileUploadField1.PostedFile.FileName 返回的是通过文件对话框选择的文件名,这之中包含了文件的目录信息

                lstrFileName = System.IO.Path.GetFileName(FileUploadField2.PostedFile.FileName);  //去掉目录信息,返回文件名称

                //判断上传目录是否存在,不存在就建立 
                if (!System.IO.Directory.Exists(lstrFileFolder)) System.IO.Directory.CreateDirectory(lstrFileFolder);
                string dtime = DateTime.Now.ToString("yyyyMMddHHmmss");
                lstrFileNamePath = lstrFileFolder + "SF" + dtime + System.IO.Path.GetExtension(lstrFileName); //得到上传目录及文件名称  
                FileUploadField2.PostedFile.SaveAs(lstrFileNamePath);       //上传文件到服务器
                string filename = "SF" + dtime + System.IO.Path.GetExtension(lstrFileName);
                linkScanFile.Text = filename; hdScanFile.Value = filename;
                linkScanFile.NavigateUrl = "./Upload/" + filename;
                string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
                //更新数据
                if (hdTravelRequestID.Value.ToString() != "")
                {
                    string updatesql = "update ETravel set Attach='" + filename + "' where ID=" + hdTravelRequestID.Value.ToString();
                    cs.DBCommand dbc = new cs.DBCommand();
                    string update = dbc.UpdateData("eReimbursement", updatesql, "Update");
                }
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = "Success",
                    Message = string.Format(tpl, this.FileUploadField2.PostedFile.FileName, this.FileUploadField2.PostedFile.ContentLength)
                });
            }
        }
예제 #18
0
 public void DeleteRule(string TempNO)
 {
     cs.DBCommand dbc = new cs.DBCommand();
     string sql = "delete from FileRule where ID=" + TempNO;
     string sqlre = dbc.UpdateData("eReimbursement", sql, "Update");
 }
예제 #19
0
 public void DeleteRule(string TempNO)
 {
     cs.DBCommand dbc   = new cs.DBCommand();
     string       sql   = "delete from FileRule where ID=" + TempNO;
     string       sqlre = dbc.UpdateData("eReimbursement", sql, "Update");
 }
예제 #20
0
        protected void Command(object sender, DirectEventArgs e)
        {
            cs.DBCommand dbc = new cs.DBCommand();
            string para = e.ExtraParams[0].Value;
            string paraType = e.ExtraParams[1].Value;
            string sql = "select * from Eflow where RequestID='" + para + "' and [Type]='" + paraType + "' order by Step,id";
            DataTable dt = new DataTable();
            dt = dbc.GetData("eReimbursement", sql);
            SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["eReimbursement"].ConnectionString);
            string ID = para;
            if (dt != null)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (dt.Rows[i]["Active"].ToString() == "1")
                    {
                        if (i == dt.Rows.Count-1)
                        {
                            string updatesql = "update Eflow set Active=2,Status=2,ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + dt.Rows[i]["id"].ToString();
                            if (dt.Rows[i]["Type"].ToString()=="T")
                            {
                                updatesql += ";update ETravel set Status=2 where ID=" + dt.Rows[i]["RequestID"].ToString();
                                string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                                if (newid == "-1")
                                {
                                    ErrorHandle("Data Error.");
                                    return;
                                }
                                else
                                {
                                    
                                    string sqlf = "select * from ETravel where ID=" + ID;
                                    DataTable dtf = dbc.GetData("eReimbursement", sqlf);

                                    try
                                    {
                                        string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                                        DataTable dtall = new DataTable();
                                        dtall = dbc.GetData("eReimbursement", sqld);
                                        //预算
                                        //140226 显示预算
                                        DataTable dtbudget = new DataTable();
                                        dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                        dtbudget.Columns.Add("Status", typeof(System.Int16));
                                        dtbudget.Columns.Add("EName", typeof(System.String));
                                        dtbudget.Columns.Add("COACode", typeof(System.String));
                                        dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                        dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                        dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                        dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PA", typeof(System.Decimal));
                                        dtbudget.Columns.Add("CA", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                        //取得预算日期
                                        string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                                        DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                        //取得本币与成本中心汇率转换
                                        decimal rate = 1;
                                        string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                        string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtf.Rows[0]["Station2"].ToString());
                                        if (CurLocal != CurBudget)
                                        {
                                            rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                                        }

                                        //取得4大类合计
                                        //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                                        string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                                        DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                                        //取得传递预算的参数
                                        string userid = dtf.Rows[0]["PersonID"].ToString();
                                        string dpt = dtf.Rows[0]["Department"].ToString();
                                        string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                                        string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                                        string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                                        string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                                        string accountcode = "";
                                        for (int g = 0; g < dtB.Rows.Count; g++)
                                        {
                                            if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                            {
                                                DataRow dr = dtbudget.NewRow();
                                                dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                                dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                                                dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                                                dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                                accountcode = dtB.Rows[g]["COACode"].ToString();
                                                DataTable dtC = new DataTable();
                                                dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                                                for (int h = 0; h < dtC.Rows.Count; h++)
                                                {
                                                    if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                                                    {
                                                        dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                                                    {
                                                        dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                                                    {
                                                        dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                        dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                    }
                                                }
                                                dtbudget.Rows.Add(dr);
                                            }
                                        }
                                        //计算%,取得名称,预算转换为本地汇率
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                            }
                                            if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Travel expense";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Entertainment";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Transportation";
                                            }
                                            else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                                            {
                                                dtbudget.Rows[g]["EName"] = "Communication";
                                            }
                                            dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                            dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                            dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                            dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                            dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                            dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                                            dtbudget.Rows[g]["RequestID"] = ID;
                                            dtbudget.Rows[g]["Status"] = 2;
                                            dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                            dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                            dtbudget.Rows[g]["Rate"] = rate;
                                        }
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            SqlCommand scdetail = sqlConn.CreateCommand();
                                            scdetail.CommandText = "Insert into Budget_Complete (FormType,RequestID,Status,COACode,EName,LocalCur,CenterCur,Rate,LocalAmount,PA,CA,PU,PB,PPercent,DU,DB,DPercent,SU,SB,SPercent) values (@FormType,@RequestID,@Status,@COACode,@EName,@LocalCur,@CenterCur,@Rate,@LocalAmount,@PA,@CA,@PU,@PB,@PPercent,@DU,@DB,@DPercent,@SU,@SB,@SPercent)";
                                            SqlParameter spdetail = new SqlParameter("@RequestID", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt32(ID);
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@FormType", SqlDbType.VarChar, 10);
                                            spdetail.Value = "T";
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Status", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt16(dtbudget.Rows[g]["Status"].ToString());
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@COACode", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["COACode"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@EName", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["EName"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["LocalCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@CenterCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["CenterCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Rate", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Rate"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalAmount", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Current"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PA", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PA"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@CA", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["CA"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            sqlConn.Open();
                                            int row = scdetail.ExecuteNonQuery();
                                            sqlConn.Close();
                                        }
                                        if (!SendMail(paraType, para, dt.Rows[i]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                        {
                                            ErrorHandle("Error mail address."); return;
                                        }
                                        if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                                        {
                                            X.AddScript("Ext.Msg.show({ title: '提示', msg: '批准成功,该申请单已经完成.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                        }
                                        else
                                        {
                                            X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved,form completed.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                        }
                                    }
                                    catch (Exception)
                                    {

                                        throw;
                                    }
                                }
                            }
                            else//通用费用
                            {
                                updatesql += ";update Ecommon set Status=2 where ID=" + dt.Rows[i]["RequestID"].ToString();
                                string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                                if (newid == "-1")
                                {
                                    ErrorHandle("Data Error.");
                                    return;
                                }
                                else
                                {
                                    //保存预算信息
                                    try
                                    {
                                        string sqlf = "select * from Ecommon where ID=" + ID;
                                        DataTable dtf = dbc.GetData("eReimbursement", sqlf);
                                        //140226 显示预算
                                        DataTable dtbudget = new DataTable();
                                        dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                        dtbudget.Columns.Add("Year", typeof(System.String));
                                        dtbudget.Columns.Add("Status", typeof(System.Int16));
                                        dtbudget.Columns.Add("EName", typeof(System.String));
                                        dtbudget.Columns.Add("COACode", typeof(System.String));
                                        dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                        dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                        dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                        dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                        dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                        string sqld = "select * from EeommonDetail where [No]='" + ID + "' order by id";
                                        DataTable dtall = new DataTable();
                                        dtall = dbc.GetData("eReimbursement", sqld);
                                        //取得预算日期
                                        string sqlA = "select AccountCode as COACode,case when t1.Type='O' then t2.SAccountName else TDicSubType.EText end as [EName],year(Tdate) as [Year],Amount from EeommonDetail t1 left join (select * from Edic where KeyValue='SubType') TDicSubType on TDicSubType.CValue=t1.Type left join AccoundCode t2 on t2.SAccountCode=t1.AccountCode where t1.No='" + ID + "'";
                                        DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                        //取得本币与成本中心汇率转换
                                        decimal rate = 1;
                                        string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                        string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtf.Rows[0]["Station2"].ToString());
                                        //if (CurLocal != CurBudget)
                                        //{
                                        //    rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToInt16(dtA.Rows[0]["Year"].ToString()));
                                        //}

                                        //合计数据
                                        DataTable dtB = new DataTable();
                                        dtB.Columns.Add("EName", typeof(System.String));
                                        dtB.Columns.Add("COACode", typeof(System.String));
                                        dtB.Columns.Add("Amount", typeof(System.Decimal));
                                        dtB.Columns.Add("Year", typeof(System.String));
                                        for (int g = 0; g < dtA.Rows.Count; g++)
                                        {
                                            bool er = false;
                                            for (int j = 0; j < dtB.Rows.Count; j++)
                                            {
                                                if (dtB.Rows[j]["COACode"].ToString() == dtA.Rows[g]["COACode"].ToString() && dtB.Rows[j]["Year"].ToString() == dtA.Rows[g]["Year"].ToString())//已有记录
                                                {
                                                    er = true;
                                                    break;
                                                }
                                            }
                                            if (!er)//不存在重复记录
                                            {
                                                DataRow dr = dtB.NewRow();
                                                dr["EName"] = dtA.Rows[g]["EName"].ToString();
                                                dr["COACode"] = dtA.Rows[g]["COACode"].ToString();
                                                dr["Amount"] = dtA.Compute("Sum(Amount)", "Year = " + dtA.Rows[g]["Year"].ToString() + " and COACode = " + dtA.Rows[g]["COACode"].ToString());
                                                dr["Year"] = dtA.Rows[g]["Year"].ToString();
                                                dtB.Rows.Add(dr);
                                            }
                                        }
                                        string userid = dtf.Rows[0]["PersonID"].ToString();
                                        string ostation = ""; string station = ""; string department = "";
                                        DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
                                        if (ds2.Tables[0].Rows.Count == 1)
                                        {
                                            DataTable dt1 = ds2.Tables[0];
                                            ostation = dt1.Rows[0]["CostCenter"].ToString();//记录用户预算站点,即CostCenter
                                            station = dt1.Rows[0]["stationCode"].ToString();//记录用户所在站点
                                            department = dt1.Rows[0]["CRPDepartmentName"].ToString();
                                        }
                                        string accountcode = "";
                                        for (int g = 0; g < dtB.Rows.Count; g++)
                                        {
                                            if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                            {
                                                DataRow dr = dtbudget.NewRow();
                                                dr["EName"] = dtB.Rows[g]["EName"].ToString();
                                                dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                                dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                                dr["Year"] = dtB.Rows[g]["Year"].ToString();
                                                accountcode = dtB.Rows[g]["COACode"].ToString();
                                                DataTable dtC = new DataTable();
                                                dtC = Comm.RtnEB(userid, department, ostation, ostation, accountcode, dtB.Rows[g]["Year"].ToString(), "1");
                                                for (int f = 0; f < dtC.Rows.Count; f++)
                                                {
                                                    if (dtC.Rows[f]["Type"].ToString() == "全年个人")
                                                    {
                                                        dr["PU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                        dr["PB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[f]["Type"].ToString() == "全年部门")
                                                    {
                                                        dr["DU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                        dr["DB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                    }
                                                    else if (dtC.Rows[f]["Type"].ToString() == "全年站点")
                                                    {
                                                        dr["SU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                        dr["SB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                    }
                                                }
                                                dtbudget.Rows.Add(dr);
                                            }
                                        }
                                        //计算%,取得名称,转为本地币种汇率,增加列记录Currency为邮件准备
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            if (CurLocal != CurBudget)
                                            {
                                                rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToInt16(dtbudget.Rows[g]["Year"].ToString()));
                                            }

                                            if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                            }
                                            if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                            {
                                                dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                            }
                                            dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                            dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                            dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                            dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                            dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                            dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                            dtbudget.Rows[g]["RequestID"] = ID;
                                            dtbudget.Rows[g]["Status"] = 2;
                                            dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                            dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                            dtbudget.Rows[g]["Rate"] = rate;
                                        }
                                        string srw = "";
                                        for (int g = 0; g < dtbudget.Rows.Count; g++)
                                        {
                                            SqlCommand scdetail = sqlConn.CreateCommand();
                                            scdetail.CommandText = "Insert into Budget_Complete (Year,FormType,RequestID,Status,COACode,EName,LocalCur,CenterCur,Rate,LocalAmount,PU,PB,PPercent,DU,DB,DPercent,SU,SB,SPercent) values (@Year,@FormType,@RequestID,@Status,@COACode,@EName,@LocalCur,@CenterCur,@Rate,@LocalAmount,@PU,@PB,@PPercent,@DU,@DB,@DPercent,@SU,@SB,@SPercent)";
                                            SqlParameter spdetail = new SqlParameter("@RequestID", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt32(ID);
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Year", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt16(dtbudget.Rows[g]["Year"].ToString());
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@FormType", SqlDbType.VarChar, 10);
                                            spdetail.Value = "G";
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Status", SqlDbType.Int);
                                            spdetail.Value = Convert.ToInt16(dtbudget.Rows[g]["Status"].ToString());
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@COACode", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["COACode"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@EName", SqlDbType.VarChar, 50);
                                            spdetail.Value = dtbudget.Rows[g]["EName"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["LocalCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@CenterCur", SqlDbType.VarChar, 10);
                                            spdetail.Value = dtbudget.Rows[g]["CenterCur"].ToString();
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@Rate", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Rate"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@LocalAmount", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["Current"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@PPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["PPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@DPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["DPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SU", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SU"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SB", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SB"];
                                            scdetail.Parameters.Add(spdetail);

                                            spdetail = new SqlParameter("@SPercent", SqlDbType.Decimal);
                                            spdetail.Value = dtbudget.Rows[g]["SPercent"];
                                            scdetail.Parameters.Add(spdetail);

                                            sqlConn.Open();
                                            int row = scdetail.ExecuteNonQuery();
                                            sqlConn.Close();
                                        }
                                        if (!SendMail("G", para, dt.Rows[i]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                        {
                                            ErrorHandle("Error mail address."); return;
                                        }
                                    }
                                    catch (Exception)
                                    {

                                        throw;
                                    }


                                    //if (!SendMail(paraType, para, dt.Rows[i]["id"].ToString(), dtbudget))
                                    //{
                                    //    ErrorHandle("Error mail address."); return;
                                    //}
                                    if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                                    {
                                        X.AddScript("Ext.Msg.show({ title: '提示', msg: '批准成功,该申请单已经完成.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                    else
                                    {
                                        X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved,form completed.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                }
                            }
                            
                        }
                        else//审批通过,但未完成
                        {
                            string updatesql = "update Eflow set Active=-1,Status=2,ApproveDate='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "' where id=" + dt.Rows[i]["id"].ToString();
                            updatesql += ";update Eflow set Active=1 where id=" + dt.Rows[i + 1]["id"].ToString();
                            string newid = dbc.UpdateData("eReimbursement", updatesql, "Update");
                            if (newid == "-1")
                            {
                                ErrorHandle("Data Error.");
                                return;
                            }
                            else
                            {
                                if (paraType == "T")
                                {
                                    string sqlf = "select * from ETravel where ID=" + ID;
                                    DataTable dtf = dbc.GetData("eReimbursement", sqlf);

                                    string sqld = "select * from ETraveleDetail where [No]='" + ID + "' order by id";
                                    DataTable dtall = new DataTable();
                                    dtall = dbc.GetData("eReimbursement", sqld);
                                    //预算
                                    //140226 显示预算
                                    DataTable dtbudget = new DataTable();
                                    dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                    dtbudget.Columns.Add("Status", typeof(System.Int16));
                                    dtbudget.Columns.Add("EName", typeof(System.String));
                                    dtbudget.Columns.Add("COACode", typeof(System.String));
                                    dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                    dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                    dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                    dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("CA", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                    //取得预算日期
                                    string sqlA = "select convert(varchar(10),min(Tdate0),111) as BudgetDate from ETraveleDetail where No='" + ID + "'";
                                    DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                    //取得本币与成本中心汇率转换
                                    decimal rate = 1;
                                    string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                    string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtf.Rows[0]["Station2"].ToString());
                                    if (CurLocal != CurBudget)
                                    {
                                        rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year);
                                    }

                                    //取得4大类合计
                                    //string sqlB = "select sum(T1) as T1,sum(T2) as T2,sum(T3) as T3,sum(T4) as T4 from (select case when AccountCode='62012000' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T1],case when AccountCode='62010900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T2],case when AccountCode='62011900' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T3],case when AccountCode='62010500' then isnull(Pamount,0)+isnull(Camount,0) else 0 end as [T4] from ETraveleDetail where No=" + ID + ") t";
                                    string sqlB = "select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62012000' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62012000' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62011900' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62011900' union all select sum(isnull(Pamount,0)) as PA,sum(isnull(Camount,0)) as CA,sum(isnull(Pamount,0)+isnull(Camount,0)) as Amount,'62010500' as COACode from ETraveleDetail where No=" + ID + " and AccountCode='62010500'";
                                    DataTable dtB = dbc.GetData("eReimbursement", sqlB);
                                    //取得传递预算的参数
                                    string userid = dtf.Rows[0]["PersonID"].ToString();
                                    string dpt = dtf.Rows[0]["Department"].ToString();
                                    string ostation = dtf.Rows[0]["Station2"].ToString();//预算站点,与基本信息中的CostCenter一致(Station2)
                                    string tstation = ostation;//Etravel表中的Station2,目前与预算站点一致,不允许更改
                                    string year = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Year.ToString();
                                    string month = Convert.ToDateTime(dtA.Rows[0]["BudgetDate"].ToString()).Month.ToString();
                                    string accountcode = "";
                                    for (int g = 0; g < dtB.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                        {
                                            DataRow dr = dtbudget.NewRow();
                                            dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                            dr["PA"] = Convert.ToDecimal(dtB.Rows[g]["PA"].ToString());
                                            dr["CA"] = Convert.ToDecimal(dtB.Rows[g]["CA"].ToString());
                                            dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                            accountcode = dtB.Rows[g]["COACode"].ToString();
                                            DataTable dtC = new DataTable();
                                            dtC = Comm.ExRtnEB(userid, dpt, ostation, tstation, accountcode, year, month, "T", ID);

                                            for (int h = 0; h < dtC.Rows.Count; h++)
                                            {
                                                if (dtC.Rows[h]["Type"].ToString() == "全年个人")
                                                {
                                                    dr["PU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["PB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年部门")
                                                {
                                                    dr["DU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["DB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[h]["Type"].ToString() == "全年站点")
                                                {
                                                    dr["SU"] = Convert.ToDecimal(dtC.Rows[h]["Used"].ToString());
                                                    dr["SB"] = Convert.ToDecimal(dtC.Rows[h]["Budget"].ToString());
                                                }
                                            }
                                            dtbudget.Rows.Add(dr);
                                        }
                                    }
                                    //计算%,取得名称,预算转换为本地汇率
                                    for (int g = 0; g < dtbudget.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                        }
                                        if (dtbudget.Rows[g]["COACode"].ToString() == "62012000")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Travel expense";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Entertainment";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62011900")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Transportation";
                                        }
                                        else if (dtbudget.Rows[g]["COACode"].ToString() == "62010500")
                                        {
                                            dtbudget.Rows[g]["EName"] = "Communication";
                                        }
                                        dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                        dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                        dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                        dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                        dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                        dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);
                                        dtbudget.Rows[g]["RequestID"] = ID;
                                        dtbudget.Rows[g]["Status"] = 3;
                                        dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                        dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                        dtbudget.Rows[g]["Rate"] = rate;
                                    }
                                    if (!SendMail(paraType, para, dt.Rows[i + 1]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                    {
                                        ErrorHandle("Error mail address."); return;
                                    }
                                    if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                                    {
                                        X.AddScript("Ext.Msg.show({ title: '提示', msg: '批准成功,该申请单已经完成.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                    else
                                    {
                                        X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                }
                                else//通用费用
                                {
                                    string sqlf = "select * from Ecommon where ID=" + ID;
                                    DataTable dtf = dbc.GetData("eReimbursement", sqlf);
                                    //140226 显示预算
                                    DataTable dtbudget = new DataTable();
                                    dtbudget.Columns.Add("RequestID", typeof(System.Int32));
                                    dtbudget.Columns.Add("Year", typeof(System.String));
                                    dtbudget.Columns.Add("Status", typeof(System.Int16));
                                    dtbudget.Columns.Add("EName", typeof(System.String));
                                    dtbudget.Columns.Add("COACode", typeof(System.String));
                                    dtbudget.Columns.Add("LocalCur", typeof(System.String));
                                    dtbudget.Columns.Add("CenterCur", typeof(System.String));
                                    dtbudget.Columns.Add("Rate", typeof(System.Decimal));
                                    dtbudget.Columns.Add("Current", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("PPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("DPercent", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SU", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SB", typeof(System.Decimal));
                                    dtbudget.Columns.Add("SPercent", typeof(System.Decimal));

                                    string sqld = "select * from EeommonDetail where [No]='" + ID + "' order by id";
                                    DataTable dtall = new DataTable();
                                    dtall = dbc.GetData("eReimbursement", sqld);
                                    //取得预算日期
                                    string sqlA = "select AccountCode as COACode,case when t1.Type='O' then t2.SAccountName else TDicSubType.EText end as [EName],year(Tdate) as [Year],Amount from EeommonDetail t1 left join (select * from Edic where KeyValue='SubType') TDicSubType on TDicSubType.CValue=t1.Type left join AccoundCode t2 on t2.SAccountCode=t1.AccountCode where t1.No='" + ID + "'";
                                    DataTable dtA = dbc.GetData("eReimbursement", sqlA);
                                    //取得本币与成本中心汇率转换
                                    decimal rate = 1;
                                    string CurLocal = dtall.Rows[0]["Cur"].ToString();
                                    string CurBudget = DIMERCO.SDK.Utilities.LSDK.GetStationCurrencyByCode(dtf.Rows[0]["Station2"].ToString());
                                    

                                    //合计数据
                                    DataTable dtB = new DataTable();
                                    dtB.Columns.Add("EName", typeof(System.String));
                                    dtB.Columns.Add("COACode", typeof(System.String));
                                    dtB.Columns.Add("Amount", typeof(System.Decimal));
                                    dtB.Columns.Add("Year", typeof(System.String));
                                    for (int g = 0; g < dtA.Rows.Count; g++)
                                    {
                                        bool er = false;
                                        for (int j = 0; j < dtB.Rows.Count; j++)
                                        {
                                            if (dtB.Rows[j]["COACode"].ToString() == dtA.Rows[g]["COACode"].ToString() && dtB.Rows[j]["Year"].ToString() == dtA.Rows[g]["Year"].ToString())//已有记录
                                            {
                                                er = true;
                                                break;
                                            }
                                        }
                                        if (!er)//不存在重复记录
                                        {
                                            DataRow dr = dtB.NewRow();
                                            dr["EName"] = dtA.Rows[g]["EName"].ToString();
                                            dr["COACode"] = dtA.Rows[g]["COACode"].ToString();
                                            dr["Amount"] = dtA.Compute("Sum(Amount)", "Year = " + dtA.Rows[g]["Year"].ToString() + " and COACode = " + dtA.Rows[g]["COACode"].ToString());
                                            dr["Year"] = dtA.Rows[g]["Year"].ToString();
                                            dtB.Rows.Add(dr);
                                        }
                                    }
                                    string userid = dtf.Rows[0]["PersonID"].ToString();
                                    string ostation = ""; string station = ""; string department = "";
                                    DataSet ds2 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
                                    if (ds2.Tables[0].Rows.Count == 1)
                                    {
                                        DataTable dt1 = ds2.Tables[0];
                                        ostation = dt1.Rows[0]["CostCenter"].ToString();//记录用户预算站点,即CostCenter
                                        station = dt1.Rows[0]["stationCode"].ToString();//记录用户所在站点
                                        department = dt1.Rows[0]["CRPDepartmentName"].ToString();
                                    }
                                    string accountcode = "";
                                    for (int g = 0; g < dtB.Rows.Count; g++)
                                    {
                                        if (Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString()) != 0)
                                        {
                                            DataRow dr = dtbudget.NewRow();
                                            dr["EName"] = dtB.Rows[g]["EName"].ToString();
                                            dr["Current"] = Convert.ToDecimal(dtB.Rows[g]["Amount"].ToString());
                                            dr["COACode"] = dtB.Rows[g]["COACode"].ToString();
                                            dr["Year"] = dtB.Rows[g]["Year"].ToString();
                                            accountcode = dtB.Rows[g]["COACode"].ToString();
                                            DataTable dtC = new DataTable();
                                            dtC = Comm.RtnEB(userid, department, ostation, ostation, accountcode, dtB.Rows[g]["Year"].ToString(), "1");
                                            for (int f = 0; f < dtC.Rows.Count; f++)
                                            {
                                                if (dtC.Rows[f]["Type"].ToString() == "全年个人")
                                                {
                                                    dr["PU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                    dr["PB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[f]["Type"].ToString() == "全年部门")
                                                {
                                                    dr["DU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                    dr["DB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                }
                                                else if (dtC.Rows[f]["Type"].ToString() == "全年站点")
                                                {
                                                    dr["SU"] = Convert.ToDecimal(dtC.Rows[f]["Used"].ToString());
                                                    dr["SB"] = Convert.ToDecimal(dtC.Rows[f]["Budget"].ToString());
                                                }
                                            }
                                            dtbudget.Rows.Add(dr);
                                        }
                                    }
                                    //计算%,取得名称,转为本地币种汇率,增加列记录Currency为邮件准备
                                    for (int g = 0; g < dtbudget.Rows.Count; g++)
                                    {
                                        if (CurLocal != CurBudget)
                                        {
                                            rate = DIMERCO.SDK.Utilities.LSDK.GetBudgetConverRate(CurLocal, CurBudget, Convert.ToInt16(dtbudget.Rows[g]["Year"].ToString()));
                                        }

                                        if (Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["PPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString())/rate + Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["DPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);

                                        }
                                        if (Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()) != 0)//如果Budget不为0,则计算%
                                        {
                                            dtbudget.Rows[g]["SPercent"] = System.Math.Round((Convert.ToDecimal(dtbudget.Rows[g]["Current"].ToString()) / rate + Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString())) * 100 / Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                        }
                                        
                                        dtbudget.Rows[g]["PU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PU"].ToString()), 2);
                                        dtbudget.Rows[g]["PB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["PB"].ToString()), 2);
                                        dtbudget.Rows[g]["DU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DU"].ToString()), 2);
                                        dtbudget.Rows[g]["DB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["DB"].ToString()), 2);
                                        dtbudget.Rows[g]["SU"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SU"].ToString()), 2);
                                        dtbudget.Rows[g]["SB"] = System.Math.Round(rate * Convert.ToDecimal(dtbudget.Rows[g]["SB"].ToString()), 2);

                                        dtbudget.Rows[g]["RequestID"] = ID;
                                        dtbudget.Rows[g]["Status"] = 2;
                                        dtbudget.Rows[g]["LocalCur"] = CurLocal;
                                        dtbudget.Rows[g]["CenterCur"] = CurBudget;
                                        dtbudget.Rows[g]["Rate"] = rate;
                                        
                                    }
                                    if (!SendMail("G", para, dt.Rows[i + 1]["id"].ToString(), dtbudget))//Budget已经计入Current,%不需要重新计算
                                    {
                                        ErrorHandle("Error mail address."); return;
                                    }
                                    string srw = "";
                                    //DataTable dtbudget = new DataTable();
                                    //if (!SendMail(paraType, para, dt.Rows[i + 1]["id"].ToString(), dtbudget))
                                    //{
                                    //    ErrorHandle("Error mail address."); return;
                                    //}
                                    if (Request.Cookies["lang"] != null && Request.Cookies["lang"].Value.ToLower() == "zh-cn")
                                    {
                                        X.AddScript("Ext.Msg.show({ title: '提示', msg: '批准成功,该申请单已经完成.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                    else
                                    {
                                        X.AddScript("Ext.Msg.show({ title: 'Message', msg: 'Approved.', buttons: { ok: 'Ok' }, fn: function (btn) { parent.Window1.hide();parent.Button1.fireEvent('click'); } });");
                                    }
                                }
                                
                            }
                        }
                        break;
                    }
                }
            }
        }