internal static void UpdateHeader(ref OrderHeader header) { header.Total = 0; foreach (var line in header.OrderLines) { header.Total += (line.Quantity * line.UnitCost); } }
public ActionResult CreateOrder(int clientId, int salesTypeId) { var salesType = db.SalesTypes.Find(salesTypeId); var shippingType = db.ShippingTypes.Find(salesType.DefaultShippingTypeId); var currentUserId = Guid.Parse(IdentityExtensions.GetUserId(User.Identity)); var newOrder = new OrderHeader() { Active = true, OrderDate = DateTime.Now, OrderStatusId = 8, UserId = currentUserId, ShippingTypeId = shippingType.ShippingTypeId, SalesTypeId = salesTypeId, OnceOff = false,ClientID=clientId }; db.OrderHeaders.Add(newOrder); db.SaveChanges(); return RedirectToAction("Edit", new { id = newOrder.OrderHeaderId }); }
public ActionResult Create(int? ClientId, bool onceOff=false) { Client client = null; var currentUserId = Guid.Parse(IdentityExtensions.GetUserId(User.Identity)); bool ownOrder = IsOwnOrder(db,ClientId, currentUserId); if (ClientId.HasValue) { client = db.Clients.Find(ClientId.Value); } var pc = db.PostageCharges.Where(m => m.Active).ToArray(); if (ClientId.HasValue) { var address = client.DeliveryAddress; if (address == null) { address = (from item in db.Addresses where item.ClientID == ClientId.Value && item.AddressTypeID == 2 select item).FirstOrDefault(); } if (address == null) { ModelState.AddModelError("OrderDate", "This client does not have a valid shipping address"); } else { var code = db.PostalCodes.FirstOrDefault(m => m.Active && m.PostalCodeName == address.Code); if (code != null) { var link = db.PostalCodePostageCharges.FirstOrDefault(m => m.PostalCodeId == code.PostalCodeId); if (link != null) { ViewBag.PostageChargeId = new SelectList(pc, "PostageChargeId", "PostageChargeName", link.PostageChargeId); ViewBag.PostageChargeSetUp = true; } } } } if (ViewBag.PostageCharge == null) { ViewBag.PostageChargeSetUp = false; ViewBag.PostageChargeId = new SelectList(pc, "PostageChargeId", "PostageChargeName"); } ViewBag.ClientID = new SelectList(db.Clients, "ClientId", "ClientInitials"); ViewBag.OrderStatusId = new SelectList(db.OrderStatuses, "OrderStatusId", "OrderStatusName"); var salesTypeId = 1; if ( onceOff && !ownOrder) { var subscriptions = (from item in db.Subscriptions where item.ValidFromDate <= DateTime.Now && item.ClientTypeID == client.ClientTypeID && !item.InitialOnceOffFromAccountID.Equals(Guid.Empty) select item).ToArray(); var salesTypeIds = subscriptions.Select(m => m.SalesTypeID).Distinct().ToArray(); var productIds = subscriptions.Select(m => m.ProductID).Distinct().ToArray(); ViewBag.SalesTypeId = new SelectList(db.SalesTypes.Where(m => m.Active && salesTypeIds.Contains(m.SalesTypeId)).OrderBy(m => m.SalesTypeDescription), "SalesTypeId", "SalesTypeDescription"); ViewBag.ProductList = new SelectList(db.Products.Where(m => m.Active && productIds.Contains(m.ProductID)).OrderBy(m => m.ProductName), "ProductID", "ProductName"); } else { var subscriptions = (from item in db.Subscriptions where item.ValidFromDate <= DateTime.Now && item.ClientTypeID == client.ClientTypeID select item.ProductID).Distinct().ToArray(); ViewBag.SalesTypeId = new SelectList(db.SalesTypes.Where(m => m.Active && (!ownOrder || (ownOrder && m.SalesTypeId == Generic.OwnOrderSalesTypeId))).OrderBy(m=>m.SalesTypeDescription), "SalesTypeId", "SalesTypeDescription"); ViewBag.ProductList = new SelectList(db.Products.Where(m => m.Active && subscriptions.Contains(m.ProductID)).OrderBy(m=>m.ProductName), "ProductID", "ProductName"); } var newOrder = new OrderHeader() {Active = true, OrderDate = DateTime.Now, OrderStatusId=1, UserId=currentUserId,ShippingTypeId=1, SalesTypeId=salesTypeId, OnceOff = onceOff }; ViewBag.ShippingCost = new KeyValuePair<string, string>[0]; if (ClientId.HasValue) { newOrder.Client = client; ViewBag.ContactInfo = (from item in db.ContactTypes.Where(m => m.Active).ToArray() select new string[] { item.ContactTypeName, db.Contacts.Where(m=>m.Active && m.ContactTypeID == item.ContactTypeId && m.ClientID==ClientId.Value).Select(m=>m.ContactName).FirstOrDefault() }).ToArray(); var shipping = (from item in db.ShippingMethodPostalCodes where item.PostalCode.PostalCodeName == newOrder.Client.DeliveryAddress.Code select item).ToArray(); // ViewBag.ShippingCost = shipping.Select(m => new KeyValuePair<string, string>(string.Format("{0}:{1}", m.ShippingMethod.ShippingMethodName, m.Description), m.ExtraCost.ToString("R#,###,##0.00"))).Take(5).ToArray(); } return View(newOrder); }
private Guid CopyOrder(Guid id, Guid userId) { var oldHeader = db.OrderHeaders.Find(id); var newHeader = new OrderHeader() { Active = true, ClientID = oldHeader.ClientID, OrderDate = DateTime.Now, OrderHeaderId = Guid.NewGuid(), OrderStatusId = 1, SaleSourceId = oldHeader.SaleSourceId, SalesTypeId = oldHeader.SalesTypeId, Shipping=oldHeader.Shipping, ShippingTypeId=oldHeader.ShippingTypeId, Total = oldHeader.Total, UserId=userId, VAT = oldHeader.VAT }; db.OrderHeaders.Add(newHeader); db.SaveChanges(); foreach (var oldLine in oldHeader.OrderLines) { var newLine = new OrderLine() { Active = true, OrderHeaderId = newHeader.OrderHeaderId, ProductID=oldLine.ProductID, Quantity=oldLine.Quantity, UnitCost=oldLine.UnitCost, UnitCostExcl=oldLine.UnitCostExcl }; db.OrderLines.Add(newLine); } db.SaveChanges(); return newHeader.OrderHeaderId; }