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; } }
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; }
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; }
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"] = " "; 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"] = " "; 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"] = " "; 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"] = " "; dr["DPercent"] = " "; dr["SPercent"] = " "; } 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() == " ") { 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() == " ") { 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() == " ") { 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; }
//用于保存差旅费明细 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(); } }