Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);


        }