public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (!string.IsNullOrEmpty(sysNo)) { int refundSysNo; if (int.TryParse(sysNo, out refundSysNo)) { var refundInfo = GetRefundInfo(refundSysNo); decimal?totalAmt = refundInfo.Items.Sum(p => { if (!p.IsPoint) { return(p.TotalAmount); } return(0); }); if (refundInfo.CashAmount != null && refundInfo.CashAmount != 0) { variables.Add("JsFunction", "sf();"); variables.Add("SOSysNo", refundInfo.SOSysNo); variables.Add("Now", DateTime.Now.ToShortDateString()); variables.Add("AuditUserName", refundInfo.AuditUserName); variables.Add("ReceiveName", refundInfo.ReceiveName); variables.Add("CustomerSysNo", refundInfo.CustomerSysNo); variables.Add("CustomerName", refundInfo.CustomerName); variables.Add("ReceiveAddress", refundInfo.ReceiveAddress); variables.Add("ReceivePhone", refundInfo.ReceivePhone); variables.Add("InvoiceNote", refundInfo.InvoiceNote); variables.Add("PayTypeName", refundInfo.PayTypeName); variables.Add("ShipTypeName", refundInfo.ShipTypeName); variables.Add("RefundID", refundInfo.RefundID); variables.Add("TotalAmount", ToLowerChineseMoney(totalAmt.Value)); variables.Add("ChineseTotalAmount", ToUpperChineseMoney(totalAmt.Value)); } DataTable t = new DataTable(); t.Columns.Add("ProductID"); t.Columns.Add("ProductName"); t.Columns.Add("PrintPrice"); t.Columns.Add("PrintQuantity"); t.Columns.Add("PrintTotalAmount"); if (refundInfo.Items != null) { refundInfo.Items.ForEach(p => { t.Rows.Add(p.ProductID, p.ProductName, p.Price, p.Quantity, p.PrintTotalAmount); }); } tableVariables.Add("RefundItems", t); } } }
/// <summary> /// 操作人、 /// 处理的订单总数量、 /// 已解决的订单数量、 /// 未解决的订单数量、 /// 解决率(已解决的数量/订单总数量*100%) /// </summary> /// <param name="reports"></param> void SendMail(List <InternalMemoReport> reports) { KeyValueVariables replaceContent = new KeyValueVariables(); replaceContent.AddKeyValue("#Time#", DateTime.Now.ToString()); DataTable tableList = new DataTable(); tableList.Columns.AddRange(new DataColumn[] { new DataColumn("UserName"), new DataColumn("Count"), new DataColumn("ResolvedCount"), new DataColumn("UnResolvedCount"), new DataColumn("ResolvedRate") }); foreach (var item in reports) { tableList.Rows.Add(item.UserName, item.Count, item.ResolvedCount, item.UnResolvedCount, item.ResolvedRate); } KeyTableVariables tableContent = new KeyTableVariables(); tableContent.Add("tbData", tableList); ExternalDomainBroker.SendEmail(m_emailTO, m_emailCC, "", "SO_InternalMemoReport", replaceContent, tableContent, false, true); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string param = requestPostData["ConsignSysNo"]; int ConsignSysNo = 0; DataTable table = CreatePrintData(); DataTable errorTable = new DataTable(); try { if (!int.TryParse(param, out ConsignSysNo)) { throw new BizException(string.Format("非法的结算单号{0}", param)); } InitData(ConsignSysNo, table); } catch (BizException ex) { InitErrorTable(ex, errorTable); } tableVariables.Add("Error", errorTable); tableVariables.Add("ConsignLeasePrint", table); }
public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); if (requestPostData != null) { variables.Add("TotalAmount", HttpUtility.UrlDecode(requestPostData["TotalAmount"])); } int count; DataTable dataTable = new DataTable(); dataTable.Columns.Add("VendorName"); dataTable.Columns.Add("InvoiceTime"); dataTable.Columns.Add("InputTime"); dataTable.Columns.Add("TotalAmt"); dataTable.Columns.Add("InvoiceNumber"); if (int.TryParse(requestPostData["InvoiceCount"], out count)) { DataRow row; for (int i = 0; i < count; i++) { row = dataTable.NewRow(); row["VendorName"] = HttpUtility.UrlDecode(requestPostData["V" + i]); row["InvoiceTime"] = HttpUtility.UrlDecode(requestPostData["I" + i]); row["InputTime"] = HttpUtility.UrlDecode(requestPostData["T" + i]); row["TotalAmt"] = HttpUtility.UrlDecode(requestPostData["A" + i]); row["InvoiceNumber"] = HttpUtility.UrlDecode(requestPostData["N" + i]); dataTable.Rows.Add(row); } } tableVariables.Add("InvoiceDetailList", dataTable); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string param = requestPostData["GroupSysNo"]; int GroupSysNo = 0; DataTable table = CreatePrintData(); DataTable errorTable = new DataTable(); try { if (!int.TryParse(param, out GroupSysNo)) { throw new BizException(string.Format(ResouceManager.GetMessageString("MKT.Promotion.GroupBuying", "GroupBuying_IllegalGroupID"), param)); } InitData(GroupSysNo, table); } catch (BizException ex) { InitErrorTable(ex, errorTable); } tableVariables.Add("Error", errorTable); tableVariables.Add("ConsignLeasePrint", table); }
public void PriceChangedSendMail(SOInfo soInfo) { try { List <SOInternalMemoInfo> memoList = ObjectFactory <SOInternalMemoProcessor> .Instance.GetBySOSysNo(soInfo.SysNo.Value); List <int> productSysNoList = (from item in soInfo.Items select item.ProductSysNo.Value).ToList(); List <ECCentral.BizEntity.IM.ProductInfo> productList = ExternalDomainBroker.GetProductInfoListByProductSysNoList(productSysNoList); if (productList != null) { DataTable dtMemo = new DataTable(); dtMemo.Columns.AddRange(new DataColumn[] { new DataColumn("LogTime"), new DataColumn("Content"), new DataColumn("Note") }); productList.ForEach(p => { SOItemInfo item = soInfo.Items.Find(i => i.ProductSysNo.Value == p.SysNo); if (item != null) { KeyValueVariables keyValueVariables = new KeyValueVariables(); KeyTableVariables keyTableVariables = new KeyTableVariables(); string pmEmailAddress = p.ProductBasicInfo.ProductManager.UserInfo.EmailAddress; StringBuilder mailBody = new StringBuilder(); keyValueVariables.Add("SOSysNo", soInfo.SysNo.Value); keyValueVariables.Add("ProductID", item.ProductID); keyValueVariables.Add("ProductName", item.ProductName); keyValueVariables.Add("Quantity", item.Quantity); keyValueVariables.Add("Weight", item.Weight); keyValueVariables.Add("Price", item.Price); keyValueVariables.Add("GainAveragePoint", item.GainAveragePoint); keyValueVariables.Add("PromotionAmount", item.PromotionAmount); keyValueVariables.Add("Warranty", item.Warranty); if (memoList != null && memoList.Count > 0 && dtMemo.Rows.Count == 0) { foreach (SOInternalMemoInfo internalMemo in memoList) { DataRow dr = dtMemo.NewRow(); dr["LogTime"] = internalMemo.LogTime.HasValue ? internalMemo.LogTime.Value.ToString(SOConst.DateTimeFormat) : String.Empty; dr["Content"] = internalMemo.Content; dr["Note"] = internalMemo.Note; dtMemo.Rows.Add(dr); } } keyValueVariables.Add("MemoListDisplay", dtMemo.Rows.Count > 0); keyTableVariables.Add("MemoList", dtMemo); ExternalDomainBroker.SendInternalEmail("SO_Product_PriceChanged", keyValueVariables, keyTableVariables); } }); } } catch (Exception ex) { ExceptionHelper.HandleException(ex); } }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (sysNo != null && sysNo.Trim() != String.Empty) { sysNo = System.Web.HttpUtility.UrlDecode(sysNo); int requestSysNo = int.TryParse(sysNo, out requestSysNo) ? requestSysNo : int.MinValue; if (requestSysNo > int.MinValue) { AdjustRequestInfo requestInfo = ObjectFactory <AdjustRequestAppService> .Instance.GetAdjustRequestInfoBySysNo(requestSysNo); variables.Add("SelfCompanyName", ResouceManager.GetMessageString(CommonConst.MessagePath_Common, "Res_Company_Name")); variables.Add("SelfCompanyAddress", ResouceManager.GetMessageString(CommonConst.MessagePath_Common, "Res_Company_Address")); variables.Add("SelfCompanyPhone", ResouceManager.GetMessageString(CommonConst.MessagePath_Common, "Res_Company_Phone")); variables.Add("SelfCompanyWebAddress", ResouceManager.GetMessageString(CommonConst.MessagePath_Common, "Res_Company_Url")); variables.Add("CreateUser", requestInfo.CreateUser.UserDisplayName); variables.Add("CreateDate", requestInfo.CreateDate.HasValue ? requestInfo.CreateDate.Value.ToString(SOConst.LongTimeFormat) : string.Empty); variables.Add("AuditUser", requestInfo.AuditUser.UserDisplayName); variables.Add("AuditDate", requestInfo.AuditDate.HasValue ? requestInfo.AuditDate.Value.ToString(SOConst.LongTimeFormat) : string.Empty); variables.Add("RequestSysNo", requestInfo.RequestID); variables.Add("Stock", requestInfo.Stock == null ? "" : requestInfo.Stock.StockName); variables.Add("Status", requestInfo.RequestStatus.ToDisplayText()); variables.Add("OutStockUser", requestInfo.OutStockUser.UserDisplayName); variables.Add("OutStockDate", requestInfo.OutStockDate.HasValue ? requestInfo.OutStockDate.Value.ToString(SOConst.LongTimeFormat) : string.Empty); variables.Add("Note", requestInfo.Note); DataTable dtProduct = new DataTable(); dtProduct.Columns.AddRange(new System.Data.DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("Price"), new DataColumn("Quantity"), new DataColumn("Amount") }); decimal totalAmount = 0M; requestInfo.AdjustItemInfoList.ForEach(p => { totalAmount += p.AdjustQuantity * p.AdjustCost; DataRow drProduct = dtProduct.NewRow(); drProduct["ProductID"] = p.AdjustProduct.ProductID; drProduct["ProductName"] = p.AdjustProduct.ProductBasicInfo.ProductTitle; drProduct["Price"] = p.AdjustCost.ToString("N2"); drProduct["Quantity"] = p.AdjustQuantity; drProduct["Amount"] = (p.AdjustQuantity * p.AdjustCost).ToString("N2"); dtProduct.Rows.Add(drProduct); }); variables.Add("TotalAmount", totalAmount.ToString("N2")); tableVariables.Add("ProductList", dtProduct); } } }
/// <summary> /// 发送内部邮件 /// </summary> /// <param name="mailInfoMessage"></param> /// <param name="isAsync"></param> public static void SendInternalEmail(string templateID, KeyValueVariables keyValueVariables, KeyTableVariables keyTableVariables) { try { ECCentral.Service.Utility.EmailHelper.SendEmailByTemplate(null, null, null, templateID, keyValueVariables, keyTableVariables, false, true); } catch (Exception ex) { ExceptionHelper.HandleException(ex); } }
public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); int soSysNo = 0; int warhouseNumber = 0; string param = requestPostData["SOSysNo"]; string param1 = requestPostData["WareHouseNumber"]; SOInvoiceInfo soInvoice = null; bool hasError = false; DataTable table = CreatePrintData(); DataTable errorTable = new DataTable(); try { if (!int.TryParse(param, out soSysNo)) { throw new BizException(string.Format(ResouceManager.GetMessageString("Invoice.InvoicePrint", "InvoicePrint_IllegalOrderID"), param)); } if (!int.TryParse(param1, out warhouseNumber)) { throw new BizException(string.Format(ResouceManager.GetMessageString("Invoice.InvoicePrint", "InvoicePrint_IllegalStockID"), param1)); } soInvoice = ObjectFactory <InvoiceReportProcessor> .Instance.GetNew(new SOInvoiceInfo { SOInfo = new SOInfo { SOSysNo = soSysNo, StockSysNo = warhouseNumber }, InvoiceInfoList = new List <InvoiceInfo>() }); } catch (BizException ex) { hasError = true; InitErrorTable(ex, errorTable); } if (!hasError) { InitData(soInvoice, table); } tableVariables.Add("Error", errorTable); tableVariables.Add("PrintInvoiceDetail", table); }
public void RenderHtmlForPrint(HttpContext context, string templateFileFullPath, KeyValueVariables variables, KeyTableVariables tableVariables) { // 禁用缓存 context.Response.Expires = -1; context.Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1); context.Response.CacheControl = "no-cache"; context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.Cache.SetNoStore(); context.Response.ContentType = "text/html"; string html = BuildHtml(templateFileFullPath, variables, tableVariables); context.Response.Write(html); context.Response.Flush(); }
public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (!string.IsNullOrEmpty(sysNo)) { StringBuilder sbRegisterSysNo = new StringBuilder(); StringBuilder sbCustomerDesc = new StringBuilder(); StringBuilder sbBriefNames = new StringBuilder(); CustomerInfo customer; SOBaseInfo soBaseInfo; DeliveryInfo deliveryInfo; int requestSysNo; string deliveryUserName, businessModel; if (int.TryParse(sysNo, out requestSysNo)) { var request = ObjectFactory <RequestAppService> .Instance.LoadWithRegistersBySysNo(requestSysNo, out customer, out soBaseInfo, out deliveryInfo, out deliveryUserName, out businessModel); if (request.Registers != null) { foreach (RMARegisterInfo register in request.Registers) { sbRegisterSysNo.Append(string.Format("{0}, ", register.SysNo.Value.ToString())); sbBriefNames.Append(string.Format("{0}<br />", register.BasicInfo.ProductName)); sbCustomerDesc.Append(string.Format("{0}<br />", register.BasicInfo.CustomerDesc)); } } variables.Add("Now", DateTime.Now.ToString("yyyy-MM-dd")); variables.Add("SOSysNo", request.SOSysNo); variables.Add("Contact", request.Contact); variables.Add("Phone", request.Phone); variables.Add("Address", request.Address); variables.Add("RegisterSysNoString", sbRegisterSysNo.ToString().Substring(0, sbRegisterSysNo.Length - 2)); variables.Add("BriefNameString", sbBriefNames.ToString()); variables.Add("CustomerDescString", sbCustomerDesc.ToString()); } } }
public void SendProductRingEmail(string emailTemplate, List <ProductRingDetailInfo> detailList) { if (null != detailList && detailList.Count > 0) { DataTable dtProduct = new DataTable(); dtProduct.Columns.AddRange(new DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("BatchNumber"), new DataColumn("ActualQty"), new DataColumn("LeftRingDays"), }); KeyTableVariables keyTablesVariables = new KeyTableVariables(); KeyValueVariables keyValueVariables = new KeyValueVariables(); keyValueVariables.Add("Receiver", detailList[0].Email); detailList.ForEach(p => { DataRow dr = dtProduct.NewRow(); dr["ProductID"] = p.ProductID; dr["ProductName"] = p.ProductName; dr["BatchNumber"] = p.BatchNumber; dr["ActualQty"] = p.ActualQty; dr["LeftRingDays"] = p.LeftRingDays; dtProduct.Rows.Add(dr); }); keyTablesVariables.Add("ProductList", dtProduct); ExternalDomainBroker.SendInternalEmail(detailList[0].Email.Trim(), emailTemplate, keyValueVariables, keyTablesVariables); //ExternalDomainBroker.SendExternalEmail(detailList[0].Email, emailTemplate, keyValueVariables, keyTablesVariables,"zh-CN"); } }
/// <summary> /// 发送月底库存邮件 /// </summary> /// <param name="emailList">发送地址列表</param> /// <param name="title">标题可以不填</param> /// <param name="content">发送内容</param> /// <returns>返回成功发送列表</returns> public void SendInventoryEmailEndOfMonth(string address, string language, string downloadPath, string savePath) { DataTable dt = ObjectFactory <IInventoryQueryDA> .Instance.QueryInventoryListEndOfMouth(); KeyTableVariables keyTablesVariables = new KeyTableVariables(); KeyValueVariables keyValueVariables = new KeyValueVariables(); List <DataTable> data = new List <DataTable>(); data.Add(dt); //keyTablesVariables.Add("InventoryList", dt); List <ColumnData> columndatalist = new List <ColumnData> (); ColumnData columndata = null; columndata = new ColumnData() { FieldName = "StockName", FooterType = FooterType.None, Width = 30, Title = "渠道仓库" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "ProductID", FooterType = FooterType.None, Width = 30, Title = "商品ID" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "ProductName", FooterType = FooterType.None, Width = 30, Title = "商品名称" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "VendorName", FooterType = FooterType.None, Width = 30, Title = "供应商" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "AccountQty", FooterType = FooterType.None, Width = 30, Title = "财务库存" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "CostAmount", FooterType = FooterType.None, Width = 30, Title = "成本金额" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "AvailableQty", FooterType = FooterType.None, Width = 30, Title = "可用库存" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "AllocatedQty", FooterType = FooterType.None, Width = 30, Title = "被占用库存" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "OrderQty", FooterType = FooterType.None, Width = 30, Title = "被订购数量" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "VirtualQty", FooterType = FooterType.None, Width = 30, Title = "虚库数量" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "ConsignQty", FooterType = FooterType.None, Width = 30, Title = "代销库存" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "PurchaseQty", FooterType = FooterType.None, Width = 30, Title = "采购在途数量" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "ShiftInQty", FooterType = FooterType.None, Width = 30, Title = "移入在途数量" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "ShiftOutQty", FooterType = FooterType.None, Width = 30, Title = "移出在途数量" }; columndatalist.Add(columndata); columndata = new ColumnData() { FieldName = "PositionInWarehouse", FooterType = FooterType.None, Width = 30, Title = "库位" }; columndatalist.Add(columndata); List <List <ColumnData> > columnList = new List <List <ColumnData> >(); columnList.Add(columndatalist); string fileName = ""; byte[] excelByte = new ExcelFileExporter().CreateFile(data, columnList, null, out fileName, "月底库存报表"); string excelName = System.Guid.NewGuid().ToString(); FileStream fs = new FileStream(String.Format("{0}//{1}.xls", savePath, excelName), FileMode.Create, FileAccess.Write); fs.Write(excelByte, 0, excelByte.Length); fs.Close(); keyValueVariables.Add("Titel", String.Format("月底库存报表,总数{0}条", dt.Rows.Count)); keyValueVariables.Add("Content", String.Format("库存数据已生成excel文件,请点击<a href=\"{0}/{1}.xls\">下载</a>", downloadPath, excelName)); ExternalDomainBroker.SendExternalEmail(address, "Inventory_EndOfMonth", keyValueVariables, keyTablesVariables, language); }
/// <summary> /// 发送模板邮件 /// </summary> /// <param name="toAddress">收件人地址(多个地址用;隔开),默认先加载模板中配置的ToAddress</param> /// <param name="templateID">模板ID</param> /// <param name="keyValueVariables">Key-Values变量</param> /// <param name="keyTableVariables">Key-Tables变量</param> /// <param name="isInternalMail">是否为内部邮件</param> public static void SendEmailByTemplate(string toAddress, string templateID, KeyValueVariables keyValueVariables, KeyTableVariables keyTableVariables, bool isInternalMail) { SendEmailByTemplate(toAddress, string.Empty, string.Empty, templateID, keyValueVariables, keyTableVariables, isInternalMail, true, Thread.CurrentThread.CurrentCulture.Name); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); CostChangeAppService CostChangeAppServiceInstance = ObjectFactory <CostChangeAppService> .Instance; //获取参数 string costChangeSysNoStr = requestPostData["CostChangeSysNo"]; int costChangeSysNo = int.Parse(costChangeSysNoStr); CostChangeInfo costChangeInfo = CostChangeAppServiceInstance.LoadCostChangeInfo(costChangeSysNo); //变价单编号 variables.AddKeyValue("CostChangeinfoSysNo", costChangeInfo.SysNo.Value.ToString()); //合同号 variables.AddKeyValue("ContractNo", ""); //供应商 VendorAppService VendorAppServiceInstance = ObjectFactory <VendorAppService> .Instance; var vendorNo = costChangeInfo.CostChangeBasicInfo.VendorSysNo; VendorInfo vendorInfo = VendorAppServiceInstance.LoadVendorInfoBySysNo(vendorNo); var vendorName = vendorInfo.VendorBasicInfo.VendorNameLocal; variables.AddKeyValue("VendorName", vendorName); //部门 variables.AddKeyValue("DepartmentName", "商品部"); //制表时间 var curentDataStr = DateTime.Now.Date.ToString("yyyy-MM-dd"); variables.AddKeyValue("CurentDate", curentDataStr); DataTable dt = new DataTable(); //商品ID dt.Columns.Add("ProductID"); //商品名称 dt.Columns.Add("ProductName"); //税率 dt.Columns.Add("TaxRange"); //变价数量 dt.Columns.Add("ChangeCount"); //原进价 dt.Columns.Add("OldPrice"); //新进价 dt.Columns.Add("NewPrice"); //变价金额 dt.Columns.Add("ChaneAmount"); //变价税金 dt.Columns.Add("ChaneTax"); //采购单编号 dt.Columns.Add("OrderNo"); //备注 dt.Columns.Add("Memo"); tableVariables.Add("tableCostChangeDetial", dt); Func <PurchaseOrderTaxRate, decimal, decimal> Shuijin = (a, b) => { return(((decimal)(((int)a) / 100.00)) * b / ((decimal)(((int)a) / 100.00) + 1)); }; Func <PurchaseOrderTaxRate, decimal, decimal> Jiakuan = (a, b) => { return(b / ((decimal)(((int)a) / 100.00) + 1)); }; //采购单实体 PurchaseOrderAppService purchaseOrderAppServiceInstance = ObjectFactory <PurchaseOrderAppService> .Instance; var totalAmount = 0m; foreach (var sub in costChangeInfo.CostChangeItems) { DataRow row = null; row = dt.NewRow(); var taxAndAmount = (sub.NewPrice - sub.OldPrice) * sub.ChangeCount; var po = purchaseOrderAppServiceInstance.LoadPurchaseOrderInfo(sub.POSysNo); var taxRateType = po.PurchaseOrderBasicInfo.TaxRateType.Value;//增值税类型 //商品ID row["ProductID"] = sub.ProductID; //商品名称 row["ProductName"] = sub.ProductName; //税率 row["TaxRange"] = ((int)taxRateType).ToString();//通过采购单 来获取 税率 //变价数量 row["ChangeCount"] = sub.ChangeCount; //原进价 row["OldPrice"] = sub.OldPrice.ToString("C"); //新进价 row["NewPrice"] = sub.NewPrice.ToString("C"); //不含税金额(价款) row["ChaneAmount"] = Jiakuan(taxRateType, taxAndAmount).ToString("C"); //变价税金 row["ChaneTax"] = Shuijin(taxRateType, taxAndAmount).ToString("C"); //采购单编号 row["OrderNo"] = sub.POSysNo; //备注 row["Memo"] = ""; dt.Rows.Add(row); totalAmount += taxAndAmount; } //制单人 variables.AddKeyValue("CreateUser", costChangeInfo.CostChangeBasicInfo.InUserStr); //审核人 variables.AddKeyValue("AuditUser", costChangeInfo.CostChangeBasicInfo.AuditUserStr); //合计 variables.AddKeyValue("TotalAmount", totalAmount.ToString("C")); }
public ActionResult BuildEmailTemplate() { KeyValueVariables keyValues = new KeyValueVariables(); keyValues.Add("StockName", "香港九龙仓"); keyValues.Add("ETATime", DateTime.Now.Date); keyValues.Add("CompanyName", "公司名称"); keyValues.Add("CompanyAddress", "公司地址"); keyValues.Add("CompanyTel", "123456789"); keyValues.Add("CompanyWebSite", "http://www.xxx.com"); keyValues.Add("StockAddress", "仓库地址"); keyValues.Add("StockContact", "仓库联系人"); keyValues.Add("StockTel", "仓库电话"); keyValues.Add("displayNo", ""); keyValues.Add("numberString", "1231312312312321"); keyValues.Add("shipTypeString", "默认 配送方式"); keyValues.Add("totalInPage", "5000.00"); keyValues.Add("totalAmt", "18000.00"); keyValues.Add("totalReturnPoint", "100"); keyValues.Add("PMName", "产品经理姓名"); keyValues.Add("CurrencyName", "港币"); keyValues.Add("entity.POID", "123"); keyValues.Add("DateTime.Now", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add("vendor.VendorName", "供应商名称"); keyValues.Add("vendor.SysNo", "123"); keyValues.Add("vendor.Address", "供应商联系地址"); keyValues.Add("vendor.Contact", "供应商联系人"); keyValues.Add("vendor.Fax", "0123445"); keyValues.Add("entity.InTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add("entity.PayTypeName", "默认支付方式"); keyValues.Add("entity.Memo", "备注信息备注信息备注信息备注信息备注信息"); keyValues.Add("entity.InStockMemo", "入库备注入库备注入库备注入库备注入库备注入库备注入库备注"); keyValues.Add("SendTimeString", DateTime.Now.ToString()); KeyTableVariables keyTables = new KeyTableVariables(); DataTable productAccessoryList = new DataTable(); productAccessoryList.Columns.Add("ProductID"); productAccessoryList.Columns.Add("AccessoriesID"); productAccessoryList.Columns.Add("AccessoriesIDAndName"); productAccessoryList.Columns.Add("Qty"); DataTable productItemList = new DataTable(); productItemList.Columns.Add("item.ProductID"); productItemList.Columns.Add("item.IsVirtualStockProduct"); productItemList.Columns.Add("item.ProductMode"); productItemList.Columns.Add("item.BriefName"); productItemList.Columns.Add("item.CurrencySymbol"); productItemList.Columns.Add("item.OrderPrice"); productItemList.Columns.Add("item.PurchaseQty"); productItemList.Columns.Add("item.Quantity"); productItemList.Columns.Add("item.PurchaseQtyOrderPrice"); productItemList.Columns.Add("item.QuantityOrderPrice"); for (int i = 0; i < 5; i++) { DataRow dr = productItemList.NewRow(); dr["item.ProductID"] = "ProductID-" + i.ToString(); dr["item.IsVirtualStockProduct"] = "IsVirtualStockProduct-" + i; dr["item.ProductMode"] = "ProductMode-" + i; dr["item.BriefName"] = "BriefName-" + i; dr["item.CurrencySymbol"] = "港币"; dr["item.OrderPrice"] = (i + 1) * 100; dr["item.PurchaseQty"] = (i + 1) * 5; dr["item.Quantity"] = (i + 1) * 5; dr["item.PurchaseQtyOrderPrice"] = ((i + 1) * 5 * 100).ToString("#########0.00"); dr["item.QuantityOrderPrice"] = ((i + 1) * 5 * 100).ToString("#########0.00"); productItemList.Rows.Add(dr); } for (int i = 0; i < 5; i++) { DataRow dr = productAccessoryList.NewRow(); dr["ProductID"] = "ProductID-" + i; dr["AccessoriesID"] = "AccessoriesID-" + i; dr["AccessoriesIDAndName"] = "AccessoriesIDAndName-" + i; dr["Qty"] = (i + 1) * 5; productAccessoryList.Rows.Add(dr); } keyTables.Add("tblProductItemsList", productItemList); keyTables.Add("tblProductAccessoryList", productAccessoryList); MailTemplate template = MailHelper.BuildMailTemplate("PO_AutoCloseMail", keyValues, keyTables); return(Content(template.Body)); }
public static void BuildEmailBodyByTemplate(MailMessage mailInfoMessage, string templateID, KeyValueVariables keyValues, KeyTableVariables keyTables, string languageCode) { if (!string.IsNullOrEmpty(templateID)) { MailTemplate getTemplate = GetTemplateByID(templateID, languageCode); mailInfoMessage.FromName = getTemplate.Sender; mailInfoMessage.DisplaySenderName = getTemplate.SenderDisplayName; mailInfoMessage.ToName = (!string.IsNullOrEmpty(getTemplate.To) ? getTemplate.To + ";" : string.Empty) + mailInfoMessage.ToName; mailInfoMessage.IsHtmlType = getTemplate.IsHtmlType; mailInfoMessage.Priority = getTemplate.MailPriority; //构建MailSubject: mailInfoMessage.Subject = BuildMailSubject(getTemplate.Subject, keyValues); //构建MailBody: mailInfoMessage.Body = TemplateString.BuildHtml(getTemplate.Body, keyValues, keyTables); } else { throw new ArgumentException("参数不能为null或空白字符串!", "templateID"); } }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { //throw new NotImplementedException(); variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string settleSysNoStr = requestPostData["ConsignSysNo"]; int settleSysNo = int.Parse(settleSysNoStr); //获取代销单i型纳西】 ConsignSettlementInfo consignSettlementInfo = ObjectFactory <ConsignSettlementProcessor> .Instance.LoadConsignSettlementInfo(settleSysNo); //获取商家信息 VendorInfo VendorInfo = ObjectFactory <VendorProcessor> .Instance.LoadVendorInfo(consignSettlementInfo.VendorInfo.SysNo.Value); //获取代销单商品信息 //结算单号 variables.Add("SettleSysNo", consignSettlementInfo.ReferenceSysNo); //合同号 : variables.Add("Agreement", "");//空 //结算年月 variables.Add("ConsignRange", consignSettlementInfo.ConsignRange); //打印日期 variables.Add("PrintDate", DateTime.Now.Date.ToString("yyyy-MM-dd")); //收款单位——全称 variables.Add("PayeeName", VendorInfo.VendorBasicInfo.VendorBriefName); //收款单位-供货商代码 variables.Add("PayeeNo", VendorInfo.VendorBasicInfo.VendorID); //开户行 variables.Add("PayeeBack", VendorInfo.VendorFinanceInfo.BankName); //账号 variables.Add("PayeeBackCardNo", VendorInfo.VendorFinanceInfo.AccountNumber); //付款单位-全称 variables.Add("PayerName", "泰隆优选"); //开户行 variables.Add("PayerBack", ""); //空 //账号 variables.Add("PayerBackCardNo", ""); //空 //付款部门 variables.Add("PayerDepartment", ""); //空 string DefaultMony = ((int)0).ToString("C"); //供应商提供税票 //价款 variables.Add("Cost", DefaultMony); //税金 variables.Add("Tax", DefaultMony); //价款税金合计 variables.Add("TaxAndCost", DefaultMony); //17 //价款 variables.Add("17Cost", DefaultMony); //税金 variables.Add("17Tax", DefaultMony); //价款税金合计 variables.Add("17TaxAndCost", DefaultMony); //13 //价款 variables.Add("13Cost", DefaultMony); //税金 variables.Add("13Tax", DefaultMony); //价款税金合计 variables.Add("13TaxAndCost", DefaultMony); //other //价款 variables.Add("OtCost", DefaultMony); //税金 variables.Add("OtTax", DefaultMony); //价款税金合计 variables.Add("OtTaxAndCost", DefaultMony); //类型 var taxRateData = consignSettlementInfo.TaxRateData; Func <PurchaseOrderTaxRate, decimal, decimal> Shuijin = (a, b) => { return(((decimal)(((int)a) / 100.00)) * b / ((decimal)(((int)a) / 100.00) + 1)); }; Func <PurchaseOrderTaxRate, decimal, decimal> Jiakuan = (a, b) => { return(b / ((decimal)(((int)a) / 100.00) + 1)); }; decimal jiakuan = Jiakuan(taxRateData.Value, consignSettlementInfo.TotalAmt.Value); string jiakuanStr = jiakuan.ToString("C"); string jieSuam = Shuijin(taxRateData.Value, consignSettlementInfo.TotalAmt.Value).ToString("C"); string zongJine = consignSettlementInfo.TotalAmt.Value.ToString("C"); variables["Cost"] = jiakuanStr; variables["Tax"] = jieSuam; variables["TaxAndCost"] = zongJine; if (taxRateData == PurchaseOrderTaxRate.Percent017) { variables["17Cost"] = jiakuanStr; variables["17Tax"] = jieSuam; variables["17TaxAndCost"] = zongJine; } else if (taxRateData == PurchaseOrderTaxRate.Percent013) { variables["13Cost"] = jiakuanStr; variables["13Tax"] = jieSuam; variables["13TaxAndCost"] = zongJine; } else { variables["OtCost"] = jiakuanStr; variables["OtTax"] = jieSuam; variables["OtTaxAndCost"] = zongJine; } var deduct = ObjectFactory <DeductProcessor> .Instance.GetSingleDeductBySysNo(VendorInfo.VendorDeductInfo.DeductSysNo.ToString()); if (deduct == null) { deduct = new BizEntity.PO.PurchaseOrder.Deduct(); deduct.DeductType = DeductType.Temp; } string deductTypeStr = EnumHelper.GetDescription(deduct.DeductType, typeof(DeductType)); //扣款项目 variables.Add("DeducType", deductTypeStr); //**** //扣款金额 variables.Add("DeducMoney", consignSettlementInfo.DeductAmt.ToString("C")); //备注 variables.Add("Memo", "");//空 //扣款合计: variables.Add("DeducMoneySum", consignSettlementInfo.DeductAmt.ToString("C")); //本月销售 decimal amount = 0; foreach (var sub in consignSettlementInfo.ConsignSettlementItemInfoList) { amount += sub.ConsignToAccLogInfo.SalePrice.Value * sub.ConsignToAccLogInfo.ProductQuantity.Value; } variables.Add("CurrentSale", amount.ToString("C")); //实际付款金额 variables.Add("RealPayMent", consignSettlementInfo.TotalAmt.Value.ToString("C")); //业务复核 variables.Add("BussinessRechecker", consignSettlementInfo.AuditUser.UserName); }
/// <summary> /// 发送模板邮件 /// </summary> /// <param name="toAddress">收件人地址(多个地址用;隔开),默认先加载模板中配置的ToAddress</param> /// <param name="ccAddress">抄送人地址(多个地址用;隔开)</param> /// <param name="bccAddress">暗送人地址(多个地址用;隔开)</param> /// <param name="templateID">模板ID</param> /// <param name="keyValueVariables">Key-Values变量</param> /// <param name="keyTableVariables">Key-Tables变量</param> /// <param name="isInternalMail">是否为内部邮件</param> /// <param name="isAsyncMail">是否为异步发送邮件</param> public static void SendEmailByTemplate(string toAddress, string ccAddress, string bccAddress, string templateID, KeyValueVariables keyValueVariables, KeyTableVariables keyTableVariables, bool isInternalMail, bool isAsyncMail) { SendEmailByTemplate(toAddress, ccAddress, bccAddress, templateID, keyValueVariables, keyTableVariables, isInternalMail, isAsyncMail, Thread.CurrentThread.CurrentCulture.Name); }
public static string BuildHtml(string html, KeyValueVariables keyValue, KeyTableVariables keyTable) { List <Node> nodeList = AnalyseTemplate(html); Stack <Node> stack = new Stack <Node>(nodeList); while (stack.Count > 0) { Node node = stack.Pop(); if (node.PlaceholdType == PlaceholdType.Table) { html = html.Replace(node.OuterHtml, node.UniqueSign); } else { string id = node.ID; bool show; if (keyValue.ContainsKey(id) && keyValue[id] != null && bool.TryParse(keyValue[id].ToString(), out show) && show) { foreach (var n in node.Children) { stack.Push(n); } nodeList.AddRange(node.Children); html = html.Replace(node.OuterHtml, node.InnerHtml); } else { html = html.Replace(node.OuterHtml, string.Empty); } nodeList.Remove(node); } } // 处理KeyValue MatchCollection matchCollectioin = Regex.Matches(html, OUTPUT_PLACE_HOLDER, RegexOptions.IgnoreCase | RegexOptions.Multiline); foreach (Match matchField in matchCollectioin) { if (matchField.Success) { if (matchField.Groups["id"] == null || string.IsNullOrWhiteSpace(matchField.Groups["id"].Value)) { throw new ApplicationException("no id"); } string id = matchField.Groups["id"].Value.Trim(); if (keyValue.ContainsKey(id)) { html = html.Replace(matchField.Groups[0].Value, CovertToString(keyValue[id])); } else { html = html.Replace(matchField.Groups[0].Value, string.Empty); } } } // 处理循环 foreach (Node node in nodeList) { if (keyTable.ContainsKey(node.ID) && keyTable[node.ID] != null) { html = html.Replace(node.UniqueSign, node.BuildHtml(keyTable[node.ID])); } else { html = html.Replace(node.UniqueSign, string.Empty); } } return(html); }
public void RenderHtmlForPrint(HttpContext context, string templateFileFullPath, KeyValueVariables variables, KeyTableVariables tableVariables) { using (RdlcPrintPage page = new RdlcPrintPage()) { HtmlGenericControl c = new HtmlGenericControl("html"); page.Controls.Add(c); HtmlHead head = new HtmlHead(); head.ID = "head1"; c.Controls.Add(head); HtmlGenericControl b = new HtmlGenericControl("body"); c.Controls.Add(b); HtmlForm form = new HtmlForm(); form.ID = "form1"; b.Controls.Add(form); ScriptManager scriptHandler = new ScriptManager(); scriptHandler.ID = "ScriptManager1"; form.Controls.Add(scriptHandler); ReportViewer rv = new ReportViewer(); rv.ShowExportControls = false; rv.SizeToReportContent = true; rv.Width = new System.Web.UI.WebControls.Unit("100%"); form.Controls.Add(rv); rv.LocalReport.ReportPath = templateFileFullPath; if (variables != null) { foreach (var entry in variables) { string tmp = CovertToString(entry.Value); rv.LocalReport.SetParameters(new ReportParameter(entry.Key, tmp)); } } rv.LocalReport.DataSources.Clear(); if (tableVariables != null) { foreach (var entry in tableVariables) { rv.LocalReport.DataSources.Add(new ReportDataSource(entry.Key, entry.Value)); } } rv.LocalReport.Refresh(); page.ProcessRequest(context); } // 禁用缓存 context.Response.Expires = -1; context.Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1); context.Response.CacheControl = "no-cache"; context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.Cache.SetNoStore(); //context.Response.ContentType = "text/html"; context.Response.Flush(); }
private string BuildHtml(string templateFileFullPath, KeyValueVariables variables, KeyTableVariables tableVariables) { string html = File.ReadAllText(templateFileFullPath, Encoding.UTF8); return(TemplateString.BuildHtml(html, variables, tableVariables)); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string getPOSysNo = requestPostData["POSysNo"]; string getPrintAccessory = requestPostData["PrintAccessory"]; string getPageTitle = requestPostData["PrintTitle"]; PurchaseOrderInfo poInfo = new PurchaseOrderInfo(); if (!string.IsNullOrEmpty(getPOSysNo)) { int poSysNo = Convert.ToInt32(getPOSysNo); poInfo = PurchaseOrderProcessor.LoadPO(poSysNo); poInfo.EIMSInfo.EIMSInfoList = PurchaseOrderProcessor.LoadPOEIMSInfoForPrint(poSysNo); #region [构建供应商和采购单的基本信息] string getPrintTitle = string.Empty; if (poInfo.PurchaseOrderBasicInfo.ConsignFlag == PurchaseOrderConsignFlag.Consign) { getPrintTitle = string.Format("采购单({0})", EnumHelper.GetDisplayText(poInfo.PurchaseOrderBasicInfo.ConsignFlag)); } else { if (poInfo.PurchaseOrderBasicInfo.PurchaseOrderType.HasValue && poInfo.PurchaseOrderBasicInfo.PurchaseOrderType != PurchaseOrderType.Normal) { getPrintTitle = string.Format("采购单({0})", EnumHelper.GetDisplayText(poInfo.PurchaseOrderBasicInfo.PurchaseOrderType)); } else { getPrintTitle = "采购单"; } } variables.Add("PageTitle", HttpUtility.UrlDecode(getPageTitle)); variables.Add("PrintTitle", getPrintTitle); WarehouseInfo getStockInfo = InventoryBizInteract.GetWarehouseInfoBySysNo(poInfo.PurchaseOrderBasicInfo.StockInfo.SysNo.Value); string getStockName = getStockInfo.WarehouseName; string CompanyName = ""; string CompanyAddress = ""; string ComapnyTel = ""; string CompanyWebsite = ""; string StockAddress = getStockInfo.ReceiveAddress; string StockContact = getStockInfo.ReceiveContact; string StockTel = getStockInfo.ReceiveContactPhoneNumber; string ETATime = poInfo.PurchaseOrderBasicInfo.ETATimeInfo == null || !poInfo.PurchaseOrderBasicInfo.ETATimeInfo.ETATime.HasValue ? string.Empty : poInfo.PurchaseOrderBasicInfo.ETATimeInfo.ETATime.Value.ToString("yyyy-MM-dd HH:mm:ss"); switch (poInfo.PurchaseOrderBasicInfo.StockInfo.SysNo) { //case 50: // if (poInfo.PurchaseOrderBasicInfo.ITStockInfo != null && poInfo.PurchaseOrderBasicInfo.ITStockInfo.SysNo.HasValue) // { // string getITStockInfoName = InventoryBizInteract.GetWarehouseInfoBySysNo(poInfo.PurchaseOrderBasicInfo.ITStockInfo.SysNo.Value).WarehouseName; // getStockName = string.Format("经中转到{0}", getITStockInfoName); // } // break; case 51: //上海 break; case 52: //香港: CompanyAddress = ""; ComapnyTel = ""; break; case 53: //日本: break; //case 54: // //成都: // CompanyAddress = "成都双流县大件路西南航空港新地物流园区(西南民大新校区对面)"; // ComapnyTel = "15982082844"; // break; //case 55: // //武汉: // CompanyAddress = "武汉市东西湖区革新大道(四明路与五环路之间)长江物流园C库10号门"; // ComapnyTel = "13339983123"; // break; //case 59: // //上海市闵行: // CompanyAddress = "上海市闵行区虹梅南路3988号2号库"; // ComapnyTel = "13122693665"; // break; default: break; } variables.Add("StockName", getStockName); variables.Add("ETATime", ETATime); variables.Add("CompanyName", CompanyName); variables.Add("CompanyAddress", CompanyAddress); variables.Add("CompanyTel", ComapnyTel); variables.Add("CompanyWebSite", CompanyWebsite); string getSerialNumber = string.Empty; if (poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.InStocked) { getSerialNumber = CommonBizInteract.GetSystemConfigurationValue("PONumber", poInfo.CompanyCode); if (!string.IsNullOrEmpty(getSerialNumber)) { //TODO:此方法尚未实现: CommonBizInteract.UpdateSystemConfigurationValue("PONumber", (Convert.ToInt32(getSerialNumber) + 1).ToString(), poInfo.CompanyCode); } string getOldSerialNumber = PurchaseOrderProcessor.GetWareHouseReceiptSerialNumber(poInfo.SysNo.Value); //更新PO单当前的流水号: PurchaseOrderProcessor.UpdateWareHouseReceiptSerialNumber(poInfo.SysNo.Value, getSerialNumber); if (!string.IsNullOrEmpty(getOldSerialNumber)) { getSerialNumber = string.Format("{0}({1})", getSerialNumber, getOldSerialNumber); } } else { getSerialNumber = "无"; } variables.Add("PrintSerialNumber", getSerialNumber); variables.Add("PurchaseOrderID", poInfo.PurchaseOrderBasicInfo.PurchaseOrderID); variables.Add("PrintTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); variables.Add("VendorNameAndSysNo", string.Format("{0}({1})", poInfo.VendorInfo.VendorBasicInfo.VendorNameLocal, poInfo.VendorInfo.SysNo.Value)); variables.Add("VendorAddress", poInfo.VendorInfo.VendorBasicInfo.Address); variables.Add("StockAddress", StockAddress); variables.Add("StockContact", StockContact); variables.Add("StockTel", StockTel); string getInStockDate = string.Empty; //if (poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.InStocked) //{ // getInStockDate = poInfo.PurchaseOrderBasicInfo.InTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); //} //if (poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.PartlyInStocked) //{ // getInStockDate = poInfo.PurchaseOrderBasicInfo.InTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); //} if (poInfo.PurchaseOrderBasicInfo.InTime.HasValue) { getInStockDate = poInfo.PurchaseOrderBasicInfo.InTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } variables.Add("InStockDate", getInStockDate); variables.Add("CreateUserName", CommonBizInteract.GetUserFullName(poInfo.PurchaseOrderBasicInfo.CreateUserSysNo.Value.ToString(), true)); variables.Add("PayTypeName", poInfo.VendorInfo.VendorFinanceInfo.PayPeriodType.PayTermsName); variables.Add("VendorContact", poInfo.VendorInfo.VendorBasicInfo.Contact); variables.Add("VendorPhoneAndFax", poInfo.VendorInfo.VendorBasicInfo.Phone + " FAX : " + poInfo.VendorInfo.VendorBasicInfo.Fax); variables.Add("ShipTypeName", poInfo.PurchaseOrderBasicInfo.ShippingType.ShippingTypeName); variables.Add("CurrencyName", poInfo.PurchaseOrderBasicInfo.CurrencyName); variables.Add("Memo", poInfo.PurchaseOrderBasicInfo.MemoInfo.Memo); variables.Add("InStockMemo", poInfo.PurchaseOrderBasicInfo.MemoInfo.InStockMemo); string getTotalAmt = string.Empty; string getTotalReturnPoint = string.Empty; decimal?eimsAmt = 0.00m; decimal?totalInPage = 0; poInfo.POItems.ForEach(x => { totalInPage += x.PurchaseQty * x.OrderPrice; }); poInfo.EIMSInfo.EIMSInfoList.ForEach(x => { eimsAmt += x.EIMSAmt.HasValue ? x.EIMSAmt.Value : 0m; }); if (eimsAmt > 0.00m) { getTotalAmt = poInfo.PurchaseOrderBasicInfo.CurrencySymbol + Convert.ToDecimal(totalInPage - eimsAmt).ToString("f2"); getTotalReturnPoint = "产品总价:" + poInfo.PurchaseOrderBasicInfo.CurrencySymbol + totalInPage.Value.ToString("f2") + " " + "使用返点:" + eimsAmt.Value.ToString("f2"); } else { getTotalAmt = poInfo.PurchaseOrderBasicInfo.CurrencySymbol + totalInPage.Value.ToString("f2"); getTotalReturnPoint = ""; } variables.Add("TotalReturnPoint", getTotalReturnPoint); variables.Add("TotalAmt", getTotalAmt); #endregion #region [构建商品列表信息] bool needShowInStockQty = ((poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.PartlyInStocked || poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.InStocked || poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.SystemClosed || poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.ManualClosed) == true ? true : false); variables.Add("NeedShowInStockQty", needShowInStockQty); int purchaseQtyTotal = 0; int quantityTotal = 0; decimal amountTotal = 0.00m; DataTable tblProductInfo = new DataTable(); tblProductInfo.Columns.Add("ProductID"); tblProductInfo.Columns.Add("ProductMode"); tblProductInfo.Columns.Add("BMCode"); tblProductInfo.Columns.Add("BriefName"); tblProductInfo.Columns.Add("OrderPrice"); tblProductInfo.Columns.Add("PurchaseQty"); tblProductInfo.Columns.Add("InStockQty"); tblProductInfo.Columns.Add("ProductPriceSummary"); tblProductInfo.Columns.Add("NeedShowInStockQtyHtml"); tblProductInfo.Columns.Add("TaxRateType"); poInfo.POItems.ForEach(x => { DataRow dr = tblProductInfo.NewRow(); dr["ProductID"] = x.ProductID + (x.IsVirtualStockProduct == true ? "[虚库商品]" : string.Empty); dr["ProductMode"] = x.ProductMode; dr["BMCode"] = x.BMCode; dr["NeedShowInStockQtyHtml"] = needShowInStockQty; dr["BriefName"] = x.BriefName; dr["OrderPrice"] = poInfo.PurchaseOrderBasicInfo.CurrencySymbol + x.OrderPrice.Value.ToString("f2"); dr["PurchaseQty"] = x.PurchaseQty; dr["InStockQty"] = x.Quantity; dr["ProductPriceSummary"] = (needShowInStockQty ? (x.Quantity.Value * x.OrderPrice.Value).ToString("f2") : (x.PurchaseQty.Value * x.OrderPrice.Value).ToString("f2")); dr["TaxRateType"] = ((int)poInfo.PurchaseOrderBasicInfo.TaxRateType.Value).ToString();//税率 tblProductInfo.Rows.Add(dr); purchaseQtyTotal += x.PurchaseQty.Value; quantityTotal += x.Quantity.Value; amountTotal += (needShowInStockQty ? x.Quantity.Value * x.OrderPrice.Value : x.PurchaseQty.Value * x.OrderPrice.Value); }); tableVariables.Add("tblProductList", tblProductInfo); //总和: variables.Add("PurchaseQtyTotal", purchaseQtyTotal); variables.Add("NeedShowInStockQtySummary", needShowInStockQty); variables.Add("QuantityTotal", needShowInStockQty ? quantityTotal.ToString() : string.Empty); variables.Add("AmountTotal", amountTotal.ToString("f2")); #endregion #region 构建合计信息 Func <PurchaseOrderTaxRate, decimal, decimal> Shuijin = (a, b) => { return(((decimal)(((int)a) / 100.00)) * b / ((decimal)(((int)a) / 100.00) + 1)); }; Func <PurchaseOrderTaxRate, decimal, decimal> Jiakuan = (a, b) => { return(b / ((decimal)(((int)a) / 100.00) + 1)); }; Func <decimal?, decimal> IsNullDecimal = (a) => { if (a != null && a.HasValue) { return(a.Value); } else { return(0m); } }; var taxAndCost = IsNullDecimal(poInfo.PurchaseOrderBasicInfo.TotalActualPrice); var taxAndCostStr = taxAndCost.ToString("C"); var allCost = Jiakuan(poInfo.PurchaseOrderBasicInfo.TaxRateType.Value, taxAndCost); var allCostStr = allCost.ToString("C"); var allTax = Shuijin(poInfo.PurchaseOrderBasicInfo.TaxRateType.Value, taxAndCost); var allTaxStr = allTax.ToString("C"); variables.Add("AllCost", allCostStr); variables.Add("AllTax", allTaxStr); variables.Add("TaxAndCost", taxAndCostStr); #endregion #region [构建配件信息] if (getPrintAccessory == "1") { DataTable dtPOAccessories = PurchaseOrderProcessor.GetPurchaseOrderAccessories(poInfo.SysNo.Value); DataTable tblAccessoriesList = new DataTable(); tblAccessoriesList.Columns.Add("ProductID"); tblAccessoriesList.Columns.Add("AccessoryIDAndName"); tblAccessoriesList.Columns.Add("Qty"); bool needShowAccessoriesList = dtPOAccessories == null || dtPOAccessories.Rows.Count <= 0 ? false : true; variables.Add("NeedShowAccessoriesList", needShowAccessoriesList); if (needShowAccessoriesList) { foreach (DataRow dr in dtPOAccessories.Rows) { DataRow drRow = tblAccessoriesList.NewRow(); drRow["ProductID"] = dr["ProductID"].ToString(); drRow["AccessoryIDAndName"] = dr["AccessoriesID"].ToString() + "]" + dr["AccessoriesIDAndName"].ToString(); drRow["Qty"] = dr["Qty"].ToString(); tblAccessoriesList.Rows.Add(drRow); } } tableVariables.Add("tblAccessoriesList", tblAccessoriesList); } else { variables.Add("NeedShowAccessoriesList", false); } #endregion #region [构建返点信息] decimal eimsAmtTotal = 0.00m; decimal usedThisPlaceAmountTotal = 0.00m; bool needShowEIMSList = poInfo.EIMSInfo == null || poInfo.EIMSInfo.EIMSInfoList.Count <= 0 ? false : true; variables.Add("NeedShowEIMSList", needShowEIMSList); DataTable tblEIMSList = new DataTable(); tblEIMSList.Columns.Add("EIMSNo"); tblEIMSList.Columns.Add("EIMSName"); tblEIMSList.Columns.Add("EIMSTotalAmt"); tblEIMSList.Columns.Add("RelateNotReceivedAmount"); tblEIMSList.Columns.Add("ReceivedAmount"); tblEIMSList.Columns.Add("EIMSAmt"); tblEIMSList.Columns.Add("UseThisPlaceAmount"); tblEIMSList.Columns.Add("LeaveUseThisPlaceAmount"); if (needShowEIMSList) { foreach (var item in poInfo.EIMSInfo.EIMSInfoList) { DataRow dr = tblEIMSList.NewRow(); dr["EIMSNo"] = item.EIMSSysNo; dr["EIMSName"] = item.EIMSName; dr["EIMSTotalAmt"] = item.EIMSTotalAmt.HasValue ? item.EIMSTotalAmt.Value.ToString("f2") : "0.00"; dr["RelateNotReceivedAmount"] = (item.RelateAmount - item.ReceivedAmount).HasValue ? (item.RelateAmount - item.ReceivedAmount).Value.ToString("f2") : "0.00"; dr["ReceivedAmount"] = item.ReceivedAmount.HasValue ? item.ReceivedAmount.Value.ToString("f2") : "0.00"; dr["EIMSAmt"] = item.EIMSAmt.HasValue ? item.EIMSAmt.Value.ToString("f2") : "0.00"; dr["UseThisPlaceAmount"] = (item.EIMSAmt - item.LeftAmt).HasValue ? (item.EIMSAmt - item.LeftAmt).Value.ToString("f2") : "0.00"; dr["LeaveUseThisPlaceAmount"] = (item.EIMSTotalAmt - item.RelateAmount).HasValue ? (item.EIMSTotalAmt - item.RelateAmount).Value.ToString("f2") : "0.00"; tblEIMSList.Rows.Add(dr); eimsAmtTotal += item.EIMSAmt.HasValue ? item.EIMSAmt.Value : 0; usedThisPlaceAmountTotal += Convert.ToDecimal(dr["UseThisPlaceAmount"].ToString()); } } tableVariables.Add("tblEIMSList", tblEIMSList); //总和: variables.Add("EimsAmtTotal", eimsAmtTotal.ToString("f2")); variables.Add("UsedThisPlaceAmountTotal", usedThisPlaceAmountTotal.ToString("f2")); #endregion } }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (sysNo != null && sysNo.Trim() != String.Empty) { sysNo = System.Web.HttpUtility.UrlDecode(sysNo); int requestSysNo = int.TryParse(sysNo, out requestSysNo) ? requestSysNo : int.MinValue; if (requestSysNo > int.MinValue) { AdjustRequestInfo requestInfo = ObjectFactory <AdjustRequestAppService> .Instance.GetAdjustRequestInfoBySysNo(requestSysNo); DataTable dtInvoice = new DataTable(); dtInvoice.Columns.AddRange(new DataColumn[] { new DataColumn("OutStockDate"), new DataColumn("ReceiveName"), new DataColumn("Contact"), new DataColumn("Address"), new DataColumn("Phone"), new DataColumn("Note"), new DataColumn("CustomerID"), new DataColumn("RequestSysNo"), new DataColumn("UpperAmount"), new DataColumn("ProductList", typeof(DataTable)) }); tableVariables.Add("InvoiceList", dtInvoice); DataRow dr = dtInvoice.NewRow(); dr["ReceiveName"] = requestInfo.InvoiceInfo.ReceiveName; dr["Contact"] = requestInfo.InvoiceInfo.ContactAddress; dr["Address"] = requestInfo.InvoiceInfo.ContactShippingAddress; dr["Phone"] = requestInfo.InvoiceInfo.ContactPhoneNumber; dr["CustomerID"] = requestInfo.InvoiceInfo.CustomerID; dr["RequestSysNo"] = requestInfo.SysNo; dr["OutStockDate"] = requestInfo.OutStockDate.HasValue ? requestInfo.OutStockDate.Value.ToString(SOConst.DateFormat) : string.Empty; dr["Note"] = requestInfo.InvoiceInfo.Note; DataTable dtProduct = new DataTable(); dtProduct.Columns.AddRange(new System.Data.DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("Price"), new DataColumn("Quantity"), new DataColumn("Amount") }); decimal totalAmount = 0M; int i = 0; requestInfo.AdjustItemInfoList.ForEach(p => { i++; totalAmount += p.AdjustQuantity * p.AdjustCost; DataRow drProduct = dtProduct.NewRow(); drProduct["ProductID"] = p.AdjustProduct.ProductID; drProduct["ProductName"] = p.AdjustProduct.ProductBasicInfo.ProductBriefTitle; drProduct["Price"] = p.AdjustCost.ToString("N2"); drProduct["Quantity"] = p.AdjustQuantity; drProduct["Amount"] = (p.AdjustQuantity * p.AdjustCost).ToString("N2"); dtProduct.Rows.Add(drProduct); if (i % 6 == 0 || i == requestInfo.AdjustItemInfoList.Count) { dr["ProductList"] = dtProduct; dr["UpperAmount"] = MoneyUtility.GetChineseMoney(totalAmount); dtInvoice.Rows.Add(dr); if (i != requestInfo.AdjustItemInfoList.Count - 1) { dtProduct = dtProduct.Clone(); DataRow tdr = dtInvoice.NewRow(); // dtInvoice.Rows.Add(tdr); tdr["ReceiveName"] = dr["ReceiveName"]; tdr["Contact"] = dr["Contact"]; tdr["Address"] = dr["Address"]; tdr["Phone"] = dr["Phone"]; tdr["CustomerID"] = dr["CustomerID"]; tdr["RequestSysNo"] = dr["RequestSysNo"]; tdr["OutStockDate"] = dr["OutStockDate"]; tdr["Note"] = dr["Note"]; dr = tdr; dtProduct.Rows.Clear(); } } }); } } }
public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); int sysNo = 0; string sysNoString = requestPostData["SysNo"]; bool isNum = int.TryParse(sysNoString, out sysNo); if (isNum && sysNo > 0) { ObjectFactory <RequestAppService> .Instance.PrintLabels(sysNo); CustomerInfo customer; SOBaseInfo soBaseInfo; DeliveryInfo deliveryInfo; string deliveryUserName, businessModel; var requestView = ObjectFactory <RequestAppService> .Instance.LoadWithRegistersBySysNo(sysNo, out customer, out soBaseInfo, out deliveryInfo, out deliveryUserName, out businessModel); if (requestView != null && requestView.Registers != null && requestView.Registers.Count > 0) { List <Register> regiserSysNoBarCodeList = new List <Register>(); requestView.Registers.ForEach(item => { string barCode = Convert.ToBase64String(BarCode39Helper.DrawImage(13, item.SysNo.ToString().PadLeft(12, '0'))); regiserSysNoBarCodeList.Add(new Register { RegisterSysNoPrintCode = barCode }); }); if (requestView.InvoiceType.HasValue && requestView.StockType.HasValue && requestView.ShippingType.HasValue) { if (requestView.InvoiceType != InvoiceType.SELF || requestView.StockType != StockType.SELF || requestView.ShippingType != ECCentral.BizEntity.Invoice.DeliveryType.SELF) { var merchantInfo = ObjectFactory <IPOBizInteract> .Instance.GetVendorInfoSysNo(requestView.MerchantSysNo.Value); string briefName = merchantInfo.VendorBasicInfo.VendorBriefName ?? (merchantInfo.VendorBasicInfo.VendorNameLocal ?? ""); if (briefName.Length > 5) { briefName = briefName.Substring(0, 6); } DataTable t = new DataTable(); t.Columns.Add("RegisterSysNoPrintCode"); regiserSysNoBarCodeList.ForEach(p => { t.Rows.Add(p.RegisterSysNoPrintCode); }); variables.Add("RequestID", requestView.RequestID); variables.Add("MerchantName", briefName); tableVariables.Add("RegisterView", t); } } } } }
/// <summary> /// 发送模板邮件 /// </summary> /// <param name="toAddress">收件人地址(多个地址用;隔开),默认先加载模板中配置的ToAddress</param> /// <param name="ccAddress">抄送人地址(多个地址用;隔开)</param> /// <param name="bccAddress">暗送人地址(多个地址用;隔开)</param> /// <param name="templateID">模板ID</param> /// <param name="keyValueVariables">Key-Values变量</param> /// <param name="keyTableVariables">Key-Tables变量</param> /// <param name="isInternalMail">是否为内部邮件</param> /// <param name="isAsyncMail">是否为异步发送邮件</param> /// <param name="languageCode">语言编码</param> public static void SendEmailByTemplate(string toAddress, string ccAddress, string bccAddress, string templateID, KeyValueVariables keyValueVariables, KeyTableVariables keyTableVariables, bool isInternalMail, bool isAsyncMail, string languageCode) { if (!string.IsNullOrEmpty(templateID)) { MailMessage msg = new MailMessage() { ToName = toAddress, CCName = ccAddress, BCCName = bccAddress }; EmailTemplateHelper.BuildEmailBodyByTemplate(msg, templateID, keyValueVariables, keyTableVariables, languageCode); CheckMailEntity(msg); ObjectFactory <IEmailSend> .Instance.SendMail(msg, isAsyncMail, isInternalMail); } }
public static MailTemplate BuildMailTemplate(MailTemplate template, KeyValueVariables keyValues, KeyTableVariables keyTables) { MailTemplate tem = MailConfig.BuildMailTemplate(template, keyValues, keyTables); return(tem); }
/// <summary> /// 发送模板邮件 /// </summary> /// <param name="toAddress">收件人地址(多个地址用;隔开),默认先加载模板中配置的ToAddress</param> /// <param name="templateID">模板ID</param> /// <param name="keyValueVariables">Key-Values变量</param> /// <param name="keyTableVariables">Key-Tables变量</param> /// <param name="languageCode">语言编码</param> public static void SendEmailByTemplate(string toAddress, string templateID, KeyValueVariables keyValueVariables, KeyTableVariables keyTableVariables, string languageCode) { SendEmailByTemplate(toAddress, string.Empty, string.Empty, templateID, keyValueVariables, keyTableVariables, false, true, languageCode); }
public void BuildData(NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); //if (requestPostData != null) //{ // variables.Add("TotalCount", HttpUtility.UrlDecode("TotalCount")); //} int count; DataTable dt = new DataTable(); dt.Columns.Add("SysNo"); dt.Columns.Add("TradeInId"); dt.Columns.Add("SoSysNo"); dt.Columns.Add("CustomerSysNo"); dt.Columns.Add("CustomerName"); dt.Columns.Add("ReceiveAddress"); dt.Columns.Add("receivePhone"); dt.Columns.Add("Licence"); dt.Columns.Add("Rebate"); dt.Columns.Add("ReviseRebate"); dt.Columns.Add("BankName"); dt.Columns.Add("BranchBankName"); dt.Columns.Add("BankAccount"); dt.Columns.Add("Status"); dt.Columns.Add("InUser"); dt.Columns.Add("InDateStr"); dt.Columns.Add("ConfirmUser"); dt.Columns.Add("ConfirmDateStr"); if (int.TryParse(requestPostData["TotalCount"], out count)) { DataRow row; for (int i = 0; i < count; i++) { row = dt.NewRow(); row["SysNo"] = HttpUtility.UrlDecode(requestPostData["SysNo" + i]); row["TradeInId"] = HttpUtility.UrlDecode(requestPostData["TradeInId" + i]); row["SoSysNo"] = HttpUtility.UrlDecode(requestPostData["SoSysNo" + i]); row["CustomerSysNo"] = HttpUtility.UrlDecode(requestPostData["CustomerSysNo" + i]); row["CustomerName"] = HttpUtility.UrlDecode(requestPostData["CustomerName" + i]); row["ReceiveAddress"] = HttpUtility.UrlDecode(requestPostData["ReceiveAddress" + i]); row["receivePhone"] = HttpUtility.UrlDecode(requestPostData["receivePhone" + i]); row["Licence"] = HttpUtility.UrlDecode(requestPostData["Licence" + i]); row["Rebate"] = HttpUtility.UrlDecode(requestPostData["Rebate" + i]); row["ReviseRebate"] = HttpUtility.UrlDecode(requestPostData["ReviseRebate" + i]); row["BankName"] = HttpUtility.UrlDecode(requestPostData["BankName" + i]); row["BranchBankName"] = HttpUtility.UrlDecode(requestPostData["BranchBankName" + i]); row["BankAccount"] = HttpUtility.UrlDecode(requestPostData["BankAccount" + i]); row["Status"] = HttpUtility.UrlDecode(requestPostData["Status" + i]); row["InUser"] = HttpUtility.UrlDecode(requestPostData["InUser" + i]); row["InDateStr"] = HttpUtility.UrlDecode(requestPostData["InDateStr" + i]); row["ConfirmUser"] = HttpUtility.UrlDecode(requestPostData["ConfirmUser" + i]); row["ConfirmDateStr"] = HttpUtility.UrlDecode(requestPostData["ConfirmDateStr" + i]); dt.Rows.Add(row); } } tableVariables.Add("OldChangeNewList", dt); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (sysNo != null && sysNo.Trim() != String.Empty) { sysNo = System.Web.HttpUtility.UrlDecode(sysNo); int requestSysNo = int.TryParse(sysNo, out requestSysNo) ? requestSysNo : int.MinValue; if (requestSysNo > int.MinValue) { PriceChangeMaster requestInfo = ObjectFactory <PriceChangeAppService> .Instance.GetPriceChangeBySysNo(requestSysNo); if (requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.SalePrice) { variables.Add("PrintTitle", "销售变价单"); } else if (requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.PurchasePrice) { variables.Add("PrintTitle", "采购变价单"); } variables.Add("SysNo", requestInfo.SysNo.ToString().Trim().PadLeft(8, '0')); variables.Add("RealBeginDate", requestInfo.RealBeginDate.HasValue ? requestInfo.RealBeginDate.Value.ToLongDateString().Trim() : string.Empty); variables.Add("BeginDate", requestInfo.BeginDate.HasValue ? requestInfo.BeginDate.Value.ToLongDateString().Trim() : string.Empty); variables.Add("EndDate", requestInfo.EndDate.HasValue ? requestInfo.EndDate.Value.ToLongDateString().Trim() : string.Empty); variables.Add("BillInDate", DateTime.Now.ToLongDateString()); variables.Add("IsPurchasePrice", requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.PurchasePrice); variables.Add("IsSalePrice", requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.SalePrice); DataTable dtProduct = new DataTable(); dtProduct.Columns.AddRange(new System.Data.DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("OldPrice"), new DataColumn("NewPrice"), new DataColumn("DiffPrice"), new DataColumn("OldShowPrice"), new DataColumn("NewShowPrice"), new DataColumn("OldInstockPrice"), new DataColumn("NewInstockPrice"), new DataColumn("DiffInstockPrice"), new DataColumn("IsPurchasePrice"), new DataColumn("IsSalePrice") }); if (requestInfo.ItemList != null) { requestInfo.ItemList.ForEach(p => { DataRow drProduct = dtProduct.NewRow(); drProduct["ProductID"] = p.ProductID; drProduct["ProductName"] = p.ProductName.Trim(); drProduct["OldPrice"] = p.OldPrice.ToString("N2"); drProduct["NewPrice"] = p.NewPrice == 0 ? "---" : p.NewPrice.ToString("N2"); drProduct["DiffPrice"] = (p.NewPrice - p.OldPrice).ToString("N2"); drProduct["OldShowPrice"] = p.OldShowPrice.ToString("N2"); drProduct["NewShowPrice"] = p.NewShowPrice == 0 ? "---" : p.NewShowPrice.ToString("N2"); drProduct["OldInstockPrice"] = p.OldInstockPrice.ToString("N2"); drProduct["NewInstockPrice"] = p.NewInstockPrice == 0 ? "---" : p.NewInstockPrice.ToString("N2"); drProduct["DiffInstockPrice"] = (p.NewInstockPrice - p.OldInstockPrice).ToString("N2"); drProduct["IsPurchasePrice"] = requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.PurchasePrice; drProduct["IsSalePrice"] = requestInfo.PriceType == BizEntity.Invoice.RequestPriceType.SalePrice; dtProduct.Rows.Add(drProduct); }); } tableVariables.Add("ProductList", dtProduct); } } }