public ComplemarOrderHelper(Order order, MasterOrder masterOrder, ShipAddress shipAddress)
 {
     _order = order;
     _masterOrder = masterOrder;
     _orderItems = order.OrderLineItems.ToList();
     _shipAddress = shipAddress;
 }
Example #2
0
 public ItxOrderHelper(Order order, ShipAddress shipAddress)
 {
     _order = order;
     _orderItems = order.OrderLineItems.ToList();
     _shipAddress = shipAddress;
     _itxOrder = new ItxOrder();
     _itxFriendlyItems = GetComplemarFriendlyItems();
     UnsentItems = new List<OrderLineItem>();
 }
Example #3
0
 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;
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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;
        }
Example #7
0
        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&lt;T&gt; property instead.
 /// </summary>
 public void AddToOrders(Order order)
 {
     base.AddObject("Orders", order);
 }
Example #10
0
 public SimplOrder(Order order)
     : this(order, DBContextFactory.CreateContext())
 {
 }
Example #11
0
        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;
        }
Example #12
0
        /// <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;
        }
Example #13
0
        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");
        }