public ComplemarOrderHelper(Order order, MasterOrder masterOrder, ShipAddress shipAddress) { _order = order; _masterOrder = masterOrder; _orderItems = order.OrderLineItems.ToList(); _shipAddress = shipAddress; }
public ItxOrderHelper(Order order, ShipAddress shipAddress) { _order = order; _orderItems = order.OrderLineItems.ToList(); _shipAddress = shipAddress; _itxOrder = new ItxOrder(); _itxFriendlyItems = GetComplemarFriendlyItems(); UnsentItems = new List<OrderLineItem>(); }
public ItxOrderHelper(Order order, ShipAddress shipAddress, int equipmentCatalog, string wtn = null) { _order = order; _orderItems = order.OrderLineItems.ToList(); _shipAddress = shipAddress; _itxOrder = new ItxOrder(); _itxFriendlyItems = GetComplemarFriendlyItems(); _equipmentCatalog = equipmentCatalog; _wtn = wtn; UnsentItems = new List<OrderLineItem>(); }
/* ******************************* Order Request ********************************* * Required Fields: * * Items - List of items to order - ArrayOfOrderRequestItems - N/A * JobNumber - Customer contract number - int * OrderedBy - Person placing order - OrderedByRequest * ShipTo - Person receiving order - ShipToRequest * * *******************************************************************************/ public OrderRequest EmitOrderRequest(Order order, MasterOrder masterOrder, List<OrderLineItem> orderItems, ShipAddress shipAddress, string uniqueId = null) { var orderRequest = new OrderRequest(); var itemArray = new OrderRequestItem[orderItems.Count]; // add item request for each item for (var i = 0; i < orderItems.Count; i++) { itemArray[i] = EmitOrderRequestItem(orderItems[i]); } orderRequest.Items = itemArray; orderRequest.OrderName = masterOrder.MasterOrderId.ToString(CultureInfo.InvariantCulture); orderRequest.JobNumber = 52000; orderRequest.OrderedBy = EmitOrderedByRequest(shipAddress); orderRequest.ShipTo = new[] { EmitShipToRequest(shipAddress) }; orderRequest.Comment = "TEST ORDER: DO NOT SHIP"; orderRequest.Transaction = 0; //*int.Parse(*/masterOrder.MasterOrderId;//.ToString() + masterOrder.CreateDateTime.Hour.ToString() + masterOrder.CreateDateTime.Minute.ToString() orderRequest.OrderPrefix = "FI"; orderRequest.CreatedBy = uniqueId; orderRequest.TType = TransactionTypes.StandardOrder; #region Additional Fields orderRequest.REC_NUM = 0; //+ masterOrder.CreateDateTime.Second.ToString()); orderRequest.Sequence = 0; //orderRequest.METHOD = 0; //orderRequest.WarehouseID = 0; orderRequest.OrderOrigination = OrderSources.Web; //orderRequest.Status = OrderStatuses.Open; //orderRequest.OrderApprovalStatus = ApprovalStatus.Approved; //orderRequest.CreatedDate = DateTime.Now; //orderRequest.CustReference = string.Empty; //orderRequest.CustomerNumber = string.Empty; // orderRequest.CustomerOrderType = string.Empty; //orderRequest.LastModDate = DateTime.Now; // orderRequest.LastUpdatedBy = string.Empty; //orderRequest.DiscountCode = 'a'; // orderRequest.UsageCode = 'a'; orderRequest.CustomerID = shipAddress.SubscriberId; #endregion System.Diagnostics.Debug.WriteLine(orderRequest.ToString()); return orderRequest; }
public SimplOrder(Order order, SIMPLEntities db) { if (order == null) { throw new ArgumentNullException(); } const int custEntId = 8; try { var master = db.MasterOrders.FirstOrDefault(m => m.MasterOrderId == order.MasterOrderId); var uniqueId = db.UniqueIds.FirstOrDefault(u => u.EntityId == master.CreatingEntityId); if (uniqueId != null) CreatorId = uniqueId.UniqueIdValue; if (master != null && master.ReceivingEntityId != custEntId) { var id = db.UniqueIds.FirstOrDefault(u => u.EntityId == master.ReceivingEntityId); if (id != null) ReceiverId = id.UniqueIdValue; } else { var addr = db.ShipAddresses.FirstOrDefault(s => s.ShipAddressId == db.Orders.FirstOrDefault(o => o.OrderId == order.OrderId).ShipAddress.Value); ReceiverId = (addr != null) ? addr.SubscriberId : "Subscriber"; } if (master != null) CreateDateTime = master.CreateDateTime; MasterOrderId = order.MasterOrderId.ToString(CultureInfo.InvariantCulture); OrderId = order.OrderId.ToString(CultureInfo.InvariantCulture); var location = db.Locations.FirstOrDefault(l => l.TriadLocId == order.Location.TriadLocId); if (location != null) FillLocation = location.TriadLocId; FilledBy = order.FilledByEntityId != null ? StaticSimplFormats.ToSimplEntityId(Convert.ToInt32(order.FilledByEntityId), db) : null; FillDateTime = order.FilledDateTime; var trackingNumber = order.TrackingNumbers.FirstOrDefault(); if (trackingNumber != null) TrackingNumber = trackingNumber.TrackingNumber1; } catch (Exception ex) { throw new Exception("Error creating SIMPL order from order. (See InnerException for more info.)", ex); } }
private Order GenerateOrder(OrderTypeEnum orderType, ShipAddress shipAddress, List<OrderLineItem> items, int fulfillmentLocation) { var order = new Order(); OrderType foundType; // Add collateral to order (disconnect letter / exchange letter) switch (orderType) { case OrderTypeEnum.Dropship: items.AddRange(AddCollateral(items)); order.FillLocId = Dropship.DropshipHelper.GetShippingVendorId(); order.ShipAddress1 = shipAddress; foundType = DBCache.OrderTypes.FirstOrDefault(c => c.OrderTypeName.ToLower() == "fios_drop"); if (foundType != null) { order.OrderTypeId = foundType.OrderTypeId; } ReturnMailerConversion(items); break; case OrderTypeEnum.Field: order.FillLocId = fulfillmentLocation; foundType = DBCache.OrderTypes.FirstOrDefault(c => c.OrderTypeName.ToLower() == "fios_field"); if (foundType != null) order.OrderTypeId = foundType.OrderTypeId; break; } foreach (var item in items) { order.OrderLineItems.Add(item); } var orderStatus = DBCache.OrderStatuses.FirstOrDefault(c => c.OrderStatusName.ToLower() == "ordered"); if (orderStatus != null) order.Status = orderStatus.OrderStatusId; return order; }
private string FormatOrder(Order order) { try { //Todo: This entire method should be rewritten or the functionality should be moved to a partial. Also, a StringBuilder should be used. Also, the context should only be open long enough to get the data, and the text formatting should occur after it's closed. var output = ""; const string cellString = "<td style=\"border: 1px solid black;\">"; const int tableColCount = 4; using (var db = DBContextFactory.CreateContext()) { var master = db.MasterOrders.First(m => m.MasterOrderId == order.MasterOrderId); var creator = new SimplUser(db.Entities.First(e => e.EntityId == master.CreatingEntityId)); var receiver = new SimplUser(db.Entities.First(e => e.EntityId == master.ReceivingEntityId)); //TODO: make this compatible with deers and cows and dropship orders SimplUser fulfiller = null; var fulfilledBy = db.Entities.FirstOrDefault(u => u.EntityId == order.FilledByEntityId); if (fulfilledBy != null) fulfiller = new SimplUser(db.Entities.FirstOrDefault(u => u.EntityId == order.FilledByEntityId)); var loc = db.Locations.First(l => l.LocId == master.Entity1.Location.LocId); // get the order items from the database and parse by IsSerialized field var orderItems = db.OrderLineItems.Where(o => o.OrderId == order.OrderId).ToList(); var nsOrderItems = orderItems.Where(q => q.EquipmentType.EquipmentCategory.IsSerialized == false).ToList(); var sOrderItems = orderItems.Where(q => q.EquipmentType.EquipmentCategory.IsSerialized).ToList(); var shippedSerials = db.ShippedSerials.Where( s => orderItems.Select(o => o.OrderLineItemId).Contains((int) s.OrderLineItemId)); output += "<br /><br /><b>Order Details</b><br />"; output += "Order id: " + order.MasterOrderId + "<br />"; output += "Created by: " + creator.NameAndId + "<br />"; output += "Received by: " + receiver.NameAndId + "<br />"; if (fulfiller != null) output += "Fulfilled by: " + fulfiller.NameAndId + "<br /> at " + db.Orders.First(o => o.OrderId == order.OrderId).FilledDateTime; else output += "Fulfilled by: Not Yet Fulfilled<br />"; output += "Order placed at: " + master.CreateDateTime + "<br />"; output += "Receiving location: " + loc.LocName + ", " + loc.TriadLocId + "<br />"; output += "<br /><b>Item Details</b><br />"; if (nsOrderItems.Any()) { output += "<table width=\"400px\" style=\"cell-padding:10px; border-width:thin; border-style:solid;\"><tr><td colspan=\"" + tableColCount + "\" style=\"border: 1px solid black;\">Non-serialized:</td></tr>"; output += "<tr>" + cellString + "Quantity</td>" + cellString + "Item Number</td>" + cellString + "Equipment Category</td>" + cellString + "Name/Description</td></tr>"; foreach (var item in nsOrderItems) { output += "<tr>" + cellString + item.Quantity + "</td>" + cellString + item.EquipmentType.ItemNumber + "</td>" + cellString + item.EquipmentType.EquipmentCategory.EquipmentCategoryName + "</td>" + cellString + item.EquipmentType.EquipName + "</td>" + "</tr>"; } } if (sOrderItems.Any()) { output += "<tr><td colspan=\"" + tableColCount + "\"></td></tr>" + "<tr><td colspan=\"" + tableColCount + "\">Serialized:"; if (SerializeItems) { foreach (var serial in shippedSerials) { var myLineItem = orderItems.First(o => o.OrderLineItemId == serial.OrderLineItemId); output += "<tr>" + "<td>" + serial.SerialNumber + "</td>" + "<td>" + myLineItem.EquipmentType.EquipmentCategory.EquipmentCategoryName + "</td>" + "<td>" + myLineItem.EquipmentType.EquipName + "</td>" + "</tr>"; } } else if (nsOrderItems.Any()) { foreach (var item in nsOrderItems) { output += "<tr>" + "<td>" + item.Quantity + "</td>" + "<td>" + item.EquipmentType.ItemNumber + "</td>" + "<td>" + item.EquipmentType.EquipmentCategory.EquipmentCategoryName + "</td>" + "<td>" + item.EquipmentType.EquipName + "</td>" + "</tr>"; } } output += "</table>"; } var comment = db.Comments.FirstOrDefault(c => c.CommentOrderId == order.OrderId); if (comment != null) { output += "<br /><b>Item Details</b><br />"; output += "<br />" + comment.CommentText; } } return output; } catch { return string.Empty; } }
/// <summary> /// Create a new Order object. /// </summary> /// <param name="orderId">Initial value of the OrderId property.</param> /// <param name="masterOrderId">Initial value of the MasterOrderId property.</param> /// <param name="fillLocId">Initial value of the FillLocId property.</param> /// <param name="orderTypeId">Initial value of the OrderTypeId property.</param> /// <param name="status">Initial value of the Status property.</param> public static Order CreateOrder(global::System.Int32 orderId, global::System.Int32 masterOrderId, global::System.Int32 fillLocId, global::System.Int32 orderTypeId, global::System.Int32 status) { Order order = new Order(); order.OrderId = orderId; order.MasterOrderId = masterOrderId; order.FillLocId = fillLocId; order.OrderTypeId = orderTypeId; order.Status = status; return order; }
/// <summary> /// Deprecated Method for adding a new object to the Orders EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToOrders(Order order) { base.AddObject("Orders", order); }
public SimplOrder(Order order) : this(order, DBContextFactory.CreateContext()) { }
public static Order ToOrder(SimplOrder simplOrder) { var returnValue = new Order(); if (simplOrder.OrderId != null) returnValue.OrderId = Utility.Conversion.QuickParse(simplOrder.OrderId); // will always be an int, so use quickparse if (simplOrder.MasterOrderId != null) returnValue.MasterOrderId = Utility.Conversion.QuickParse(simplOrder.MasterOrderId); // use quickparse as it will always be an int returnValue.FillLocId = StaticSimplFormats.ToLocationId(simplOrder.FillLocation); returnValue.FilledByEntityId = StaticSimplFormats.ToEntityId(simplOrder.FilledBy); returnValue.FilledDateTime = simplOrder.FillDateTime; returnValue.TrackingNumbers.Add(new TrackingNumber { TrackingNumber1 = simplOrder.TrackingNumber}); return returnValue; }
/// <summary> /// Works with the instantiated mail helper to turn it into an order notification email which is /// sent to the order fulfillment location users, but only if "ReceiveNotifications" = true in /// the entities table in the database. /// </summary> /// <param name="order"></param> /// <param name="owningLocationId"></param> /// <param name="userEmail"></param> /// <returns>Boolean value "okToSend". Is false if no recipient can be found.</returns> public Boolean CreateOrderNotification(Order order, int owningLocationId, string userEmail) { // Fulfillment loc = user's owning loc id List<string> recipients; using (var db = DBContextFactory.CreateContext()) { recipients = db.Entities.Where(n => n.ReceiveNotifications == true && n.LocId == owningLocationId).Select(n => n.Email).ToList(); } var viz = new TextVisualizer(); // create a text visualizer to convert order data to email body var orderDetails = viz.FormatAsText(order); // format the order into a string var okToSend = true; // initialize return variable var emailBody = "A new order has been placed for fulfillment at your location.<br />" + orderDetails; // this value will be changed below if no one at the owning location will be receiving the email var subjectLine = "New order pending for " + order.Location.LocName; // this will also be changed below if not being sent to owning location if (recipients.Count <= 0) // if no one at the location can receive notifications (user preference(?)) { if (string.IsNullOrEmpty(userEmail)) // if no one at owning loc will receive and user has no email in db, do no send okToSend = false; else // if user has email address, still ok to send { recipients.Add(userEmail); emailBody = "There is no one at your owning location who is set to receive email notifications.\n\n" + orderDetails; subjectLine = "SIMPL order placed; no notification sent."; } } if (okToSend) { From = "*****@*****.**"; ToAddresses = recipients; Subject = subjectLine; Body = emailBody; UseDefaultClient(); } return okToSend; }
public MasterOrder GetMasterOrder(Order order) { var value = _context.MasterOrders.FirstOrDefault(m => m.MasterOrderId == _context.Orders.FirstOrDefault(o => o.OrderId == order.OrderId).MasterOrderId); if (value != null) return value; throw new ArgumentException("Missing order or master order Id in database"); }