Exemplo n.º 1
0
 protected void SendMail(object sender, DirectEventArgs e)
 {
     try
     {
         DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
         mail.Title = "Dimerco eReimbursement";
         mail.FromDispName = "eReimbursement";
         mail.From = "*****@*****.**";
         mail.To = "[email protected],[email protected]";
         mail.Body = "<div><table style='border-collapse: collapse;'><tr><td nowrap='nowrap'>所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;</td><td>13</td></tr><tr><td>22</td><td>23</td></tr></table></div>";
         mail.Send();
         X.Msg.Show(new MessageBoxConfig
         {
             Title = "Message",
             Message = "发送成功",
             Buttons = MessageBox.Button.OK,
             Icon = MessageBox.Icon.WARNING
         });
     }
     catch (Exception)
     {
         
         throw;
     }
 }
Exemplo n.º 2
0
 protected void SendMail(object sender, DirectEventArgs e)
 {
     try
     {
         DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
         mail.Title        = "Dimerco eReimbursement";
         mail.FromDispName = "eReimbursement";
         mail.From         = "*****@*****.**";
         mail.To           = "[email protected],[email protected]";
         mail.Body         = "<div><table style='border-collapse: collapse;'><tr><td nowrap='nowrap'>所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;所有跟Shipment相关的文件不能从Value+中导出的全部扫描后传入Document Cloud中,以备任何时间查看或者下载打印;</td><td>13</td></tr><tr><td>22</td><td>23</td></tr></table></div>";
         mail.Send();
         X.Msg.Show(new MessageBoxConfig
         {
             Title   = "Message",
             Message = "发送成功",
             Buttons = MessageBox.Button.OK,
             Icon    = MessageBox.Icon.WARNING
         });
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemplo n.º 3
0
        protected bool SendMail()
        {
            //发送提醒邮件
            cs.DBCommand dbc = new cs.DBCommand();
            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)
            {
                string msg = "";
                if (dtMail.Rows[0]["FlowFn"].ToString().ToLower() == "verifier")
                {
                    msg = "Process Checking.";
                }
                else if (dtMail.Rows[0]["FlowFn"].ToString().ToLower() == "issuer")
                {
                    msg = "Process Paying.";
                }
                else
                {
                    msg = "Seek For Your Approval.";
                }
                string budget = dtMail.Rows[0]["Budget"].ToString() == "1" ? "(Budget)" : "(UnBudget)";

                DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
                mail.Title = "Dimerco eReimbursement "+budget+" " + dtMail.Rows[0]["Person"].ToString() + " - " + msg;
                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."); return false;
                }

                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."); return false;
                }
                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() + ",";
                }
                if (dtMail.Rows[0]["CCMailList"].ToString()!="")
                {
                    mailcc += dtMail.Rows[0]["CCMailList"].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;empty-cells:show;'";
                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:"+msg+"</div><br /><br />");
                
                sb.Append("<div " + divstyle + ">No#:" + dtMail.Rows[0]["No"].ToString() + budget + "</div>");
                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 style='border-collapse:collapse'><thead><tr><th colspan=\"13\" " + 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 + ">Cost Center</th>");
                sb.Append("<th style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF;empty-cells:show;width:160px;'>Remark</th>");
                sb.Append("<th " + tdstyle + ">Station Budget:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Department Budget:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Person Budget:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Person Budget One Year:(Used/All)</th></tr></thead>");

                sb.Append("<tbody>");
                decimal ptotal = 0; decimal ctotal = 0;
                string sqldetail = "select [StationBudget]='',[DepartmentBudget]='',[PersonBudget]='',[PersonBudgetOneYear]='',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++)
                {
                    //载入预算内容
                    string userid = dtMail.Rows[0]["PersonID"].ToString();
                    string dpt = dtdetail.Rows[i]["Department1"].ToString();
                    string ostation = "";
                    DataSet ds1 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
                    if (ds1.Tables[0].Rows.Count == 1)
                    {
                        DataTable dt1 = ds1.Tables[0];
                        //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                        ostation = dt1.Rows[0]["stationCode"].ToString();
                    }
                    string tstation = dtdetail.Rows[i]["TSation"].ToString() == "" ? ostation : dtdetail.Rows[i]["TSation"].ToString();
                    string accountcode = dtdetail.Rows[i]["AccountCode"].ToString();
                    string Years = Convert.ToDateTime(Convert.ToDateTime(dtdetail.Rows[i]["Tdate"].ToString())).Year.ToString();
                    string month = Convert.ToDateTime(Convert.ToDateTime(dtdetail.Rows[i]["Tdate"].ToString())).Month.ToString();

                    DataTable dtBG = new DataTable();
                    dtBG = Comm.RtnEB(userid, dpt, ostation, tstation, accountcode, Years, month);
                    if (dtBG != null && dtBG.Rows.Count > 0)
                    {
                        for (int j = 0; j < dtBG.Rows.Count; j++)
                        {
                            if (dtBG.Rows[j]["Type"].ToString() == "站点")
                            {
                                string stationbg = Convert.ToDecimal(dtBG.Rows[j]["Used"].ToString()).ToString("#,##0.00") + "/" + Convert.ToDecimal(dtBG.Rows[j]["Budget"].ToString()).ToString("#,##0.00");
                                dtdetail.Rows[i]["StationBudget"] = stationbg;
                            }
                        }
                        for (int j = 0; j < dtBG.Rows.Count; j++)
                        {
                            if (dtBG.Rows[j]["Type"].ToString() == "部门")
                            {
                                string stationbg = Convert.ToDecimal(dtBG.Rows[j]["Used"].ToString()).ToString("#,##0.00") + "/" + Convert.ToDecimal(dtBG.Rows[j]["Budget"].ToString()).ToString("#,##0.00");
                                dtdetail.Rows[i]["DepartmentBudget"] = stationbg;
                            }
                        }
                        for (int j = 0; j < dtBG.Rows.Count; j++)
                        {
                            if (dtBG.Rows[j]["Type"].ToString() == "个人")
                            {
                                string stationbg = Convert.ToDecimal(dtBG.Rows[j]["Used"].ToString()).ToString("#,##0.00") + "/" + Convert.ToDecimal(dtBG.Rows[j]["Budget"].ToString()).ToString("#,##0.00");
                                dtdetail.Rows[i]["PersonBudget"] = stationbg;
                            }
                        }
                        for (int j = 0; j < dtBG.Rows.Count; j++)
                        {
                            if (dtBG.Rows[j]["Type"].ToString() == "全年")
                            {
                                string stationbg = Convert.ToDecimal(dtBG.Rows[j]["Used"].ToString()).ToString("#,##0.00") + "/" + Convert.ToDecimal(dtBG.Rows[j]["Budget"].ToString()).ToString("#,##0.00");
                                dtdetail.Rows[i]["PersonBudgetOneYear"] = stationbg;
                            }
                        }
                    }

                    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() == "" ? "" : Convert.ToDecimal(dtdetail.Rows[i]["Pamount"].ToString()).ToString("#,##0.00")) + "</td>");
                    sb.Append("<td " + tdstyle + ">" + (dtdetail.Rows[i]["Camount"].ToString() == "" ? "" : Convert.ToDecimal(dtdetail.Rows[i]["Camount"].ToString()).ToString("#,##0.00")) + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["TSation"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["AccountDes"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["StationBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["DepartmentBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["PersonBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["PersonBudgetOneYear"].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 colspan=\"3\" " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[0]["Cur"].ToString() + "</td>");
                sb.Append("<td " + tdstyle + ">" + ptotal.ToString("#,##0.00") + "</td>");
                sb.Append("<td " + tdstyle + ">" + ctotal.ToString("#,##0.00") + "</td>");
                sb.Append("<td colspan=\"6\" " + tdstyle + "></td>");
                sb.Append("</tr></tfoot></table></div><br />");
                sb.Append("<div " + divstyle + ">Apply Remark:" + dtMail.Rows[0]["Remark"].ToString() + "</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());
                    }
                    else
                    {
                        sb1.Append("<div " + divstyle + ">" + (i + 1).ToString());
                    }

                    string msg1 = "";
                    if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "verifier")
                    {
                        msg1 = ". To Be Verified: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "issuer")
                    {
                        msg1 = ". To Be Issued: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    else
                    {
                        msg1 = ". Waiting for Approval: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    sb1.Append(msg1);
                }
                sb1.Append("</div><br />");
                sb.Append(sb1.ToString());
                string url = "";
                if (Request.Url.Host!="localhost")
                {
                    url = "http://" + Request.Url.Authority + "/eReimbursement/Approve.aspx";
                }
                else
                {
                    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();
            }
            else
            {
                return false;
            }
            return true;
        }
Exemplo n.º 4
0
        protected bool SendMail(string warningmsg)
        {
            //发送提醒邮件
            cs.DBCommand dbc = new cs.DBCommand();
            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)
            {
                string msg = "";
                if (dtMail.Rows[0]["FlowFn"].ToString().ToLower() == "verifier")
                {
                    msg = "Process Checking.";
                }
                else if (dtMail.Rows[0]["FlowFn"].ToString().ToLower() == "issuer")
                {
                    msg = "Process Paying.";
                }
                else
                {
                    msg = "Seek For Your Approval.";
                }
                string budget = dtMail.Rows[0]["Budget"].ToString() == "1" ? "(Budget)" : "(UnBudget)";

                DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
                mail.Title = "Dimerco eReimbursement " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - " + msg;
                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."); return false;
                }

                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."); return false;
                }
                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() + ",";
                }
                if (dtMail.Rows[0]["CCMailList"].ToString() != "")
                {
                    mailcc += dtMail.Rows[0]["CCMailList"].ToString();
                }
                mail.To = mailto;
                mail.Cc = mailcc;
                string divstyle = "style='font-size:small;'";
                string divstyleCurrent = "style='font-size:small;color:blue;'";
                string divstylered = "style='font-size:small;color:Red;'";
                string tdstyle = "style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF;empty-cells:show;' nowrap='nowrap'";
                StringBuilder sb = new StringBuilder();
                sb.Append("<div>");
                sb.Append("<div " + divstyle + "> Dear " + dtMail.Rows[0]["Approver"].ToString() + ",</div><br />");
                
                if (warningmsg!="")
                {
                    sb.Append("<div " + divstyle + ">The following eReimbursement application:" + msg + "</div><br />");
                    sb.Append("<div " + divstylered + ">" + warningmsg + "</div><br /><br />");
                }
                else
                {
                    sb.Append("<div " + divstyle + ">The following eReimbursement application:" + msg + "</div><br /><br />");
                }
                sb.Append("<div " + divstyle + ">No#:" + dtMail.Rows[0]["No"].ToString() + budget + "</div>");
                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 = "";
                string sqldetail2 = "select min(convert(varchar(10),Tdate0,111)) as Tdate0,max(convert(varchar(10),Tdate,111)) as Tdate1 from ETraveleDetail where [No]=" + hdTravelRequestID.Value.ToString() + "";
                DataTable dtder = dbc.GetData("eReimbursement", sqldetail2);
                if (dtder.Rows.Count == 1)
                {
                    sb.Append("<div " + divstyle + ">Period:From " + Convert.ToDateTime(dtder.Rows[0]["Tdate0"].ToString()).ToString("yyyy/MM/dd") + " To " + Convert.ToDateTime(dtder.Rows[0]["Tdate1"].ToString()).ToString("yyyy/MM/dd") + "</div>");
                }
                
                //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("<br />");
                sb.Append("<div><table style='border-collapse:collapse;'><thead><tr><th colspan=\"15\" " + tdstyle + ">Expense Detail</th></tr><tr>");
                sb.Append("<th " + tdstyle + "></th>");
                sb.Append("<th " + tdstyle + ">Destination</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 + ">Cost Center</th>");
                sb.Append("<th style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF;empty-cells:show;width:160px;' nowrap='nowrap'>Remark</th>");
                sb.Append("<th " + tdstyle + ">Station Budget MTD:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Dept. Budget MTD:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Person Budget MTD:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Station Budget YTD:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Dept. Budget YTD:(Used/All)</th>");
                sb.Append("<th " + tdstyle + ">Person Budget YTD:(Used/All)</th></tr></thead>");

                sb.Append("<tbody>");
                decimal ptotal = 0; decimal ctotal = 0;
                string sqlp = "";
                sqlp += "case when t1.DetailCode=0 then '1. Air Ticket - Intl' when t1.DetailCode=1 then 'Air Ticket - Domestic' ";
                sqlp += "when t1.DetailCode=2 then '2. Hotel Bill' when t1.DetailCode=3 then '3. Meals' ";
                sqlp += "when t1.DetailCode=4 then '4. Entertainment' when t1.DetailCode=5 then '5. Car Rental/Transportation' ";
                sqlp += "when t1.DetailCode=6 then '6. Communication' when t1.DetailCode=7 then '7. Local Trip Allowance' ";
                sqlp += "when t1.DetailCode=8 then '8. Overseas Trip Allowance' when t1.DetailCode=9 then '9. Airport Tax/Travel Insurance' ";
                sqlp += "when t1.DetailCode=10 then '10. Others' else t2.SAccountName end as [SAccountName]";
                string sqldetail = "select [StationBudget]='',[DepartmentBudget]='',[PersonBudget]='',[StationYTD]='',[DepartmentYTD]='',[PersonYTD]=''," + sqlp + ",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++)
                {
                    //载入预算内容
                    string userid = dtMail.Rows[0]["PersonID"].ToString();
                    string dpt = "";
                    string ostation = "";
                    DataSet ds1 = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(userid);
                    if (ds1.Tables[0].Rows.Count == 1)
                    {
                        DataTable dt1 = ds1.Tables[0];
                        //dpt = dt1.Rows[0]["DepartmentName"].ToString();
                        ostation = dt1.Rows[0]["stationCode"].ToString();
                        dpt = 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 tstation = dtdetail.Rows[i]["TSation"].ToString() == "" ? ostation : dtdetail.Rows[i]["TSation"].ToString();
                    string accountcode = dtdetail.Rows[i]["AccountCode"].ToString();
                    string Years = Convert.ToDateTime(dtdetail.Rows[i]["Tdate"].ToString()).Year.ToString();
                    string month = Convert.ToDateTime(dtdetail.Rows[i]["Tdate"].ToString()).Month.ToString();

                    DataTable dtbudget = new DataTable();
                    dtbudget = Comm.RtnEB(userid, dpt, ostation, tstation, accountcode, Years, month);
                    double re = System.Math.Round(DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(tstation) / DIMERCO.SDK.Utilities.LSDK.GetLatestStationUSDConvertRate(ostation), 4);
                    if (dtbudget != null && dtbudget.Rows.Count > 0)
                    {
                        string stationbudget = "", departmentbudget = "", personbudget = "", stationYear = "", departmentYear = "", personYear = "";
                        for (int j = 0; j < dtbudget.Rows.Count; j++)
                        {
                            decimal budget1 = 0, used = 0;
                            budget1 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(dtbudget.Rows[j]["Budget"].ToString()) * re, 2));
                            used = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(dtbudget.Rows[j]["Used"].ToString()) * re, 2));

                            if (dtbudget.Rows[j]["Type"].ToString() == "站点")
                            {
                                stationbudget = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["StationBudget"] = stationbudget;
                            }
                            else if (dtbudget.Rows[j]["Type"].ToString() == "部门")
                            {
                                departmentbudget = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["DepartmentBudget"] = departmentbudget;
                            }
                            else if (dtbudget.Rows[j]["Type"].ToString() == "个人")
                            {
                                personbudget = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["PersonBudget"] = personbudget;
                            }
                            else if (dtbudget.Rows[j]["Type"].ToString() == "全年个人")
                            {
                                personYear = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["PersonYTD"] = personYear;
                            }
                            else if (dtbudget.Rows[j]["Type"].ToString() == "全年部门")
                            {
                                departmentYear = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["DepartmentYTD"] = departmentYear;
                            }
                            else if (dtbudget.Rows[j]["Type"].ToString() == "全年站点")
                            {
                                stationYear = used.ToString("#,##0.00") + "/" + budget1.ToString("#,##0.00");
                                dtdetail.Rows[i]["StationYTD"] = stationYear;
                            }
                        }
                    }

                    sb.Append("<tr><th " + tdstyle + ">" + (i + 1).ToString() + "</th>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + 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 + " nowrap='nowrap'>" + 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() == "" ? "" : Convert.ToDecimal(dtdetail.Rows[i]["Pamount"].ToString()).ToString("#,##0.00")) + "</td>");
                    sb.Append("<td " + tdstyle + ">" + (dtdetail.Rows[i]["Camount"].ToString() == "" ? "" : Convert.ToDecimal(dtdetail.Rows[i]["Camount"].ToString()).ToString("#,##0.00")) + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["TSation"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[i]["AccountDes"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["StationBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["DepartmentBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["PersonBudget"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["StationYTD"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["DepartmentYTD"].ToString() + "</td>");
                    sb.Append("<td " + tdstyle + " nowrap='nowrap'>" + dtdetail.Rows[i]["PersonYTD"].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 colspan=\"3\" " + tdstyle + "></td>");
                sb.Append("<td " + tdstyle + ">" + dtdetail.Rows[0]["Cur"].ToString() + "</td>");
                sb.Append("<td " + tdstyle + ">" + ptotal.ToString("#,##0.00") + "</td>");
                sb.Append("<td " + tdstyle + ">" + ctotal.ToString("#,##0.00") + "</td>");
                sb.Append("<td colspan=\"8\" " + tdstyle + "></td>");
                sb.Append("</tr></tfoot></table></div><br />");
                sb.Append("<div " + divstyle + ">Apply Remark:" + dtMail.Rows[0]["Remark"].ToString() + "</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());
                    }
                    else
                    {
                        sb1.Append("<div " + divstyle + ">" + (i + 1).ToString());
                    }

                    string msg1 = "";
                    if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "verifier")
                    {
                        msg1 = ". To Be Verified: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "issuer")
                    {
                        msg1 = ". To Be Issued: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    else
                    {
                        msg1 = ". Waiting for Approval: " + dtMail.Rows[i]["Approver"].ToString() + "</div>";
                    }
                    sb1.Append(msg1);
                }
                sb1.Append("</div><br />");
                sb.Append(sb1.ToString());
                string url = "";
                if (Request.Url.Host != "localhost")
                {
                    url = "http://" + Request.Url.Authority + "/eReimbursement/Approve.aspx";
                }
                else
                {
                    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();
            }
            else
            {
                return false;
            }
            return true;
        }
Exemplo n.º 5
0
        protected bool SendMail(string type, string RequestID, string FlowID, DataTable dtPar)
        {
            //发送提醒邮件
            cs.DBCommand dbc = new cs.DBCommand();
            string sql = "select * from V_Eflow_ETravel where [Type]='" + type + "' and Step!=0 and RequestID=" + RequestID + " order by Step,FlowID";
            DataTable dtMail = new DataTable();
            dtMail = dbc.GetData("eReimbursement", sql);
            //string budget = dtMail.Rows[0]["Budget"].ToString() == "1" ? "(Budgeted)" : "(UnBudgeted)";
            //14/10/24
            string budget = "";
            if (dtMail.Rows[0]["Budget"].ToString() == "1")
            {
                budget = "(Budgeted)";
            }
            else if (dtMail.Rows[0]["Budget"].ToString() == "0")
            {
                budget = "(UnBudgeted)";
            }
            else if (dtMail.Rows[0]["Budget"].ToString() == "-1")
            {
                budget = "(Over-Budgeted)";
            }
            else if (dtMail.Rows[0]["Budget"].ToString() == "-2")
            {
                budget = "(UnBudgeted & Over-Budgeted)";
            }
            if (dtMail != null && dtMail.Rows.Count > 0)
            {
                DIMERCO.SDK.MailMsg mail = new DIMERCO.SDK.MailMsg();
                
                mail.FromDispName = "eReimbursement";
                mail.From = "*****@*****.**";
                string mailto = ""; string mailcc = "";
                string divstyle = "style='font-size:small;'";
                string divstyleCurrent = "style='font-size:small;color:blue;'";
                string divstyleReject = "style='font-size:small;color:red;'";
                string divstylered = "style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF;empty-cells:show;color:red;' width='110px' align='right'";
                string tdstyle = "style='border:silver 1px ridge; font-size:small;background-color: #FFFFFF;empty-cells:show;' width='110px' align='right'";
                StringBuilder sb = new StringBuilder();
                //sb.Append("<div " + divstyleReject + ">THIS IS A TEST MAIL.</div><br />");
                //sb.Append("<div>");
                //基本信息
                string sqlbase = "select * from V_Eflow_ETravel where FlowID='" + FlowID + "'";
                DataTable dtbase = new DataTable();
                dtbase = dbc.GetData("eReimbursement", sqlbase);
                if (dtbase.Rows[0]["Active"].ToString() == "2")//完成
                {
                    if (dtbase.Rows[0]["Status"].ToString() == "3")//完成:拒绝
                    {
                        //mail.Title = "Dimerco eReimbursement "+budget+" " + dtMail.Rows[0]["Person"].ToString() + " - Application Rejected.";
                        //16090007E 
                        if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() != "")
                        {
                            mail.Title = "Dimerco eReimbursement on behalf of " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + " " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - Application Rejected.";
                        }
                        else
                        {
                            mail.Title = "Dimerco eReimbursement " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - Application Rejected.";
                        }

                        sb.Append("<div " + divstyle + ">Dear " + dtbase.Rows[0]["Person"].ToString() + ",</div><br />");
                        //sb.Append("<div " + divstyleReject + ">The following eReimbursement application has been rejected:</div><br />");
                        //160115 垫付
                        if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() == "")
                        {
                            sb.Append("<div " + divstyleReject + ">The following eReimbursement application has been rejected:</div><br />");
                        }
                        else
                        {
                            sb.Append("<div " + divstyleReject + ">The following eReimbursement application on behalf of " + dtMail.Rows[0]["OnBehalfPersonUnit"].ToString() + " " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + " has been rejected:</div><br />");
                        }

                        if (dtbase.Rows[0]["RemarkFlow"].ToString() != "")
                        {
                            sb.Append("<div " + divstyleReject + ">eReimbursement Rejected Remarks:" + dtbase.Rows[0]["RemarkFlow"].ToString() + "</div><br /><br />");
                        }
                        else
                        {
                            sb.Append("<br />");
                        }
                        sb.Append("<div " + divstyle + ">No#:" + dtbase.Rows[0]["No"].ToString() +budget+ "</div>");
                        sb.Append("<div " + divstyle + ">Applicant:" + dtbase.Rows[0]["Person"].ToString() + "</div>");
                        sb.Append("<div " + divstyle + ">Unit:" + dtbase.Rows[0]["Station"].ToString() + "</div>");
                        sb.Append("<div " + divstyle + ">Department:" + dtbase.Rows[0]["Department"].ToString() + "</div>");

                        //抄送人,截至通过的所有审批人
                        for (int i = 0; i < dtMail.Rows.Count; i++)
                        {
                            DataSet dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[i]["ApproverID"].ToString());
                            if (dsCC.Tables[0].Rows.Count == 1)
                            {
                                //mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                                string mcc = dsCC.Tables[0].Rows[0]["eMail"].ToString().Trim();
                                if (mcc != "" && mailcc.ToLower().IndexOf(mcc) == -1)
                                {
                                    mailcc += mcc + ",";
                                }
                            }
                            //else
                            //{
                            //    ErrorHandle("Error mail address of Owner."); return false;
                            //}
                            if (dtMail.Rows[i]["Active"].ToString() == "2")
                            {
                                break;
                            }
                        }
                    }
                    else//完成:通过
                    {
                        //mail.Title = "Dimerco eReimbursement "+budget+" " + dtMail.Rows[0]["Person"].ToString() + " - Application Approved.";
                        //16090007E 
                        if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() != "")
                        {
                            mail.Title = "Dimerco eReimbursement on behalf of " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + " " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - Application Approved.";
                        }
                        else
                        {
                            mail.Title = "Dimerco eReimbursement " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - Application Approved.";
                        }
                        sb.Append("<div " + divstyle + ">Dear " + dtbase.Rows[0]["Person"].ToString() + ",</div><br />");
                        //sb.Append("<div " + divstyle + ">The following eReimbursement application has been approved(Complete):</div><br />");
                        //160115 垫付
                        if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() == "")
                        {
                            sb.Append("<div " + divstyle + ">The following eReimbursement application has been has been approved(Complete):</div><br />");
                        }
                        else
                        {
                            sb.Append("<div " + divstyle + ">The following eReimbursement application on behalf of " + dtMail.Rows[0]["OnBehalfPersonUnit"].ToString() + " " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + " has been approved(Complete):</div><br />");
                        }


                        if (dtbase.Rows[0]["RemarkFlow"].ToString() != "")
                        {
                            sb.Append("<div " + divstyleReject + ">eReimbursement Approval Remarks:" + dtbase.Rows[0]["RemarkFlow"].ToString() + "</div><br /><br />");
                        }
                        else
                        {
                            sb.Append("<br />");
                        }
                        sb.Append("<div " + divstyle + ">No#:" + dtbase.Rows[0]["No"].ToString() +budget+ "</div>");
                        sb.Append("<div " + divstyle + ">Applicant:" + dtbase.Rows[0]["Person"].ToString() + "</div>");
                        sb.Append("<div " + divstyle + ">Unit:" + dtbase.Rows[0]["Station"].ToString() + "</div>");
                        sb.Append("<div " + divstyle + ">Department:" + dtbase.Rows[0]["Department"].ToString() + "</div>");
                    }
                    //收件人
                    DataSet dsTo = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtbase.Rows[0]["PersonID"].ToString());
                    if (dsTo != null && dsTo.Tables.Count >= 1 && dsTo.Tables[0].Rows.Count == 1)
                    {
                        mailto += dsTo.Tables[0].Rows[0]["eMail"].ToString() + ",";
                    }
                    //else
                    //{
                    //    ErrorHandle("Error mail address of Approver."); return false;
                    //}
                    //抄送人,截至通过的所有审批人
                    //for (int i = 0; i < dtMail.Rows.Count; i++)
                    //{
                    //    DataSet dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[i]["ApproverID"].ToString());
                    //    if (dsCC.Tables[0].Rows.Count == 1)
                    //    {
                    //        mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                    //    }
                    //    else
                    //    {
                    //        ErrorHandle("Error mail address of Owner."); return false;
                    //    }
                    //    if (dtMail.Rows[i]["Active"].ToString() == "2")
                    //    {
                    //        break;
                    //    }
                    //}
                    if (dtbase.Rows[0]["CreadedByID"].ToString() != "" && dtbase.Rows[0]["CreadedByID"].ToString() != dtbase.Rows[0]["PersonID"].ToString())//代理人
                    {
                        DataSet dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtbase.Rows[0]["CreadedByID"].ToString());
                        if (dsCC.Tables[0].Rows.Count == 1)
                        {
                            //mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                            string mcc = dsCC.Tables[0].Rows[0]["eMail"].ToString().Trim();
                            if (mcc != "" && mailcc.ToLower().IndexOf(mcc) == -1)
                            {
                                mailcc += mcc + ",";
                            }
                        }
                        //else
                        //{
                        //    ErrorHandle("Error mail address of Owner."); return false;
                        //}
                    }
                    //如果完成,抄送所有被设置CC的邮件
                    //if (dtMail.Rows[0]["CCMailList"].ToString() != "")
                    //{
                    //    mailcc += dtMail.Rows[0]["CCMailList"].ToString();
                    //}
                    if (dtMail.Rows[0]["CCMailList"].ToString() != "")
                    {
                        //mailcc += dtMail.Rows[0]["CCMailList"].ToString();
                        string mcc = dtMail.Rows[0]["CCMailList"].ToString().Trim();
                        string[] mcclist = mcc.Split(',');
                        for (int i = 0; i < mcclist.Length; i++)
                        {
                            if (mcclist[i] != "" && mailcc.ToLower().IndexOf(mcclist[i]) == -1)
                            {
                                mailcc += mcclist[i] + ",";
                            }
                        }
                    }
                    //固定抄送人
                    string sqlmc = "select * from MailSetting where UserID='" + dtMail.Rows[0]["PersonID"].ToString() + "' and MailList!=''";
                    DataTable dtmc = new DataTable();
                    dtmc = dbc.GetData("eReimbursement", sqlmc);
                    if (dtmc != null && dtmc.Rows.Count == 1)
                    {
                        string mcc = dtmc.Rows[0]["MailList"].ToString().Trim();
                        string[] mcclist = mcc.Split(',');
                        for (int i = 0; i < mcclist.Length; i++)
                        {
                            if (mcclist[i] != "" && mailcc.ToLower().IndexOf(mcclist[i]) == -1)
                            {
                                mailcc += mcclist[i] + ",";
                            }
                        }
                    }
                }
                else//审批中,未完成
                {
                    string msg = "";
                    for (int i = 0; i < dtMail.Rows.Count; i++)
                    {
                        if (dtMail.Rows[i]["Active"].ToString() == "1")
                        {
                            
                            if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "verifier")
                            {
                                msg = "Process Checking.";
                            }
                            else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "issuer")
                            {
                                msg = "Process Paying.";
                            }
                            else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "confirm")
                            {
                                msg = "Seek For Your Confirmation.";
                            }
                            else
                            {
                                msg = "Seek For Your Approval.";
                            }

                            sb.Append("<div " + divstyle + ">Dear " + dtMail.Rows[i]["Approver"].ToString() + ",</div><br />");
                            //sb.Append("<div " + divstyle + ">The following eReimbursement application: "+msg+"</div><br />");
                            //160115 垫付
                            if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() == "")
                            {
                                sb.Append("<div " + divstyle + ">The following eReimbursement application: " + msg + "</div><br />");
                            }
                            else
                            {
                                sb.Append("<div " + divstyle + ">The following eReimbursement application on behalf of " + dtMail.Rows[0]["OnBehalfPersonUnit"].ToString() + " " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + ": " + msg + "</div><br />");
                            }


                            if (dtMail.Rows[i - 1]["RemarkFlow"].ToString() != "")
                            {
                                sb.Append("<div " + divstyle + ">eReimbursement Approval Remarks:" + dtMail.Rows[i - 1]["RemarkFlow"].ToString() + "</div><br /><br />");
                            }
                            else
                            {
                                sb.Append("<br />");
                            }
                            sb.Append("<div " + divstyle + ">No#:" + dtbase.Rows[0]["No"].ToString() +budget+ "</div>");
                            sb.Append("<div " + divstyle + ">Applicant:" + dtbase.Rows[0]["Person"].ToString() + "</div>");
                            sb.Append("<div " + divstyle + ">Unit:" + dtbase.Rows[0]["Station"].ToString() + "</div>");
                            sb.Append("<div " + divstyle + ">Department:" + dtbase.Rows[0]["Department"].ToString() + "</div>");
                            //收件人
                            DataSet dsTo = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[i]["ApproverID"].ToString());//下一级审批人
                            if (dsTo.Tables[0].Rows.Count == 1)
                            {
                                mailto += dsTo.Tables[0].Rows[0]["eMail"].ToString() + ",";
                            }
                            //else
                            //{
                            //    ErrorHandle("Error mail address."); return false;
                            //}
                            //抄送人
                            //dsTo = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(Request.Cookies.Get("eReimUserID").Value);//本级审批人
                            //if (dsTo.Tables[0].Rows.Count == 1)
                            //{
                            //    mailcc += dsTo.Tables[0].Rows[0]["eMail"].ToString() + ",";
                            //}
                            //else
                            //{
                            //    ErrorHandle("Error mail address."); return false;
                            //}
                            //抄送人
                            dsTo = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtbase.Rows[0]["PersonID"].ToString());//本人
                            if (dsTo != null && dsTo.Tables.Count >= 1 && dsTo.Tables[0].Rows.Count == 1)
                            {
                                mailcc += dsTo.Tables[0].Rows[0]["eMail"].ToString() + ",";
                            }
                            //else
                            //{
                            //    ErrorHandle("Error mail address."); return false;
                            //}
                            if (dtbase.Rows[0]["CreadedByID"].ToString() != "" && dtbase.Rows[0]["CreadedByID"].ToString() != dtbase.Rows[0]["PersonID"].ToString())//代理人
                            {
                                DataSet dsCC = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtbase.Rows[0]["CreadedByID"].ToString());
                                if (dsCC.Tables[0].Rows.Count == 1)
                                {
                                    //mailcc += dsCC.Tables[0].Rows[0]["eMail"].ToString() + ",";
                                    string mcc = dsCC.Tables[0].Rows[0]["eMail"].ToString().Trim();
                                    if (mcc != "" && mailcc.ToLower().IndexOf(mcc) == -1)
                                    {
                                        mailcc += mcc + ",";
                                    }
                                }
                                //else
                                //{
                                //    ErrorHandle("Error mail address of Owner."); return false;
                                //}
                            }
                        }
                    }
                    //mail.Title = "Dimerco eReimbursement " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - " + msg;
                    //16090007E 
                    if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() != "")
                    {
                        mail.Title = "Dimerco eReimbursement on behalf of " + dtMail.Rows[0]["OnBehalfPersonName"].ToString() + " " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - " + msg;
                    }
                    else
                    {
                        mail.Title = "Dimerco eReimbursement " + budget + " " + dtMail.Rows[0]["Person"].ToString() + " - " + msg;
                    }
                }



                //160127 Shanshan提出邮件测试
                string mailtestword = "";
                mailtestword += "<br />Mail to: " + mailto + "<br />";
                mailtestword += "Mail CC: " + mailcc + "<br />";
                DataSet dsowner = DIMERCO.SDK.Utilities.LSDK.getUserProfilebyUserList(dtMail.Rows[0]["PersonID"].ToString());
                if (dsowner != null && dsowner.Tables.Count >= 1 && dsowner.Tables[0].Rows.Count == 1)
                {
                    mail.To = dsowner.Tables[0].Rows[0]["eMail"].ToString();
                }
                string testmailstr = "";
                testmailstr += "<div " + divstyleReject + ">THIS IS A TEST MAIL." + mailtestword + "</div><br />";
                testmailstr += "<div>";

                //mail.To = mailto;
                //mail.Cc = mailcc;


                if (type == "G")//通用费用
                {

                }
                else//差旅费
                {
                    string sqldetail2 = "select min(convert(varchar(10),Tdate0,111)) as Tdate0,max(convert(varchar(10),Tdate,111)) as Tdate1 from ETraveleDetail where [No]=" + RequestID + "";
                    DataTable dtder = dbc.GetData("eReimbursement", sqldetail2);
                    if (dtder.Rows.Count == 1)
                    {
                        sb.Append("<div " + divstyle + ">Period:From " + Convert.ToDateTime(dtder.Rows[0]["Tdate0"].ToString()).ToString("yyyy/MM/dd") + " To " + Convert.ToDateTime(dtder.Rows[0]["Tdate1"].ToString()).ToString("yyyy/MM/dd") + "</div><br />");
                    }
                    string sqlcity = "select Tocity+'/' from (select distinct Tocity from ETraveleDetail where No=" + RequestID + ") as t for xml path('')";
                    DataTable dtcity = dbc.GetData("eReimbursement", sqlcity);
                    string city = dtcity.Rows[0][0].ToString();
                    sb.Append("<div " + divstyle + ">Destination:" + city.Substring(0, city.Length - 1) + "</div>");
                    sb.Append("<br />");
                    //160119 垫付

                    if (dtMail.Rows[0]["OnBehalfPersonID"].ToString() == "")
                    {
                        if (dtMail.Rows[0]["Budget"].ToString() == "1")//预算内
                        {
                            DataTable dtPerson = new DataTable();
                            dtPerson.Columns.Add("EName", typeof(System.String));
                            dtPerson.Columns.Add("Currency", typeof(System.String));
                            dtPerson.Columns.Add("Current", typeof(System.Decimal));
                            dtPerson.Columns.Add("PA", typeof(System.Decimal));
                            dtPerson.Columns.Add("CA", typeof(System.Decimal));
                            dtPerson.Columns.Add("PU", typeof(System.Decimal));
                            dtPerson.Columns.Add("PB", typeof(System.Decimal));
                            dtPerson.Columns.Add("PPercent", typeof(System.String));//%(Current+Used) / Budget

                            DataTable dtDepartment = new DataTable();
                            dtDepartment.Columns.Add("EName", typeof(System.String));
                            dtDepartment.Columns.Add("Currency", typeof(System.String));
                            dtDepartment.Columns.Add("Current", typeof(System.Decimal));
                            dtDepartment.Columns.Add("PA", typeof(System.Decimal));
                            dtDepartment.Columns.Add("CA", typeof(System.Decimal));
                            dtDepartment.Columns.Add("DU", typeof(System.Decimal));
                            dtDepartment.Columns.Add("DB", typeof(System.Decimal));
                            dtDepartment.Columns.Add("DPercent", typeof(System.String));//%(Current+Used) / Budget

                            DataTable dtStation = new DataTable();
                            dtStation.Columns.Add("EName", typeof(System.String));
                            dtStation.Columns.Add("Currency", typeof(System.String));
                            dtStation.Columns.Add("Current", typeof(System.Decimal));
                            dtStation.Columns.Add("PA", typeof(System.Decimal));
                            dtStation.Columns.Add("CA", typeof(System.Decimal));
                            dtStation.Columns.Add("SU", typeof(System.Decimal));
                            dtStation.Columns.Add("SB", typeof(System.Decimal));
                            dtStation.Columns.Add("SPercent", typeof(System.String));//%(Current+Used) / Budget

                            for (int i = 0; i < dtPar.Rows.Count; i++)
                            {
                                if (Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()) != 0)//按照个人分配了预算
                                {
                                    DataRow dr = dtPerson.NewRow();
                                    dr["EName"] = dtPar.Rows[i]["EName"].ToString();
                                    dr["Currency"] = dtPar.Rows[i]["LocalCur"].ToString();
                                    dr["Current"] = dtPar.Rows[i]["Current"];
                                    dr["PA"] = dtPar.Rows[i]["PA"];
                                    dr["CA"] = dtPar.Rows[i]["CA"];
                                    dr["PU"] = dtPar.Rows[i]["PU"];
                                    dr["PB"] = dtPar.Rows[i]["PB"];
                                    dr["PPercent"] = dtPar.Rows[i]["PPercent"].ToString() + "%";
                                    //decimal per = System.Math.Round(100 * (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["PU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()), 2);
                                    //dr["PPercent"] = per.ToString() + "%";
                                    dtPerson.Rows.Add(dr);
                                }
                                if (Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()) == 0 && Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()) != 0)//按照部门分配了预算
                                {
                                    DataRow dr = dtDepartment.NewRow();
                                    dr["EName"] = dtPar.Rows[i]["EName"].ToString();
                                    dr["Currency"] = dtPar.Rows[i]["LocalCur"].ToString();
                                    dr["Current"] = dtPar.Rows[i]["Current"];
                                    dr["PA"] = dtPar.Rows[i]["PA"];
                                    dr["CA"] = dtPar.Rows[i]["CA"];
                                    dr["DU"] = dtPar.Rows[i]["DU"];
                                    dr["DB"] = dtPar.Rows[i]["DB"];
                                    dr["DPercent"] = dtPar.Rows[i]["DPercent"].ToString() + "%";
                                    //decimal per = System.Math.Round(100 * (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["DU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()), 2);
                                    //dr["DPercent"] = per.ToString() + "%";
                                    dtDepartment.Rows.Add(dr);
                                }
                                if (Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()) == 0 && Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()) == 0 && Convert.ToDecimal(dtPar.Rows[i]["SB"].ToString()) != 0)//按照站点分配了预算
                                {
                                    DataRow dr = dtStation.NewRow();
                                    dr["EName"] = dtPar.Rows[i]["EName"].ToString();
                                    dr["Currency"] = dtPar.Rows[i]["LocalCur"].ToString();
                                    dr["Current"] = dtPar.Rows[i]["Current"];
                                    dr["PA"] = dtPar.Rows[i]["PA"];
                                    dr["CA"] = dtPar.Rows[i]["CA"];
                                    dr["SU"] = dtPar.Rows[i]["SU"];
                                    dr["SB"] = dtPar.Rows[i]["SB"];
                                    dr["SPercent"] = dtPar.Rows[i]["SPercent"].ToString() + "%";
                                    //decimal per = System.Math.Round(100 * (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["SU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["SB"].ToString()), 2);
                                    //dr["SPercent"] = per.ToString() + "%";
                                    dtStation.Rows.Add(dr);
                                }
                            }
                            if (dtPerson.Rows.Count > 0)//如果有个人分配,则显示个人表格
                            {
                                sb.Append("<div><table><tr>");
                                sb.Append("<td " + tdstyle + ">Expense Item</td>");
                                sb.Append("<td " + tdstyle + ">Currency</td>");
                                //sb.Append("<td " + tdstyle + ">current</td>");
                                sb.Append("<td " + tdstyle + ">Personal paid</td>");
                                sb.Append("<td " + tdstyle + ">Company</td>");
                                sb.Append("<td " + tdstyle + ">Personal<br />Used</td>");
                                sb.Append("<td " + tdstyle + ">Personal<br />Budget</td>");
                                sb.Append("<td " + tdstyle + ">%<br />(Current+Used) / Budget</td></tr>");
                                DataRow dr = dtPerson.NewRow();
                                dr["EName"] = "Sub Total";
                                dr["Currency"] = dtPerson.Rows[0]["Currency"].ToString();
                                dr["Current"] = dtPerson.Compute("Sum(Current)", "");
                                dr["PA"] = dtPerson.Compute("Sum(PA)", "");
                                dr["CA"] = dtPerson.Compute("Sum(CA)", "");
                                dr["PU"] = dtPerson.Compute("Sum(PU)", "");
                                dr["PB"] = dtPerson.Compute("Sum(PB)", "");
                                dr["PPercent"] = "&nbsp;";
                                dtPerson.Rows.Add(dr);
                                for (int i = 0; i < dtPerson.Rows.Count; i++)
                                {
                                    sb.Append("<tr><td " + tdstyle + ">" + dtPerson.Rows[i]["EName"].ToString() + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtPerson.Rows[i]["Currency"].ToString() + "</td>");
                                    //sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtPerson.Rows[i]["Current"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtPerson.Rows[i]["PA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtPerson.Rows[i]["CA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtPerson.Rows[i]["PU"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtPerson.Rows[i]["PB"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtPerson.Rows[i]["PPercent"].ToString() + "</td></tr>");
                                }
                                sb.Append("</table></div><br />");
                            }
                            if (dtDepartment.Rows.Count > 0)//如果有部门分配,则显示部门表格
                            {
                                sb.Append("<div><table><tr>");
                                sb.Append("<td " + tdstyle + ">Expense Item</td>");
                                sb.Append("<td " + tdstyle + ">Currency</td>");
                                //sb.Append("<td " + tdstyle + ">current</td>");
                                sb.Append("<td " + tdstyle + ">Personal paid</td>");
                                sb.Append("<td " + tdstyle + ">Company</td>");
                                sb.Append("<td " + tdstyle + ">Department<br />Used</td>");
                                sb.Append("<td " + tdstyle + ">Department<br />Budget</td>");
                                sb.Append("<td " + tdstyle + ">%<br />(Current+Used) / Budget</td></tr>");
                                DataRow dr = dtDepartment.NewRow();
                                dr["EName"] = "Sub Total";
                                dr["Currency"] = dtDepartment.Rows[0]["Currency"].ToString();
                                dr["Current"] = dtDepartment.Compute("Sum(Current)", "");
                                dr["PA"] = dtDepartment.Compute("Sum(PA)", "");
                                dr["CA"] = dtDepartment.Compute("Sum(CA)", "");
                                dr["DU"] = dtDepartment.Compute("Sum(DU)", "");
                                dr["DB"] = dtDepartment.Compute("Sum(DB)", "");
                                dr["DPercent"] = "&nbsp;";
                                dtDepartment.Rows.Add(dr);
                                for (int i = 0; i < dtDepartment.Rows.Count; i++)
                                {
                                    sb.Append("<tr><td " + tdstyle + ">" + dtDepartment.Rows[i]["EName"].ToString() + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtDepartment.Rows[i]["Currency"].ToString() + "</td>");
                                    //sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtDepartment.Rows[i]["Current"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtDepartment.Rows[i]["PA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtDepartment.Rows[i]["CA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtDepartment.Rows[i]["DU"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtDepartment.Rows[i]["DB"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtDepartment.Rows[i]["DPercent"].ToString() + "</td></tr>");
                                }
                                sb.Append("</table></div><br />");
                            }
                            if (dtStation.Rows.Count > 0)//如果有部门分配,则显示个人表格
                            {
                                sb.Append("<div><table><tr>");
                                sb.Append("<td " + tdstyle + ">Expense Item</td>");
                                sb.Append("<td " + tdstyle + ">Currency</td>");
                                //sb.Append("<td " + tdstyle + ">current</td>");
                                sb.Append("<td " + tdstyle + ">Personal paid</td>");
                                sb.Append("<td " + tdstyle + ">Company</td>");
                                sb.Append("<td " + tdstyle + ">Unit<br />Used</td>");
                                sb.Append("<td " + tdstyle + ">Unit<br />Budget</td>");
                                sb.Append("<td " + tdstyle + ">%<br />(Current+Used) / Budget</td></tr>");
                                DataRow dr = dtStation.NewRow();
                                dr["EName"] = "Sub Total";
                                dr["Currency"] = dtStation.Rows[0]["Currency"].ToString();
                                dr["Current"] = dtStation.Compute("Sum(Current)", "");
                                dr["PA"] = dtStation.Compute("Sum(PA)", "");
                                dr["CA"] = dtStation.Compute("Sum(CA)", "");
                                dr["SU"] = dtStation.Compute("Sum(SU)", "");
                                dr["SB"] = dtStation.Compute("Sum(SB)", "");
                                dr["SPercent"] = "&nbsp;";
                                dtStation.Rows.Add(dr);
                                for (int i = 0; i < dtStation.Rows.Count; i++)
                                {
                                    sb.Append("<tr><td " + tdstyle + ">" + dtStation.Rows[i]["EName"].ToString() + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtStation.Rows[i]["Currency"].ToString() + "</td>");
                                    //sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtStation.Rows[i]["Current"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtStation.Rows[i]["PA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtStation.Rows[i]["CA"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtStation.Rows[i]["SU"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + string.Format("{0:N2}", Convert.ToDecimal(dtStation.Rows[i]["SB"].ToString())) + "</td>");
                                    sb.Append("<td " + tdstyle + ">" + dtStation.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                }
                                sb.Append("</table></div><br />");
                            }
                        }
                        else
                        {
                            //为dtPar增加一行合计
                            DataRow drBudget = dtPar.NewRow();
                            drBudget["EName"] = "Sub Total";
                            drBudget["LocalCur"] = dtPar.Rows[0]["LocalCur"].ToString();
                            drBudget["Current"] = dtPar.Compute("Sum(Current)", "");
                            drBudget["PA"] = dtPar.Compute("Sum(PA)", "");
                            drBudget["CA"] = dtPar.Compute("Sum(CA)", "");
                            drBudget["PU"] = dtPar.Compute("Sum(PU)", "");
                            drBudget["PB"] = dtPar.Compute("Sum(PB)", "");
                            drBudget["DU"] = dtPar.Compute("Sum(DU)", "");
                            drBudget["DB"] = dtPar.Compute("Sum(DB)", "");
                            drBudget["SU"] = dtPar.Compute("Sum(SU)", "");
                            drBudget["SB"] = dtPar.Compute("Sum(SB)", "");
                            dtPar.Rows.Add(drBudget);

                            DataTable dtbudgetNew = new DataTable();//记录预算最终数据,用于传递给EMail显示
                            dtbudgetNew.Columns.Add("EName", typeof(System.String));
                            //dtbudgetNew.Columns.Add("COACode", typeof(System.String));
                            dtbudgetNew.Columns.Add("Current", typeof(System.String));
                            dtbudgetNew.Columns.Add("PA", typeof(System.String));
                            dtbudgetNew.Columns.Add("CA", typeof(System.String));
                            dtbudgetNew.Columns.Add("PU", typeof(System.String));
                            dtbudgetNew.Columns.Add("PB", typeof(System.String));
                            dtbudgetNew.Columns.Add("PPercent", typeof(System.String));
                            dtbudgetNew.Columns.Add("DU", typeof(System.String));
                            dtbudgetNew.Columns.Add("DB", typeof(System.String));
                            dtbudgetNew.Columns.Add("DPercent", typeof(System.String));
                            dtbudgetNew.Columns.Add("SU", typeof(System.String));
                            dtbudgetNew.Columns.Add("SB", typeof(System.String));
                            dtbudgetNew.Columns.Add("SPercent", typeof(System.String));
                            dtbudgetNew.Columns.Add("Currency", typeof(System.String));
                            for (int i = 0; i < dtPar.Rows.Count; i++)
                            {
                                DataRow dr = dtbudgetNew.NewRow();
                                dr["EName"] = dtPar.Rows[i]["EName"].ToString();
                                dr["Currency"] = dtPar.Rows[i]["LocalCur"].ToString();
                                dr["Current"] = string.Format("{0:N2}", dtPar.Rows[i]["Current"]);
                                dr["PA"] = string.Format("{0:N2}", dtPar.Rows[i]["PA"]);
                                dr["CA"] = string.Format("{0:N2}", dtPar.Rows[i]["CA"]);
                                dr["PU"] = string.Format("{0:N2}", dtPar.Rows[i]["PU"]);
                                if (Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()) != 0)
                                {
                                    dr["PB"] = string.Format("{0:N2}", dtPar.Rows[i]["PB"]);
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        //dr["PPercent"] = string.Format("{0:P2}", (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["PU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()));
                                        dr["PPercent"] = dtPar.Rows[i]["PPercent"].ToString() + "%";
                                    }
                                }
                                else
                                {
                                    dr["PB"] = "--";
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        dr["PPercent"] = "--";
                                    }
                                }
                                dr["DU"] = string.Format("{0:N2}", dtPar.Rows[i]["DU"]);
                                if (Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()) != 0)
                                {
                                    dr["DB"] = string.Format("{0:N2}", dtPar.Rows[i]["DB"]);
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        //dr["DPercent"] = string.Format("{0:P2}", (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["DU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()));
                                        dr["DPercent"] = dtPar.Rows[i]["DPercent"].ToString() + "%";
                                    }
                                }
                                else
                                {
                                    dr["DB"] = "--";
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        dr["DPercent"] = "--";
                                    }
                                }
                                dr["SU"] = string.Format("{0:N2}", dtPar.Rows[i]["SU"]);
                                if (Convert.ToDecimal(dtPar.Rows[i]["SB"].ToString()) != 0)
                                {
                                    dr["SB"] = string.Format("{0:N2}", dtPar.Rows[i]["SB"]);
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        //dr["SPercent"] = string.Format("{0:P2}", (Convert.ToDecimal(dtPar.Rows[i]["Current"].ToString()) + Convert.ToDecimal(dtPar.Rows[i]["SU"].ToString())) / Convert.ToDecimal(dtPar.Rows[i]["SB"].ToString()));
                                        dr["SPercent"] = dtPar.Rows[i]["SPercent"].ToString() + "%";
                                    }
                                }
                                else
                                {
                                    dr["SB"] = "--";
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        dr["SPercent"] = "--";
                                    }
                                }
                                if (Convert.ToDecimal(dtPar.Rows[i]["PB"].ToString()) == 0 && Convert.ToDecimal(dtPar.Rows[i]["DB"].ToString()) == 0 && Convert.ToDecimal(dtPar.Rows[i]["SB"].ToString()) == 0)
                                {
                                    if (i != dtPar.Rows.Count - 1)
                                    {
                                        dr["PPercent"] = "Unbudget Item";
                                        dr["DPercent"] = "Unbudget Item";
                                        dr["SPercent"] = "Unbudget Item";
                                    }
                                }
                                if (i == dtPar.Rows.Count - 1)
                                {
                                    dr["PPercent"] = "&nbsp;";
                                    dr["DPercent"] = "&nbsp;";
                                    dr["SPercent"] = "&nbsp;";
                                }
                                dtbudgetNew.Rows.Add(dr);
                            }
                            sb.Append("<div><table><tr>");
                            sb.Append("<td " + tdstyle + ">Expense Item</td>");
                            sb.Append("<td " + tdstyle + ">Currency</td>");
                            //sb.Append("<td " + tdstyle + ">current</td>");
                            sb.Append("<td " + tdstyle + ">Personal paid</td>");
                            sb.Append("<td " + tdstyle + ">Company</td>");
                            sb.Append("<td " + tdstyle + ">Personal<br />Used</td>");
                            sb.Append("<td " + tdstyle + ">Personal<br />Budget</td>");
                            sb.Append("<td " + tdstyle + ">%<br />(Current+Used) /<br />Budget</td>");
                            sb.Append("<td " + tdstyle + ">Department<br />Used</td>");
                            sb.Append("<td " + tdstyle + ">Department<br />Budget</td>");
                            sb.Append("<td " + tdstyle + ">%<br />(Current+Used) /<br />Budget</td>");
                            sb.Append("<td " + tdstyle + ">Unit<br />Used</td>");
                            sb.Append("<td " + tdstyle + ">Unit<br />Budget</td>");
                            sb.Append("<td " + tdstyle + ">%<br />(Current+Used) /<br />Budget</td></tr>");
                            for (int i = 0; i < dtbudgetNew.Rows.Count; i++)
                            {
                                decimal PPercent, DPercent, SPercent;

                                sb.Append("<tr><td " + tdstyle + ">" + dtbudgetNew.Rows[i]["EName"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["Currency"].ToString() + "</td>");
                                //sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["Current"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PA"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["CA"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PU"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PB"].ToString() + "</td>");
                                //sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PPercent"].ToString() + "</td>");
                                if (dtbudgetNew.Rows[i]["PPercent"].ToString() == "Unbudget Item")
                                {
                                    sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["PPercent"].ToString() + "</td>");
                                }
                                else if (dtbudgetNew.Rows[i]["PPercent"].ToString() == "--" || dtbudgetNew.Rows[i]["PPercent"].ToString() == "&nbsp;")
                                {
                                    sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PPercent"].ToString() + "</td>");
                                }
                                else if (decimal.TryParse(dtbudgetNew.Rows[i]["PPercent"].ToString().Substring(0, dtbudgetNew.Rows[i]["PPercent"].ToString().Length - 1), out PPercent))
                                {
                                    if (PPercent > 100)
                                    {
                                        sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["PPercent"].ToString() + "</td>");
                                    }
                                    else
                                    {
                                        sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["PPercent"].ToString() + "</td>");
                                    }
                                }

                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DU"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DB"].ToString() + "</td>");
                                //sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                if (dtbudgetNew.Rows[i]["DPercent"].ToString() == "Unbudget Item")
                                {
                                    sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                }
                                else if (dtbudgetNew.Rows[i]["DPercent"].ToString() == "--" || dtbudgetNew.Rows[i]["DPercent"].ToString() == "&nbsp;")
                                {
                                    sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                }
                                else if (decimal.TryParse(dtbudgetNew.Rows[i]["DPercent"].ToString().Substring(0, dtbudgetNew.Rows[i]["DPercent"].ToString().Length - 1), out DPercent))
                                {
                                    if (DPercent > 100)
                                    {
                                        sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                    }
                                    else
                                    {
                                        sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                    }
                                }
                                else
                                {
                                    sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["DPercent"].ToString() + "</td>");
                                }
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SU"].ToString() + "</td>");
                                sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SB"].ToString() + "</td>");
                                //sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                if (dtbudgetNew.Rows[i]["SPercent"].ToString() == "Unbudget Item")
                                {
                                    sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                }
                                else if (dtbudgetNew.Rows[i]["SPercent"].ToString() == "--" || dtbudgetNew.Rows[i]["SPercent"].ToString() == "&nbsp;")
                                {
                                    sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td>");
                                }
                                else if (decimal.TryParse(dtbudgetNew.Rows[i]["SPercent"].ToString().Substring(0, dtbudgetNew.Rows[i]["SPercent"].ToString().Length - 1), out SPercent))
                                {
                                    if (SPercent > 100)
                                    {
                                        sb.Append("<td " + divstylered + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                    }
                                    else
                                    {
                                        sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                    }
                                }
                                else
                                {
                                    sb.Append("<td " + tdstyle + ">" + dtbudgetNew.Rows[i]["SPercent"].ToString() + "</td></tr>");
                                }
                            }
                            sb.Append("</table></div><br />");
                        }
                        
                    }
                }
                sb.Append("<div " + divstyle + ">Apply Remark:" + dtMail.Rows[0]["Remark"].ToString() + "</div><br />");
                StringBuilder sb1 = new StringBuilder();
                sb1.Append("<div><span " + divstyle + ">Approval Flow:</span>");
                for (int i = 0; i < dtMail.Rows.Count; i++)
                {
                    if (dtMail.Rows[i]["Status"].ToString() == "1")//待批
                    {
                        string msg1 = "";
                        if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "verifier")
                        {
                            msg1 = ". To Be Verified: ";
                        }
                        else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "issuer")
                        {
                            msg1 = ". To Be Issued: ";
                        }
                        else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "confirm")
                        {
                            msg1 = ". Waiting For Confirmation.";
                        }
                        else
                        {
                            msg1 = ". Waiting for Approval: ";
                        }

                        if (dtMail.Rows[i]["Active"].ToString() == "1")
                        {
                            sb1.Append("<div " + divstyleCurrent + ">" + (i + 1).ToString() + msg1 + dtMail.Rows[i]["Approver"].ToString());
                        }
                        else
                        {
                            sb1.Append("<div " + divstyle + ">" + (i + 1).ToString() + msg1 + dtMail.Rows[i]["Approver"].ToString());
                        }
                    }
                    else if (dtMail.Rows[i]["Status"].ToString() == "2")//批准
                    {
                        string msg1 = "";
                        if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "verifier")
                        {
                            msg1 = " Verified by: ";
                        }
                        else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "issuer")
                        {
                            msg1 = " Issued by: ";
                        }
                        else if (dtMail.Rows[i]["FlowFn"].ToString().ToLower() == "confirm")
                        {
                            msg1 = " Confirmed by: ";
                        }
                        else
                        {
                            msg1 = " Approved by: ";
                        }

                        if (dtMail.Rows[i]["Active"].ToString() == "-1")//未完成
                        {
                            sb1.Append("<div " + divstyle + ">" + (i + 1).ToString() + "." + msg1 + dtMail.Rows[i]["Approver"].ToString() + ", Date: " + Convert.ToDateTime(dtMail.Rows[i]["ApproveDate"].ToString()).ToString("yy/MM/dd"));
                        }
                        else if (dtMail.Rows[i]["Active"].ToString() == "2")//已完成
                        {
                            sb1.Append("<div " + divstyleCurrent + ">" + (i + 1).ToString() + ". Complete - " + msg1 + dtMail.Rows[i]["Approver"].ToString() + ", Date: " + Convert.ToDateTime(dtMail.Rows[i]["ApproveDate"].ToString()).ToString("yy/MM/dd"));
                        }
                    }
                    else if (dtMail.Rows[i]["Status"].ToString() == "3")
                    {
                        sb1.Append("<div " + divstyleCurrent + ">" + (i + 1).ToString() + ". Complete - Rejected by: " + dtMail.Rows[i]["Approver"].ToString() + ", Date: " + Convert.ToDateTime(dtMail.Rows[i]["ApproveDate"].ToString()).ToString("yy/MM/dd"));
                    }
                    if (dtMail.Rows[i]["RemarkFlow"].ToString() != "")
                    {
                        sb1.Append(", Remark: " + dtMail.Rows[i]["RemarkFlow"].ToString() + "");
                    }
                    sb1.Append("</div>");
                    if (dtMail.Rows[i]["Active"].ToString() == "2")
                    {
                        break;
                    }
                }
                sb1.Append("</div><br />");
                sb.Append(sb1.ToString());
                string url = "";
                if (Request.Url.Host != "localhost")
                {
                    //url = "http://61.218.73.79:88/eReimbursement/Approve.aspx";
                    url = "http://" + Request.Url.Authority + "/eReimbursement/Approve.aspx";
                }
                else
                {
                    url = "http://" + Request.Url.Authority + "/Approve.aspx";
                }
                sb.Append("<div><a href=\"" + url + "?FlowID=" + FlowID + "\" style=\"color: #0000FF\">Click here to visit Dimerco eReimbursement.</a></div>");
                sb.Append("</div>");
                mail.Body = testmailstr+sb.ToString();
                mail.Send();
            }
            return true;
        }
Exemplo n.º 6
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();
            }
        }