public List <OrderReportVM> OrderReportSource(int OrderID) { List <OrderReportVM> list = new List <OrderReportVM>(); OrderReportVM orderReportVM = new OrderReportVM(); var Order = GetOrder(OrderID); orderReportVM.orderDetailsVMs = Order.OrderDetails.Select(x => new orderDetailsVM { count = x.count, LoafTypeName = x.LoafType.Name, notes = x.notes, ItemName = x.ItemDetails.Item.Name, totalPrice = x.totalPrice, ItemPrice = x.ItemDetails.Price.ToString() }).ToList(); orderReportVM.OrderNumber = Order.OrderNumberForShift.ToString(); orderReportVM.Date = Order.Date.ToString("dd/MM/yyyy"); orderReportVM.Time = Order.Date.ToShortTimeString(); orderReportVM.CasherName = "Mohanad"; orderReportVM.InvoiceCoast = Order.TotalCoast; orderReportVM.ExtraCost = Order.ExtraCost; orderReportVM.SandwitchCount = Order.OrderDetails.Sum(x => x.count); list.Add(orderReportVM); return(list); }
public ActionResult OrderReportPartial([ModelBinder(typeof(DevExpressEditorsBinder))] OrderReportVM item) { rptOrders rpt = new rptOrders(); try { var res = unitOfWork.OrdersRepo.Fetch(x => (x.OrderedDate >= item.DateFrom && x.OrderedDate <= item.DateTo) && x.Carts.Products.CreatedBy == item.UserId).ToList(); rpt = new rptOrders() { DataSource = res }; } catch (Exception e) { } return(PartialView(rpt)); }
public ActionResult ReviewReportB(SortReport SelectedSort, String ProfitMin, String ProfitMax, String PriceMin, String PriceMax) { //initialize booksreport viewmodel List<OrderReportVM> allBooksReports = new List<OrderReportVM>(); List<OrderDetail> OrdersReport = new List<OrderDetail>(); var query = from r in _db.OrderDetails select r; if (!string.IsNullOrEmpty(ProfitMin)) { decimal decProfitMin; try { decProfitMin = Convert.ToDecimal(ProfitMin); } catch { //adding error message for viewbag @ViewBag.Message = ProfitMin + "is not a valid number. Please try again."; } decProfitMin = Convert.ToDecimal(ProfitMin); //query = query.Where(r => r.Price >= decProfitMin); query = query.Where(r => (r.Book.AvgSalesPrice - r.Book.AvgBookCost) >= decProfitMin); } if (!string.IsNullOrEmpty(ProfitMax)) { decimal decPMax; try { decPMax = Convert.ToDecimal(ProfitMax); } catch { //adding error message for viewbag @ViewBag.Message = ProfitMin + "is not a valid number. Please try again."; } //query = query.Where(r => r.Price >= decPMax); decPMax = Convert.ToDecimal(ProfitMax); query = query.Where(r => (r.Book.AvgSalesPrice - r.Book.AvgBookCost) <= decPMax); } if (!string.IsNullOrEmpty(PriceMin)) { decimal decProfitMin; try { decProfitMin = Convert.ToDecimal(PriceMin); } catch { //adding error message for viewbag @ViewBag.Message = ProfitMin + "is not a valid number. Please try again."; } //query = query.Where(r => r.Price >= decProfitMin); decProfitMin = Convert.ToDecimal(PriceMin); query = query.Where(r => r.Price >= decProfitMin); } if (!string.IsNullOrEmpty(PriceMax)) { decimal decPMax; try { decPMax = Convert.ToDecimal(PriceMax); } catch { //adding error message for viewbag @ViewBag.Message = ProfitMin + "is not a valid number. Please try again."; } //query = query.Where(r => r.Price >= decPMax); decPMax = Convert.ToDecimal(PriceMax); query = query.Where(r => r.Price <= decPMax); } //query = query.Include(o => o.Book).ThenInclude(o => o.Procurements).Include(o => o.Order).ThenInclude(o => o.Customer); OrdersReport = query.ToList(); List<Order> allOrders = new List<Order>(); var orderquery = _db.Orders.Include(o => o.Customer).Include(o => o.OrderDetails).ThenInclude(o => o.Book).ThenInclude(o => o.Procurements); allOrders = orderquery.ToList(); foreach (Order order in allOrders) { OrderReportVM orvm = new OrderReportVM(); List<string> ListBookTandQ = new List<string>(); decimal OrderRev = 0; decimal OrderCost = 0; decimal OrderProcQuantity = 0; int OrderQuantity = 0; string BookTitle; int BookQ; string TandQ; foreach (OrderDetail od in OrdersReport) { int intTotalProc = od.Book.InitialInventory; decimal decTotalCost = od.Book.InitialCost * od.Book.InitialInventory; foreach (Procurement pro in od.Book.Procurements) { intTotalProc += pro.Quantity; decTotalCost += pro.Price * pro.Quantity; } if (od.Order.OrderID == order.OrderID) { OrderRev += od.ExtendedPrice; BookTitle = od.Book.Title; BookQ = od.Quantity; TandQ = BookTitle + " (" + BookQ.ToString() + ") "; ListBookTandQ.Add(TandQ); orvm.CustomerName = od.Order.Customer.FirstName + ' ' + od.Order.Customer.LastName; OrderCost += decTotalCost; OrderProcQuantity += intTotalProc; orvm.OrderDate = od.Order.OrderDate; OrderQuantity += od.Quantity; } } orvm.Payment = order.Payment; orvm.OrderNumber = order.OrderNumber; if (OrderProcQuantity == 0) { OrderProcQuantity = 1; } orvm.OrderCostAvg = (OrderCost / OrderProcQuantity); decimal OrderCostAvgTimesOrderQuantity = (OrderCost / OrderProcQuantity)*OrderQuantity; orvm.OrderCost = OrderCostAvgTimesOrderQuantity; orvm.ProfitMargin = (OrderRev - OrderCostAvgTimesOrderQuantity); orvm.BookTandQ = ListBookTandQ; orvm.OrderTotal = OrderRev; orvm.ProfitMarginMinusAvg = OrderRev - (OrderCost / OrderProcQuantity); if (orvm.OrderTotal != 0) { allBooksReports.Add(orvm); } } ViewBag.SelectedRecords = allBooksReports.Count(); switch (SelectedSort) { case SortReport.MostRecent: return View("ReviewReportB", allBooksReports.OrderByDescending(r => r.OrderNumber)); case SortReport.PriceAsc: return View("ReviewReportB", allBooksReports.OrderBy(r => r.OrderTotal)); case SortReport.PriceDesc: return View("ReviewReportB", allBooksReports.OrderByDescending(r => r.OrderTotal)); case SortReport.ProfitMarginAsc: return View("ReviewReportB", allBooksReports.OrderBy(r => r.ProfitMargin)); case SortReport.ProfitMarginDesc: return View("ReviewReportB", allBooksReports.OrderByDescending(r => r.ProfitMargin)); } return View("ReviewReportB", allBooksReports); }