Пример #1
0
        /// <summary>
        /// 发送投诉邮件通知
        /// </summary>
        /// <param name="complainSysNo">投诉单号</param>
        public void SendMain(int complainSysNo)
        {
            var info = GetInfo(complainSysNo);

            //更新操作人
            info.ProcessInfo.OperatorSysNo = ServiceContext.Current.UserSysNo;
            m_da.UpdateCompainOperatorUser(info.ProcessInfo);

            //发送邮件
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("Title", info.ComplaintCotentInfo.Subject);
            vars.Add("SysNo", info.ComplaintCotentInfo.SysNo);
            vars.Add("Content", info.ProcessInfo.ReplyContent.Replace(Environment.NewLine, "<BR/>"));

            CustomerInfo customerInfo = null;

            if (info.ComplaintCotentInfo.CustomerSysNo.HasValue)
            {
                customerInfo = ExternalDomainBroker.GetCustomerInfo(info.ComplaintCotentInfo.CustomerSysNo.Value);
            }

            if (customerInfo != null)
            {
                ExternalDomainBroker.SendExternalEmail(customerInfo.BasicInfo.Email, "SO_ReplyComplainEmail", vars, customerInfo.BasicInfo.FavoriteLanguageCode);
            }
            //写入日志
            AddHistory(info, ReplyOperatorType.SendMain);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        public void ElectronicSOPriceNotExists(SOInfo soInfo)
        {
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.Add("SOSysNo", soInfo.SysNo);
            keyValueVariables.Add("StockSysNo", soInfo.Items[0].StockSysNo);
            ExternalDomainBroker.SendInternalEmail("Invoice_Generate_Error", keyValueVariables);
        }
Пример #4
0
        /// <summary>
        /// 发送内部邮件
        /// </summary>
        /// <param name="emailList">发送地址列表</param>
        /// <param name="title">标题可以不填</param>
        /// <param name="content">发送内容</param>
        /// <returns>返回成功发送列表</returns>
        public List <string> SendInternalEmail(List <string> emailList, string title, string content, string language)
        {
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("Title", title);
            vars.Add("Content", content);
            ExternalDomainBroker.SendExternalEmail(string.Join(";", emailList), "SO_InternalEmail", vars, language);
            return(emailList);
        }
Пример #5
0
        private static void SendMail(string mailSubject, int computerConfigSysNo, string operationNote, string companyCode, int createUserSysNo)
        {
            var userInfo = ExternalDomainBroker.GetUserInfoBySysNo(createUserSysNo);
            var param    = new KeyValueVariables();

            param.Add("Subject", mailSubject);
            param.Add("LogSysNo", computerConfigSysNo);
            param.Add("OperationNote", operationNote);
            param.Add("CompanyCode", companyCode);
            ECCentral.Service.Utility.EmailHelper.SendEmailByTemplate(userInfo.EmailAddress, "MKT_ComputerConfig_Edit", param, true);
        }
Пример #6
0
        /// <summary>
        /// 发送邮件通知PM Combo的因商品调价,状态已改
        /// </summary>
        /// <param name="combo"></param>
        protected virtual void SendMail(ComboInfo combo)
        {
            UserInfo          user = ExternalDomainBroker.GetUserInfoBySysNo(combo.CreateUserSysNo.Value);
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.Add("ComboSysNo", combo.SysNo.Value.ToString());
            keyValueVariables.Add("ComboName", combo.Name.Content);
            keyValueVariables.Add("PMUser", user.UserDisplayName);
            EmailHelper.SendEmailByTemplate(user.EmailAddress,
                                            "MKT_Combo_ChangeStatusForChangeProductPrice", keyValueVariables, true);
        }
Пример #7
0
        public void Test_GiftCardMailTest()
        {
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("$$CustomerID", "Poseidon.Y.Tong");
            vars.Add("$$TotalValue", "230.00");
            vars.Add("$$ExpireDate", DateTime.Now.AddYears(2).ToString("yyyy-MM-dd"));
            vars.Add("$$LinkToMyAccount", "http://www.newegg.com.cn/Customer/MyGiftCard.aspx");

            // var html = ObjectFactory<IEmailBizInteract>.Instance.GetMailTemplatesHtml("Refund_GiftCard_Notify", vars, null, "zh-CN");
        }
Пример #8
0
        private void SendNotifyMail(string customerEmail, string productName, string customerId)
        {
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("GiftProductName", productName);
            vars.Add("Year", DateTime.Now.Year);
            if (string.IsNullOrEmpty(customerEmail))
            {
                throw new BizException("顾客帐号:" + customerId + " : 邮件收件人不能为空!");
            }
            ECCentral.Service.Utility.EmailHelper.SendEmailByTemplate(customerEmail, "CustomerGift_Notify", vars, false);
        }
Пример #9
0
 public virtual bool SendEmail(string toEmail, string title, string content, string companyCode)
 {
     try
     {
         var param = new KeyValueVariables();
         param.Add("Content", content);
         param.Add("Title", title);
         ECCentral.Service.Utility.EmailHelper.SendEmailByTemplate(toEmail, "Manual_Send", param, false);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Пример #10
0
        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);
        }
        private void SendEmailValid(string customerID, string customerEmail, string productName)
        {
            if (string.IsNullOrEmpty(customerEmail))
            {
                return;
            }

            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("ProductName", productName);
            vars.Add("CustomerID", customerID);
            vars.Add("Year", DateTime.Now.Year);
            vars.Add("Month", DateTime.Now.Month);
            vars.Add("Day", DateTime.Now.Day);
            EmailHelper.SendEmailByTemplate(customerEmail, "ProductPriceCompare_AuditPass", vars, false);
        }
Пример #12
0
        private void SendVoidMail(string customerEmail)
        {
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("Year", DateTime.Now.Year);
            ECCentral.Service.Utility.EmailHelper.SendEmailByTemplate(customerEmail, "CustomerGift_Void", vars, false);
        }
Пример #13
0
        /// <summary>
        /// 创建一张发票
        /// </summary>
        /// <param name="invoice">发票信息,包含主信息和Transaction信息</param>
        /// <returns></returns>
        public virtual InvoiceInfo Create(InvoiceInfo invoice)
        {
            try
            {
                return(ObjectFactory <IInvoiceDA> .Instance.Create(invoice));
            }
            catch (System.Exception ex)
            {
                //发送内部邮件通知异常信息
                KeyValueVariables replaceVariables = new KeyValueVariables();
                replaceVariables.Add("SO", invoice.MasterInfo.SONumber);
                replaceVariables.Add("Stock", invoice.MasterInfo.StockSysNo);
                EmailHelper.SendEmailByTemplate("", "Invoice_CreateError_Notify", replaceVariables, true);

                throw ex;
            }
        }
Пример #14
0
        public void ActivateElectronicSendMailToCustomer(SOInfo soInfo)
        {
            try
            {
                ECCentral.BizEntity.Customer.CustomerBasicInfo customerInfo = GetCustomerBaseInfo(soInfo.BaseInfo.CustomerSysNo.Value);
                string customerEmail = customerInfo.Email == null ? null : customerInfo.Email.Trim();

                if (customerEmail == null)
                {
                    return;
                }
                KeyValueVariables keyValueVariables = new KeyValueVariables();
                keyValueVariables.Add("CustomerID", customerInfo.CustomerID);
                keyValueVariables.Add("Quantity", soInfo.Items[0].Quantity);
                keyValueVariables.Add("TotalAmount", (soInfo.Items[0].Quantity.Value * soInfo.Items[0].OriginalPrice.Value).ToString(SOConst.DecimalFormat));
                keyValueVariables.Add("ExpireYear", DateTime.Now.AddYears(2).Year);
                keyValueVariables.Add("ExpireMonth", DateTime.Now.Month);
                keyValueVariables.Add("ExpireDay", DateTime.Now.Day);
                keyValueVariables.Add("NowYear", DateTime.Now.Year);
                ExternalDomainBroker.SendExternalEmail(customerEmail, "SO_ActivateElectronicGiftCard", keyValueVariables, customerInfo.FavoriteLanguageCode);
            }
            catch (Exception ex)
            {
                ExceptionHelper.HandleException(ex);
            }
        }
Пример #15
0
 public void RecommendCustomerAddExperienceSendMail(ECCentral.BizEntity.Customer.CustomerBasicInfo recommendCustomerInfo, string newCustomerID, decimal experience)
 {
     try
     {
         string customerEmail = recommendCustomerInfo.Email == null ? null : recommendCustomerInfo.Email.Trim();
         if (customerEmail == null)
         {
             return;
         }
         KeyValueVariables keyValueVariables = new KeyValueVariables();
         keyValueVariables.Add("RmdCustomerID", recommendCustomerInfo.CustomerID);
         keyValueVariables.Add("NewCustomerID", newCustomerID);
         keyValueVariables.Add("Experience", experience);
         ExternalDomainBroker.SendExternalEmail(customerEmail, "SO_ShipOut_UserAddExperience", keyValueVariables, recommendCustomerInfo.FavoriteLanguageCode);
     }
     catch (Exception ex)
     {
         ExceptionHelper.HandleException(ex);
     }
 }
Пример #16
0
        private void SendCreateEmail(string email, string requestId)
        {
            if (StringUtility.IsNullOrEmpty(email) || StringUtility.IsNullOrEmpty(requestId))
            {
                return;
            }
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("RequestID", requestId);

            EmailHelper.SendEmailByTemplate(email, "RMARequest_Create", vars);
        }
Пример #17
0
        /// <summary>
        /// 退款转礼品卡成功则像客户发送一封邮件
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="giftCardResultCode"></param>
        protected virtual void SendGiftCardEmail(SOIncomeRefundInfo entity, string giftCardResultCode)
        {
            int code = 0;
            if (int.TryParse(giftCardResultCode, out code) && code == 0)
            {
                var customer = ExternalDomainBroker.GetCustomerBasicInfo(entity.CustomerSysNo.Value);

                KeyValueVariables vars = new KeyValueVariables();
                vars.Add("CustomerID", customer.CustomerID);
                vars.Add("TotalValue", entity.RefundCashAmt.Value);
                vars.Add("ExpireYear", DateTime.Now.AddYears(2).Year);
                vars.Add("ExpireMonth", DateTime.Now.Month);
                vars.Add("ExpireDay", DateTime.Now.Day);
                vars.Add("Year", DateTime.Now.Year);
                EmailHelper.SendEmailByTemplate(customer.Email, "Refund_GiftCard_Notify", vars, true, customer.FavoriteLanguageCode);
            }
            else
            {
                //记录操作日志
                ObjectFactory<ICommonBizInteract>.Instance.CreateOperationLog(
                    GetMessageString("SOIncomeRefund_Log_GiftCardRefundFailed", entity.SOSysNo.Value)
                    , BizLogType.AuditRefund_Update
                    , entity.SysNo.Value
                    , entity.CompanyCode);

                ThrowBizException("SOIncomeRefund_Log_GiftCardRefundFailed", entity.SOSysNo.Value);
            }
        }
Пример #18
0
        /// <summary>
        /// 财务拒绝审核应付记录,通知归属的PM
        /// </summary>
        /// <param name="pmSysNo"></param>
        /// <param name="payableInfo"></param>
        private void SendMailAfterRefuseAuditFinancePay(int pmSysNo, PayableInfo payableInfo)
        {
            string mailAddress = GetPMAndTLMailMailAddress(pmSysNo);

            //拒绝操作记日志
            ObjectFactory <ICommonBizInteract> .Instance.CreateOperationLog(
                GetMessageString("Payable_Log_RefuseAuditFinancePay", mailAddress)
                , BizLogType.Invoice_Payable_RefuseAuditFinancePay
                , payableInfo.SysNo.Value
                , payableInfo.CompanyCode);

            //邮件地址不为空时发邮件通知
            if (!string.IsNullOrEmpty(mailAddress))
            {
                KeyValueVariables replaceVariables = new KeyValueVariables();
                replaceVariables.Add("OrderSysNo", payableInfo.OrderSysNo);
                replaceVariables.Add("BatchNumber", payableInfo.BatchNumber);
                replaceVariables.Add("OrderType", payableInfo.OrderType.ToDisplayText());
                replaceVariables.Add("OrderAmt", payableInfo.OrderAmt.Value.ToString(InvoiceConst.StringFormat.DecimalFormat));
                replaceVariables.Add("UserSysNo", ServiceContext.Current.UserSysNo);
                EmailHelper.SendEmailByTemplate(mailAddress, "Payable_RefuseAudit_Notify", replaceVariables, true);
            }
        }
Пример #19
0
        public void BuyGrifCardMailMethod()
        {
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.Add("CustomerID", "Geeker");
            keyValueVariables.Add("Quantity", 2);
            keyValueVariables.Add("TotalAmount", 300);
            keyValueVariables.Add("ExpireYear", DateTime.Now.AddYears(2).Year);
            keyValueVariables.Add("ExpireMonth", DateTime.Now.Month);
            keyValueVariables.Add("ExpireDay", DateTime.Now.Day);
            keyValueVariables.Add("NowYear", DateTime.Now.Year);
            EmailHelper.SendEmailByTemplate("*****@*****.**", "SO_ActivateElectronicGiftCard", keyValueVariables, null, "zh-CN");
        }
Пример #20
0
        /// <summary>
        /// 替换邮件模板内连接追踪代码
        /// </summary>
        /// <param name="emailType"></param>
        private static void ReplaceCM_MMC(string emaileTemplateID, KeyValueVariables keyValueVariables)
        {
            string now       = DateTime.Now.ToString("yyyyMMdd");
            string homePage  = string.Format("?cm_mmc=emc-_-tran{0}-_-homepage", now);
            string countDown = string.Format("?cm_mmc=emc-_-tran{0}-_-countdown", now);
            string mobile    = string.Format("?cm_mmc=emc-_-tran{0}-_-mobile", now);

            switch (emaileTemplateID)
            {
            case "SO_Created":
            case "SO_Audit_Passed":
            case "SO_OutStock":
            case "SO_Splited":
                break;

            default:
                homePage = countDown = mobile = string.Empty;
                break;
            }

            keyValueVariables.Add("CM_MMC_HomePage", homePage);
            keyValueVariables.Add("CM_MMC_CountDown", countDown);
            keyValueVariables.Add("CM_MMC_Mobile", mobile);
        }
Пример #21
0
        public void GiftCardMailMethod()
        {
            KeyValueVariables vars = new KeyValueVariables();

            vars.Add("CustomerID", "geeker");
            vars.Add("TotalValue", 500);
            vars.Add("ExpireYear", DateTime.Now.AddYears(2).Year);
            vars.Add("ExpireMonth", DateTime.Now.Month);
            vars.Add("ExpireDay", DateTime.Now.Day);
            vars.Add("Year", DateTime.Now.Year);
            EmailHelper.SendEmailByTemplate("*****@*****.**", "Refund_GiftCard_Notify", vars, null, "zh-CN");
        }
Пример #22
0
        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());
                }
            }
        }
Пример #23
0
        protected virtual void ChangeResponsibleUserName(TrackingInfo entity, TrackingInfo trackingInfo, string emailAddr)
        {
            if (string.Compare(trackingInfo.ResponsibleUserName, entity.ResponsibleUserName, true) != 0)
            {
                string fromEmail      = string.Empty;   //邮件发送人
                string emailAddress   = string.Empty;   //收件人
                string ccEmailAddress = string.Empty;   //抄送人 = 发送人
                string orgEmail       = string.Empty;   //原责任人邮件地址

                List <string> emailAddrList    = m_TrackInfoDA.GetEmailAddressByResponsibleUserName(entity.ResponsibleUserName);
                List <string> orgEmailAddrList = m_TrackInfoDA.GetEmailAddressByResponsibleUserName(trackingInfo.ResponsibleUserName);

                //从逾期未付款修改责任人
                if (string.IsNullOrEmpty(emailAddr))
                {
                    emailAddress = string.Join(";", this.CheckEmailAddress(emailAddrList));
                }
                else//从责任人配置修改责任人
                {
                    emailAddress = emailAddr;
                }

                orgEmail       = string.Join(";", this.CheckEmailAddress(orgEmailAddrList));
                fromEmail      = m_TrackInfoDA.GetEmailAddressByUserSysNo(ServiceContext.Current.UserSysNo);
                ccEmailAddress = string.Join(";", this.CheckEmailAddress(new List <string>()
                {
                    fromEmail
                }));
                //记录操作日志
                ObjectFactory <ICommonBizInteract> .Instance.CreateOperationLog(
                    GetMessageString("TrackingInfo_Log_ChangeResponsibleUserName", ServiceContext.Current.UserSysNo, entity.SysNo, entity.Note)
                    , BizLogType.Invoice_TrackingInfo_ChangeResponsibleUserName
                    , entity.SysNo.Value
                    , entity.CompanyCode);

                KeyValueVariables replaceVariables = new KeyValueVariables();
                replaceVariables.Add("Year", DateTime.Now.Year);
                replaceVariables.Add("Month", DateTime.Now.Month);
                replaceVariables.Add("Day", DateTime.Now.Day);
                replaceVariables.Add("UserSysNo", ServiceContext.Current.UserSysNo);
                replaceVariables.Add("OrderSysNo", entity.OrderSysNo);
                replaceVariables.Add("FromEmail", fromEmail);
                EmailHelper.SendEmailByTemplate(emailAddress, "ResponsibleUser_Change_Notify", replaceVariables, true);
            }
        }
Пример #24
0
        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");
            }
        }
Пример #25
0
        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));
        }
Пример #26
0
        public override void OnSuccess(MethodExecutionEventArgs args)
        {
            int    requestsysno            = 0;
            string ptptdUser               = ConfigurationManager.AppSettings["PTPTDUser"];
            string subject                 = string.Empty;
            ProductPriceRequestInfo entity = new ProductPriceRequestInfo();

            if (EmailType == SendEmailType.ApprovePriceRequest)
            {
                object[] objs = args.GetReadOnlyArgumentArray();
                entity = objs[0] as ProductPriceRequestInfo;

                requestsysno = entity.SysNo.Value;

                if (entity.RequestStatus == ProductPriceRequestStatus.Deny)//拒绝时的邮件发送
                {
                    subject = ResouceManager.GetMessageString("IM.Product", "AuditRejected");
                }
                else
                {
                    subject = ResouceManager.GetMessageString("IM.Product", "AuditPassed");
                }
            }
            else if (EmailType == SendEmailType.CancelPriceRequest)//撤销时的邮件发送
            {
                object[] objs = args.GetReadOnlyArgumentArray();
                entity = objs[0] as ProductPriceRequestInfo;

                requestsysno = entity.SysNo.Value;

                subject = ResouceManager.GetMessageString("IM.Product", "CancelAudit");
            }
            else if (EmailType == SendEmailType.CreatePriceRequest)
            {
                object[] objs = args.GetReadOnlyArgumentArray();
                entity = objs[1] as ProductPriceRequestInfo;

                requestsysno = entity.SysNo.Value;

                subject = ResouceManager.GetMessageString("IM.Product", "RequestAudit");
            }



            ProductPriceRequestInfo requestentity = ObjectFactory <ProductPriceRequestProcessor> .Instance.GetProductPriceRequestInfoBySysNo(requestsysno);


            string toAddress = string.Format("{0};{1}", entity.PMUserEmailAddress, entity.CurrentUserEmailAddress);

            if (!string.IsNullOrEmpty(entity.BackupPMUserEmailAddress))
            {
                toAddress = string.Format("{0};{1}", toAddress, entity.BackupPMUserEmailAddress);
            }
            if (!string.IsNullOrEmpty(ptptdUser))
            {
                toAddress = string.Format("{0};{1}", toAddress, ptptdUser);
            }

            string ccmail     = GetCCEmail(requestentity);
            string updatetime = string.Empty;

            if (requestentity.LastUpdateTime.HasValue)
            {
                updatetime = requestentity.LastUpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
            }

            //参数设置
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.AddKeyValue("Subject", subject);
            keyValueVariables.Add("ProductSysNo", Product.SysNo);
            keyValueVariables.Add("ProductName", Product.ProductName);
            keyValueVariables.Add("UpdateTime", updatetime);
            keyValueVariables.Add("SysNo", requestentity.SysNo);
            keyValueVariables.Add("ProductID", Product.ProductID);
            keyValueVariables.Add("BasicPrice", requestentity.OldPrice.BasicPrice);
            keyValueVariables.Add("BasicPriceNew", requestentity.BasicPrice);
            keyValueVariables.Add("UnitCost", requestentity.UnitCost);
            keyValueVariables.Add("CurrentPrice", requestentity.OldPrice.CurrentPrice);
            keyValueVariables.Add("CurrentPriceNew", requestentity.CurrentPrice);
            keyValueVariables.Add("Discount", requestentity.DiscountAmount);
            keyValueVariables.Add("CashRebate", requestentity.OldPrice.CashRebate);
            keyValueVariables.Add("CashRebateNew", requestentity.CashRebate);
            keyValueVariables.Add("Point", requestentity.OldPrice.Point);
            keyValueVariables.Add("PointNew", requestentity.Point);
            keyValueVariables.Add("ProductPayType", requestentity.OldPrice.PayType.ToString());
            keyValueVariables.Add("MaxPerOrder", requestentity.MinCountPerOrder);
            keyValueVariables.Add("MinMargin", requestentity.OldPrice.Margin);
            keyValueVariables.Add("MinMarginCurrent", requestentity.Margin);
            keyValueVariables.Add("Apply", requestentity.CreateUser.UserName);
            keyValueVariables.Add("PMMemo", requestentity.PMMemo);
            keyValueVariables.Add("TLMemo", requestentity.TLMemo);


            EmailHelper.SendEmailByTemplate(toAddress, ccmail, "", "IM_Product_ChangePrice", keyValueVariables, null, true, true);
            base.OnSuccess(args);
        }
Пример #27
0
        /// <summary>
        /// 发送订单拦截邮件
        /// </summary>
        /// <param name="info"></param>
        public virtual void SendSOOrderInterceptEmail(SOInfo info, string Language)
        {
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.Add("SOSysNo", info.BaseInfo.SysNo.Value);
            keyValueVariables.Add("CustomerSysNo", info.BaseInfo.CustomerSysNo);
            keyValueVariables.Add("OrderDate", info.BaseInfo.CreateTime);
            SOStatusChangeInfo statusAuditInfo = info.StatusChangeInfoList.Find(x => { return(x.Status == SOStatus.WaitingOutStock); });

            if (statusAuditInfo == null)
            {
                keyValueVariables.Add("AuditTime", DBNull.Value);
            }
            else
            {
                keyValueVariables.Add("AuditTime", statusAuditInfo.ChangeTime.Value.ToString());
            }
            SOStatusChangeInfo statusOutStockInfo = info.StatusChangeInfoList.Find(x => { return(x.Status == SOStatus.OutStock); });

            if (statusOutStockInfo == null)
            {
                keyValueVariables.Add("OutStockTime", DBNull.Value);
            }
            else
            {
                keyValueVariables.Add("OutStockTime", statusOutStockInfo.ChangeTime.Value.ToString());
            }
            keyValueVariables.Add("SOTotalAmount", info.BaseInfo.SOTotalAmount);
            keyValueVariables.Add("PayType", info.BaseInfo.PayTypeSysNo);
            keyValueVariables.Add("UserSysNo", ServiceContext.Current.UserSysNo);
            List <string> emailList   = new List <string>();
            List <string> emailCCList = new List <string>();

            if (info.SOInterceptInfoList != null && info.SOInterceptInfoList.Count == 1)
            {
                foreach (var item in info.SOInterceptInfoList)
                {
                    if (!string.IsNullOrEmpty(item.EmailAddress))
                    {
                        emailList.Add(item.EmailAddress);
                    }
                    if (!string.IsNullOrEmpty(item.CCEmailAddress))
                    {
                        emailCCList.Add(item.CCEmailAddress);
                    }
                }
            }
            else if (info.SOInterceptInfoList != null && info.SOInterceptInfoList.Count == 2)
            {
                if (info.SOInterceptInfoList[0].EmailAddress != info.SOInterceptInfoList[1].EmailAddress ||
                    info.SOInterceptInfoList[0].CCEmailAddress != info.SOInterceptInfoList[1].CCEmailAddress)
                {
                    emailList.Add(info.SOInterceptInfoList[1].EmailAddress);
                    emailCCList.Add(info.SOInterceptInfoList[1].CCEmailAddress);
                }
            }
            else if (info.SOInterceptInfoList != null && info.SOInterceptInfoList.Count > 2)
            {
                if (info.SOInterceptInfoList[0].EmailAddress != info.SOInterceptInfoList[info.SOInterceptInfoList.Count - 1].EmailAddress ||
                    info.SOInterceptInfoList[0].CCEmailAddress != info.SOInterceptInfoList[info.SOInterceptInfoList.Count - 1].CCEmailAddress)
                {
                    emailList.Add(info.SOInterceptInfoList[info.SOInterceptInfoList.Count - 1].EmailAddress);
                    emailCCList.Add(info.SOInterceptInfoList[info.SOInterceptInfoList.Count - 1].CCEmailAddress);
                }
                else
                {
                    foreach (var item in info.SOInterceptInfoList)
                    {
                        emailList.Add(item.EmailAddress);
                        emailCCList.Add(item.CCEmailAddress);
                    }
                }
            }
            if (emailList != null && emailList.Count > 0)
            {
                ExternalDomainBroker.SendInternalEmail(emailList.Join(";"), emailCCList.Join(";"), "SO_OrderIntercept", keyValueVariables, Language);
            }
        }
Пример #28
0
        /// <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);
        }
Пример #29
0
        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)
                {
                    ShiftRequestInfo requestInfo = ObjectFactory <ShiftRequestAppService> .Instance.GetShiftRequestInfoBySysNo(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("OutStock", requestInfo.SourceStock == null ? "" : requestInfo.SourceStock.StockName);
                    variables.Add("InStock", requestInfo.TargetStock == null ? "" : requestInfo.TargetStock.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("InStockUser", requestInfo.InStockUser.UserDisplayName);
                    variables.Add("InStockDate", requestInfo.InStockDate.HasValue ? requestInfo.InStockDate.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("Quantity"),
                    });
                    requestInfo.ShiftItemInfoList.ForEach(p =>
                    {
                        DataRow drProduct        = dtProduct.NewRow();
                        drProduct["ProductID"]   = p.ShiftProduct.ProductID;
                        drProduct["ProductName"] = p.ShiftProduct.ProductBasicInfo.ProductBriefTitle;
                        ;
                        drProduct["Quantity"] = p.ShiftQuantity;
                        dtProduct.Rows.Add(drProduct);
                    });
                    tableVariables.Add("ProductList", dtProduct);
                }
            }
        }
Пример #30
0
        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)
                {
                    ConvertRequestInfo requestInfo = ObjectFactory <ConvertRequestAppService> .Instance.GetConvertRequestInfoBySysNo(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() : string.Empty);
                    variables.Add("AuditUser", requestInfo.AuditUser.UserDisplayName);
                    variables.Add("AuditDate", requestInfo.AuditDate.HasValue ? requestInfo.AuditDate.Value.ToString() : 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() : string.Empty);
                    variables.Add("Note", requestInfo.Note);

                    DataTable dtSourceProduct = new DataTable();
                    dtSourceProduct.Columns.AddRange(new System.Data.DataColumn[]
                    {
                        new DataColumn("ProductID"),
                        new DataColumn("ProductName"),
                        new DataColumn("Price"),
                        new DataColumn("Quantity"),
                        new DataColumn("Amount")
                    });

                    DataTable dtTargetProduct = dtSourceProduct.Clone();
                    decimal   sourceTotalAmount = 0M, targetTotalAmount = 0M;
                    requestInfo.ConvertItemInfoList.ForEach(p =>
                    {
                        DataRow drProduct        = p.ConvertType == ConvertProductType.Source ? dtSourceProduct.NewRow() : dtTargetProduct.NewRow();
                        drProduct["ProductID"]   = p.ConvertProduct.ProductID;
                        drProduct["ProductName"] = p.ConvertProduct.ProductBasicInfo.ProductTitle;
                        drProduct["Price"]       = p.ConvertUnitCost.ToString("N2");
                        drProduct["Quantity"]    = p.ConvertQuantity;
                        drProduct["Amount"]      = (p.ConvertQuantity * p.ConvertUnitCost).ToString("N2");
                        if (p.ConvertType == ConvertProductType.Source)
                        {
                            sourceTotalAmount += p.ConvertQuantity * p.ConvertUnitCost;
                            dtSourceProduct.Rows.Add(drProduct);
                        }
                        else
                        {
                            targetTotalAmount += p.ConvertQuantity * p.ConvertUnitCost;
                            dtTargetProduct.Rows.Add(drProduct);
                        }
                    });
                    variables.Add("SourceTotalAmount", sourceTotalAmount.ToString("N2"));
                    variables.Add("TargetTotalAmount", targetTotalAmount.ToString("N2"));
                    tableVariables.Add("SourceProductList", dtSourceProduct);
                    tableVariables.Add("TargetProductList", dtTargetProduct);
                }
            }
        }