public override ReturnValue GetMailContent(int orderId, int releaseID, TProgram_Email mi) { ReturnValue _result = new ReturnValue(); System.Globalization.NumberFormatInfo nfi = Utilities.CurrentNumberFormat; #region getOrderInfo and Check TOrderNu _tOrder = new TOrderNu(); _result = _tOrder.getOrderById(orderId); if (_result.Success == false) { return(_result); } _tOrder = _result.Object as TOrderNu; if (_tOrder.OrderId == 0) { _result.Success = false; _result.ErrMessage = "the order doesn't exits"; return(_result); } TOrderNu _emailAddress = new TOrderNu(); _result = _emailAddress.getMailAddress(_tOrder.CustomerId); if (_result.Success == false) { return(_result); } _emailAddress = _result.Object as TOrderNu; TOrder_Line_ItemNu _tOrdersDetail = new TOrder_Line_ItemNu(); _result = _tOrdersDetail.getOrdersDetail(orderId); if (_result.Success == false) { return(_result); } EntityList _orderDetails = _result.ObjectList; if (_orderDetails.Count == 0) { _result.Success = false; _result.ErrMessage = "the order doesn't exits"; return(_result); } #endregion try { #region setup EmailMessage EmailMessage _mail = new EmailMessage(); if (_emailAddress.MailBCC.IndexOf(";") > 0) { _emailAddress.MailBCC = _emailAddress.MailBCC.Remove(_emailAddress.MailBCC.Length - 1, 1); } if (_emailAddress.MailCC.IndexOf(";") > 0) { _emailAddress.MailCC = _emailAddress.MailCC.Remove(_emailAddress.MailCC.Length - 1, 1); } if (_emailAddress.MailTo.IndexOf(";") > 0) { _emailAddress.MailTo = _emailAddress.MailTo.Remove(_emailAddress.MailTo.Length - 1, 1); } mi.BccAddress = _emailAddress.MailBCC; mi.CCAddress = _emailAddress.MailCC; #region Order Summary string MailContent = mi.FullText .Replace("&Firstname", _tOrder.FirstName) .Replace("&zorderid", _tOrder.OrderId.ToString()) .Replace("&OrderDate", _tOrder.OrderDate.ToString("MM/dd/yyyy")) .Replace("&ztotalproductamount", _tOrder.TotalProductAmount.ToString("C", nfi)) .Replace("&zTotalShipping", (_tOrder.TotalShipping).ToString("C", nfi)) .Replace("&zTotalTax", _tOrder.TotalTax.ToString("C", nfi)) .Replace("&zTotalOrderAmount", _tOrder.TotalOrderAmount.ToString("C", nfi)) .Replace("&ShippingMethod", _tOrder.ShipMethod) .Replace("&ShippedDate", _tOrder.ShippedDate.Value.ToString("MM/dd/yyyy")); #endregion #region Order Detail string RepeatTemp = ""; if (MailContent.IndexOf("&orderinfo") > 0) { RepeatTemp = " <table width =\"100%\" cellpadding=\"1\"><tr><td >Item No</td><td>Description</td><td >Unit Price</td><td>Quantity</td></tr>"; foreach (TOrder_Line_ItemNu drItem in _orderDetails) { RepeatTemp = RepeatTemp + "<tr><td >" + drItem.PartNumber + "</td><td>" + drItem.ProductName + "</td><td >" + drItem.Price.ToString("C") + "</td><td>" + drItem.Quantity.ToString() + "</td></tr>"; } RepeatTemp = RepeatTemp + "</TABLE>"; } MailContent = MailContent.Replace("&orderinfo", RepeatTemp); #endregion #region Shipping Detail RepeatTemp = ""; if (MailContent.IndexOf("&shipmentnfo") > 0) { RepeatTemp = " <table width =\"100%\" cellpadding=\"1\">"; int _packageNumber = 1; TOrder_Line_Shipment_Carton _tOrder_Line_Shipment_Carton = new TOrder_Line_Shipment_Carton(); _result = _tOrder_Line_Shipment_Carton.getOrderLineShipmentCartonByOrderID(orderId, releaseID); if (_result.Success == false) { return(_result); } EntityList cartonList = _result.ObjectList; TOrder_Line_Shipment_ASN _tOrder_Line_Shipment_ASN = new TOrder_Line_Shipment_ASN(); _result = _tOrder_Line_Shipment_ASN.getOrderLineShipmentASNByOrderID(orderId, releaseID); if (_result.Success == false) { return(_result); } EntityList asnList = _result.ObjectList; foreach (TOrder_Line_Shipment_Carton _carton in cartonList) { if (asnList.Count != 0) { if (string.IsNullOrEmpty(_carton.PACKAGE_TRACE_ID) == false) { RepeatTemp = RepeatTemp + "<tr><td >Package " + _packageNumber.ToString() + " Tracking Number:" + _carton.PACKAGE_TRACE_ID + " " + "(<a href=\"{0}\">TrackOrder</a>)" + "</td></tr>"; } else { RepeatTemp = RepeatTemp + "<tr><td >Package " + _packageNumber.ToString() + " Tracking Number:N/A</td></tr>"; } RepeatTemp = RepeatTemp + "<tr><td ><br /> <table width =\"100%\" cellpadding=\"1\"><tr><td > Item No</td>" + "<td>Description</td><td>Qty in Package</td></tr>"; foreach (TOrder_Line_Shipment_ASN _asn in asnList) { TOrder_Line_ItemNu _orderDetail = this.getOrderLine(_orderDetails, _asn); RepeatTemp = RepeatTemp + " <tr><td >" + _orderDetail.PartNumber + "</td><td>" + _orderDetail.ProductName + "</td><td>" + Convert.ToInt16(Convert.ToDouble(_asn.PIECES_TO_MOVE)).ToString() + "</td></tr>"; RepeatTemp = RepeatTemp.Replace("{0}", _orderDetail.TrackingURL + _carton.PACKAGE_TRACE_ID); } RepeatTemp = RepeatTemp + "</table><br /></td></tr>"; _packageNumber++; } } RepeatTemp = RepeatTemp + "</TABLE>"; } MailContent = MailContent.Replace("&shipmentnfo", RepeatTemp); #endregion _mail.HtmlPart = new HtmlAttachment(MailContent); _mail.FromAddress = new EmailAddress(mi.RespondTo); _mail.Subject = mi.Subject; if (Common.IsTest == true) { string[] maillist = Common.TestMailTo.Split(';'); foreach (string _item in maillist) { _mail.AddToAddress(new EmailAddress(_item)); } _result.Table = Common.TestMailTo; } else { if (string.IsNullOrEmpty(_emailAddress.MailTo) == true) { _result.Success = false; _result.ErrMessage = "Email To Address is empty"; return(_result); } else { string[] bcclist = _emailAddress.MailTo.Split(';'); foreach (string _item in bcclist) { _mail.AddToAddress(new EmailAddress(_item)); } } _result.Table = _emailAddress.MailTo; } if (string.IsNullOrEmpty(mi.BccAddress) == false) { string[] bcclist = mi.BccAddress.Split(';'); foreach (string _item in bcclist) { _mail.AddBccAddress(new EmailAddress(_item)); } } if (string.IsNullOrEmpty(mi.CCAddress) == false) { string[] bcclist = mi.CCAddress.Split(';'); foreach (string _item in bcclist) { _mail.AddCcAddress(new EmailAddress(_item)); } } _result.ObjectValue = _mail; #endregion } catch (Exception ex) { _result.Success = false; _result.ErrMessage = ex.ToString(); } return(_result); }
public override ReturnValue UpdateShipment() { ReturnValue _result = new ReturnValue(); Common.Connect(); #region get order list TOrder _tOrder = new TOrder(); _result = _tOrder.getShimentOrderList(); if (_result.Success == false) { _result.Success = false; _result.ErrMessage = "getShimentOrderList failed. \r\n " + _result.ErrMessage; Common.Log("getShimentOrderList---ER \r\n" + _result.ErrMessage); return(_result); } EntityList orderList = _result.ObjectList; VCBusiness.Model.TProgram_Email _tProgram_Email = Common.CreateObject(this.Owner, "TProgram_Email") as VCBusiness.Model.TProgram_Email; _result = _tProgram_Email.getEmailTemplate("SHIP_CONFIRMATION"); if (_result.Success == false) { _result.Success = false; _result.ErrMessage = "getEmailTemplate failed. \r\n " + _result.ErrMessage; Common.Log("getEmailTemplate---ER \r\n" + _result.ErrMessage); return(_result); } _tProgram_Email = _result.Object as TProgram_Email; #endregion #region update shipment foreach (TOrder order in orderList) { Common.Log("Order : " + order.OrderId); #region GetOrderShipmentInfo EntityList productList = new EntityList(); if (Convert.ToBoolean(System.Configuration.ConfigurationSettings.AppSettings["IsTestMode"].ToString()) == true) { #region test TOrder_Line_Item orderline = new TOrder_Line_Item(); _result = orderline.getOrderLineItemsByOrderId(order.OrderId); foreach (TOrder_Line_Item item in _result.ObjectList) { item.ShipCarrier = "UPS"; item.ShipMethod = "STD"; item.TrackingNumber = "123456789"; item.ShippedDate = System.DateTime.Now; productList.Add(item); } #endregion } else { #region call Veracore _result = VeraCore.GetOrderShipmentInfo(order.OrderId.ToString()); if (_result.Success == false) { if (_result.ErrMessage.IndexOf("Invalid Order ID") > -1) { _result.ErrMessage = "Can't find the order"; } else { errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; } Common.Log("Order : " + order.OrderId + " GetOrderShipmentInfo---ER \r\n" + _result.ErrMessage); continue; } productList = _result.ObjectList; if (productList.Count() == 0) { Common.Log("Order : " + order.OrderId + "---Unshipped"); continue; } #endregion } #endregion Transaction _tran = new Transaction(); #region update order line foreach (TOrder_Line_Item item in productList) { order.ShipCarrier = item.ShipCarrier; order.ShipMethod = item.ShipMethod; order.TrackingNumber = item.TrackingNumber; order.ShippedDate = item.ShippedDate.Value; _result = item.updateOrderLineItemShipment(order.OrderId, item.PartNumber, item.ShippedDate.Value, item.TrackingNumber, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " updateOrderLineItemShipment---ER \r\n" + _result.ErrMessage); continue; } if (this.Owner.OwnerInfo["ImportDM"].ToString() == "Y") { TDM_Order_Detail _tDM_Order_Detail = new TDM_Order_Detail(); _tDM_Order_Detail.DataConnectProviders = "ZoytoPH"; _result = _tDM_Order_Detail.updateDMShipingInfo(order.OrderId, item.PartNumber, order.ShippedDate.Value, order.TrackingNumber); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " updateDMShipingInfo---ER \r\n" + _result.ErrMessage); continue; } } } #endregion #region update carton & ASN #region get release list TOrder_Line_Item _tOrder_Line_Item = new TOrder_Line_Item(); _result = _tOrder_Line_Item.getOrderReleaseByOrderId(order.OrderId, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " getOrderReleaseByOrderId---ER \r\n" + _result.ErrMessage); continue; } EntityList _releaseList = _result.ObjectList; #endregion #region delete cartion and ASN TOrder_Line_Shipment_Carton _tOrder_Line_Shipment_Carton = new TOrder_Line_Shipment_Carton(); _result = _tOrder_Line_Shipment_Carton.deleteOrderLineShipmentCartonByOrderID(order.OrderId, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " deleteOrderLineShipmentCartonByOrderID---ER \r\n" + _result.ErrMessage); continue; } TOrder_Line_Shipment_ASN _tOrder_Line_Shipment_ASN = new TOrder_Line_Shipment_ASN(); _result = _tOrder_Line_Shipment_ASN.deleteOrderLineShipmentASNByOrderID(order.OrderId, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " deleteOrderLineShipmentASNByOrderID---ER \r\n" + _result.ErrMessage); continue; } #endregion int releaseID = 1; foreach (TOrder_Line_Item item in _releaseList) { #region update release number && carton && ASN _result = item.updateOrderReleaseByTracking(order.OrderId, item.TrackingNumber, releaseID, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " updateOrderReleaseByTracking---ER \r\n" + _result.ErrMessage); continue; } _tOrder_Line_Shipment_Carton = new TOrder_Line_Shipment_Carton(); _tOrder_Line_Shipment_Carton.ORDER_ID = order.OrderId; _tOrder_Line_Shipment_Carton.RELEASE_NUM = releaseID; _tOrder_Line_Shipment_Carton.CARTON_ID_FROM = releaseID.ToString(); _tOrder_Line_Shipment_Carton.CARRIER_ID = order.ShipCarrier; _tOrder_Line_Shipment_Carton.SHIP_METHOD = order.ShipMethod; _tOrder_Line_Shipment_Carton.PACKAGE_TRACE_ID = item.TrackingNumber; _tOrder_Line_Shipment_Carton.Ship_date = item.ShippedDate.Value; _result = _tOrder_Line_Shipment_Carton.Save(_tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " _tOrder_Line_Shipment_Carton.Save---ER \r\n" + _result.ErrMessage); continue; } _result = item.createASN(order.OrderId, releaseID, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " createASN---ER \r\n" + _result.ErrMessage); continue; } #endregion releaseID++; } #endregion #region update phontom item _result = _tOrder.updateOrderPhontomOrderStatus(order.OrderId, order.ShippedDate.Value, order.TrackingNumber, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " updateOrderPhontomOrderStatus---ER \r\n" + _result.ErrMessage); continue; } #endregion #region customerEventPostShipmentUpdate _result = this.customerEventPostShipmentUpdate(order, productList, _tran); if (_result.Success == false) { _tran.RollbackTransaction(); errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " customerEventPostShipmentUpdate---ER \r\n" + _result.ErrMessage); continue; } #endregion _tran.CommitTransaction(); #region sent confirm email if (Owner.OwnerInfo["ShipConfirmation"].ToString() == "Y") { #region check already sent email App_Log_Mail _app_Log_Mail = new App_Log_Mail(); _result = _app_Log_Mail.getEmailLog(order.OrderId, releaseID - 1); if (_result.Success == false) { errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " getEmailLog---ER \r\n" + _result.ErrMessage); continue; } _app_Log_Mail = _result.Object as App_Log_Mail; #endregion if (_app_Log_Mail.ID == 0) { #region sent shipment email #region get email content VCBusiness.EmailFactory EmailFactory = Common.CreateObject(this.Owner, "EmailFactory") as VCBusiness.EmailFactory; _result = EmailFactory.GetMailContent(order.OrderId, releaseID - 1, _tProgram_Email); if (_result.Success == false) { errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " GetMailContent---ER \r\n" + _result.ErrMessage); continue; } EmailMessage email = _result.ObjectValue as EmailMessage; #endregion #region sent email _result = EmailFactory.SentEmail(order.OrderId, releaseID - 1, email); if (_result.Success == false) { errorNotes = errorNotes + order.OrderId.ToString() + "\r\n" + _result.ErrMessage + "\r\n"; failedRecord++; Common.Log("Order : " + order.OrderId + " SentEmail---ER \r\n" + _result.ErrMessage); continue; } #endregion #endregion } } #endregion successfulRecord++; Common.Log("Order : " + order.OrderId + "---OK"); } #endregion #region update Order Status SH _result = _tOrder.updateOrderStatusSH(); if (_result.Success == false) { _result.Success = false; _result.ErrMessage = "updateOrderStatusSH failed. \r\n " + _result.ErrMessage; Common.Log("updateOrderStatusSH---ER \r\n" + _result.ErrMessage); return(_result); } #endregion Common.SentAlterEmail(failedRecord, errorNotes); _result.Success = true; return(_result); }