コード例 #1
0
ファイル: ShopController.cs プロジェクト: LettoL/bvdShopCore
 public IActionResult Index()
 {
     return(View(_shopService.All().ToList().Select(x => new ShopVM()
     {
         Id = x.Id,
         Title = x.Title,
         CashOnHand = _shopService.CashOnHand(_db, x.Id),
         Margin = _shopService.Margin(x.Id),
         Sales = _saleService.All()
                 .Where(s => s.Date.Month == DateTime.Now.AddHours(3).Month&& s.Payment == true)
                 .Count(s => s.ShopId == x.Id),
         Turnover = _shopService.Turnover(x.Id)
     })));
 }
コード例 #2
0
        public IActionResult Index()
        {
            var userName = HttpContext.User.Identity.Name;
            var user     = _db.Users.FirstOrDefault(u => u.Login == userName);
            var shop     = _db.Shops.FirstOrDefault(x => x.Id == user.ShopId);

            var salesProductsToday = _db.SalesProducts
                                     .Where(x => x.Sale.Date.DayOfYear == DateTime.Now /*.AddHours(3)*/.DayOfYear &&
                                            x.Sale.Date.Year == DateTime.Now /*.AddHours(3)*/.Date.Year &&
                                            x.Sale.ShopId == user.ShopId)
                                     .Select(x => new SaleProduct()
            {
                Product = x.Product,
                Amount  = x.Amount
            }).ToList();

            ViewBag.SalesProducts = salesProductsToday;

            ViewBag.SalesAmount = salesProductsToday.Sum(sp => sp.Amount);

            ViewBag.Expenses = _moneyStatisticService.ShopExpenses(_db, shop.Id);

            ViewBag.Sum = _shopService.CashOnHand(_db, shop.Id);

            var infoMoneys   = _db.InfoMonies.ToList();
            var saleProducts = _db.SalesProducts
                               .Include(x => x.Product)
                               .ToList();

            ViewBag.DefferedSales = _db.Sales
                                    .Where(s => s.Payment == false && s.ShopId == user.ShopId &&
                                           _db.SaleInformations.Count(x =>
                                                                      x.SaleId == s.Id && x.SaleType == SaleType.DefferedSaleFromStock) > 0)
                                    .ToList()
                                    .Where(s => s.Sum - infoMoneys.Where(z => z.SaleId == s.Id).Sum(x => x.Sum) > 0)
                                    .Select(s => new SaleVM()
            {
                Id           = s.Id,
                Date         = s.Date.ToString("dd.MM.yyyy"),
                Sum          = infoMoneys.Where(x => x.SaleId == s.Id).Sum(x => x.Sum),
                ShopTitle    = s.Shop.Title,
                ProductTitle = saleProducts
                               .FirstOrDefault(x => x.SaleId == s.Id)?.Product.Title ?? "",
                Rest  = s.Sum - infoMoneys.Where(x => x.SaleId == s.Id).Sum(x => x.Sum),
                Total = s.Sum
            }).ToList();

            ViewBag.OpenSales = _db.Sales
                                .Where(x => x.Payment == false &&
                                       x.ShopId == user.ShopId &&
                                       _db.SaleInformations.Count(z =>
                                                                  z.SaleId == x.Id &&
                                                                  z.SaleType == SaleType.DefferedSale) > 0)
                                .OrderByDescending(x => x.Id)
                                .Select(s => new SaleVM()
            {
                Id           = s.Id,
                Date         = s.Date.ToString("dd.MM.yyyy"),
                Sum          = s.Sum,
                ProductTitle = _db.SalesProducts
                               .FirstOrDefault(x => x.SaleId == s.Id).Product.Title
            });

            ViewBag.SalePayments = _db.InfoMonies
                                   .Where(x => (x.SaleId != null || x.BookingId != null) &&
                                          x.Date.Date == DateTime.Now /*.AddHours(3)*/.Date.Date &&
                                          (x.Sale.ShopId == shop.Id || x.Booking.ShopId == shop.Id))
                                   .OrderByDescending(x => x.Id)
                                   .Select(x => new SalePaymentVM
            {
                Date       = x.Date.ToShortTimeString(),
                SaleNumber = x.SaleId == null
                        ? x.BookingId.ToString()
                        : x.SaleId.ToString(),
                MoneyWorker = x.MoneyWorker.Title,
                PaymentType = x.PaymentType == PaymentType.Cash
                        ? "Наличный"
                        : "Безналичный",
                Sum       = x.Sum.ToString(),
                SaleId    = x.SaleId,
                BookingId = x.BookingId,
                Discount  = x.SaleId == null
                        ? x.Booking.Discount
                        : x.Sale.Discount,
                ForRF = x.SaleId == null
                        ? x.Booking.forRussian
                        : x.Sale.ForRussian,

                OperationType = (x.SaleId == null)
                        ? "Бронирование"
                        : x.Sale.SaleType == SaleType.Sale
                            ? "Продажа"
                            : x.Sale.SaleType == SaleType.SaleFromStock
                                ? "Продажа со склада поставщика"
                                : x.Sale.SaleType == SaleType.DefferedSaleFromStock
                                    ? "Отложенная продажа со склада поставщика"
                                    : x.Sale.SaleType == SaleType.DefferedSale
                                        ? "Продажа с отложенным платежом"
                                        : x.Sale.SaleType == SaleType.Booking
                                            ? "Закрытое бронирование"
                                            : "Неопределено"
            })
                                   .ToList()
                                   .Select(x => new SalePaymentVM
            {
                Date          = x.Date,
                SaleNumber    = x.SaleNumber,
                MoneyWorker   = x.MoneyWorker,
                PaymentType   = x.PaymentType,
                Sum           = x.Sum,
                OperationType = x.OperationType,
                Discount      = x.Discount,
                ForRF         = x.ForRF,
                SaleProducts  = x.SaleId != null
                        ? saleProducts.Where(z => z.SaleId == x.SaleId.Value)//_saleInfoService.GetProductsBySaleId(x.SaleId.Value)
                                .Select(z => new SaleProductItemVM
                {
                    Title  = z.Product.Title,
                    Amount = z.Amount.ToString()
                }).ToList()
                        : _bookingProductInformationService.GetBookingProductByBooking(_db, x.BookingId.Value)
                                .Select(z => new SaleProductItemVM
                {
                    Title  = z.Product.Title,
                    Amount = z.Amount.ToString()
                }).ToList(),
            }).Concat(
                _db.Sales
                .Where(x => x.SaleType == SaleType.SaleFromStock &&
                       x.Date.DayOfYear == DateTime.Now /*.AddHours(3)*/.DayOfYear &&
                       x.Date.Year == DateTime.Now /*.AddHours(3)*/.Year &&
                       x.ShopId == shop.Id &&
                       _db.SaleInformations.Where(z => z.SaleId == x.Id).Count() > 0)
                .Select(x => new SalePaymentVM
            {
                Date        = x.Date.ToShortTimeString(),
                SaleNumber  = x.Id.ToString(),
                MoneyWorker = x.Shop.Title,
                PaymentType = x.CashSum > 0 && x.CashlessSum > 0
                            ? "Смешанный"
                            : x.CashSum > 0
                                ? "Наличный"
                                : "Безналичный",
                Sum = x.CashSum > 0 && x.CashlessSum > 0
                            ? x.CashSum.ToString() + " и " + x.CashlessSum.ToString()
                            : x.CashSum > 0
                                ? x.CashSum.ToString()
                                : x.CashlessSum.ToString(),
                OperationType = "Продажа со склада поставщика (не закрыта)",
                Discount      = x.Discount,
                ForRF         = x.ForRussian,
                SaleId        = x.Id
            }).ToList()
                .Select(x => new SalePaymentVM {
                Date        = x.Date,
                SaleNumber  = x.SaleNumber,
                MoneyWorker = x.PaymentType == "Смешанный"
                            ? x.MoneyWorker + " и " + _db.SaleInformations.Where(z => z.SaleId == x.SaleId).Select(z => z.MoneyWorkerForCashlessIncome.Title).FirstOrDefault()
                            : x.PaymentType == "Безналичный"
                                ? _db.SaleInformations.Where(z => z.SaleId == x.SaleId).Select(z => z.MoneyWorkerForCashlessIncome.Title).FirstOrDefault()
                                : x.MoneyWorker,
                PaymentType   = x.PaymentType,
                Sum           = x.Sum,
                OperationType = x.OperationType,
                Discount      = x.Discount,
                ForRF         = x.ForRF,
                SaleProducts  = _saleInfoService.GetProductsBySaleId(_db, x.SaleId.Value)
                                .Select(z => new SaleProductItemVM
                {
                    Title  = z.Product.Title,
                    Amount = z.Amount.ToString()
                }).ToList()
            })).OrderByDescending(x => x.Date);

            return(View());
        }