public ActionResult Index(SalesVM salesVM)
 {
     _salesManager.Add(salesVM.SalesProducts);
     salesVM.Customers = _customerManager.GetAll();
     salesVM.Products  = _productManager.GetAll();
     return(View(salesVM));
 }
Example #2
0
        public async Task <ActionResult <IEnumerable <SalesVM> > > GetSales()
        {
            List <SalesVM> salesVM = new List <SalesVM>();
            var            sales   = await _context.Sales
                                     .Include(sale => sale.Product)
                                     .Include(sale => sale.SalesPerson)
                                     .Include(sale => sale.Customer)
                                     .ToListAsync();

            foreach (Sales sale in sales)
            {
                SalesVM saleVM = new SalesVM
                {
                    Id              = sale.Id,
                    ProductName     = sale.Product.Name,
                    SalesPersonName = $"{sale.SalesPerson.FirstName} {sale.SalesPerson.LastName}",
                    CustomerName    = $"{sale.Customer.FirstName} {sale.Customer.LastName}",
                    SalesDate       = sale.SalesDate
                };

                salesVM.Add(saleVM);
            }

            return(salesVM);
        }
Example #3
0
        public IActionResult Index()
        {
            SalesVM salesVM = new SalesVM();

            salesVM.Category  = categoryService.GetActive();
            salesVM.Customers = customerService.GetActive();
            salesVM.Orders    = orderService.GetActive();
            salesVM.Product   = productService.GetActive();
            salesVM.AppUser   = appUserService.GetActive();

            return(View(salesVM));
        }
Example #4
0
        public IActionResult Sum(SalesVM model)
        {
            if (ModelState.IsValid)
            {
                decimal getCost = (from c in _context.SalesMgmt
                                   where (c.PurchaseDate.Date >= model.Start.Date && c.PurchaseDate.Date <= model.End.Date)
                                   select c.Cost).Sum();

                ViewBag.Cost = getCost;
            }

            return(View());
        }
Example #5
0
        public ActionResult YeniSatis(SalesVM p1)
        {
            TBLSATISLAR sat = new TBLSATISLAR()
            {
                KATEGORI = p1.CategoryID,
                URUN     = p1.ProductID,
                MUSTERI  = p1.CustomerID,
                FIYAT    = p1.price,
                ADET     = (byte)p1.ProductPiece,
            };

            service.salesRepository.Insert(sat);
            var urun = service.productRepository.Find((int)sat.URUN);

            urun.STOK = Convert.ToByte(Convert.ToInt32(urun.STOK) - Convert.ToInt32(sat.ADET));
            service.productRepository.Guncelle(urun);

            return(RedirectToAction("Index", "Urun"));
        }
Example #6
0
        public async Task <IActionResult> SalesHistory(long id)
        {
            try
            {
                SalesVM vm     = new SalesVM();
                User    seller = await db.Users.FindAsync(id);

                List <Sale> salesList = await db.SalesHistory.ToListAsync();

                salesList   = salesList.Where(item => item.FarmerID == seller.ID).ToList();
                vm.SaleList = salesList;
                vm.SaleList = vm.SaleList.OrderByDescending(p => p.Date).ToList();
                vm.farmerID = seller.ID;
                return(View(vm));
            }
            catch (Exception e)
            {
                return(Content(e.Message));
            }
        }
        public ActionResult MonthlySalesByDate()
        {
            int year        = Convert.ToInt32(DateTime.Today.ToString("yyyy"));
            int month       = Convert.ToInt32(DateTime.Today.ToString("MM"));
            int daysInMonth = DateTime.DaysInMonth(year, month);
            var days        = Enumerable.Range(1, daysInMonth);
            var query       = db.Sales.Where(x => x.Date.Year == year && x.Date.Month == month).OrderBy(x => x.Date).Select(g => new
            {
                Day   = g.Date.Day,
                Total = g.GrandTotal
            });
            var model = new SalesVM
            {
                Date = new DateTime(year, month, 1),
                Days = days.GroupJoin(query, d => d, q => q.Day, (d, q) => new DayTotalVM
                {
                    Day   = d,
                    Total = q.Sum(x => x.Total)
                }).ToList()
            };

            return(View(model));
        }
        public List <DayTotalVM> MonthlySalesByDate_forCharts(int yr, int mnt)
        {
            int year        = yr;
            int month       = mnt;
            int daysInMonth = DateTime.DaysInMonth(year, month);
            var days        = Enumerable.Range(1, daysInMonth);
            var query       = db.Sales.Where(x => x.Date.Year == year && x.Date.Month == month).Select(g => new
            {
                Day   = g.Date.Day,
                Total = g.GrandTotal
            });
            SalesVM model = new SalesVM
            {
                Date = new DateTime(year, month, 1),
                Days = days.GroupJoin(query, d => d, q => q.Day, (d, q) => new DayTotalVM
                {
                    Day   = d,
                    Total = q.Sum(x => x.Total)
                }).ToList()
            };

            return(model.Days.ToList());
        }
        public ActionResult MonthlySalesByDate(string _year, string _month)
        {
            //assign incoming values to the variables
            int year = 0, month = 0;

            //check if year is null
            if (string.IsNullOrWhiteSpace(_year) && _month != null)
            {
                year  = DateTime.Now.Date.Year;
                month = Convert.ToInt32(_month.Trim());
            }
            else
            {
                year  = Convert.ToInt32(_year.Trim());
                month = Convert.ToInt32(_month.Trim());
            }
            //calculate ttal number of days in a particular month for a that year
            int daysInMonth = DateTime.DaysInMonth(year, month);
            var days        = Enumerable.Range(1, daysInMonth);
            var query       = db.Sales.Where(x => x.Date.Year == year && x.Date.Month == month).OrderBy(x => x.Date.Day).Select(g => new
            {
                Day   = g.Date.Day,
                Total = g.GrandTotal
            });
            var model = new SalesVM
            {
                Date = new DateTime(year, month, 1),
                Days = days.GroupJoin(query, d => d, q => q.Day, (d, q) => new DayTotalVM
                {
                    Day   = d,
                    Total = q.Sum(x => x.Total)
                }).ToList()
            };

            return(View(model));
        }
 public async Task <WrapperSalesListVM> AddSales([FromBody] SalesVM sales)
 {
     return(await _serviceWrapper.SalesService.AddSalesAsync(sales));
 }
        // Invoice
        // Income
        // Recievable
        // Sales
        // Stock
        // StockOut
        // Transaction
        public async Task <WrapperSalesListVM> AddSalesAsync(SalesVM salesVM)
        {
            // Invoice
            Invoice invoiceToAdd = new Invoice();

            invoiceToAdd = _utilService.Mapper.Map <SalesVM, Invoice>(salesVM);
            _repositoryWrapper.Invoice.Create(invoiceToAdd);

            // Setting Up Invoice Id
            salesVM.InvoiceId = invoiceToAdd.Id;
            foreach (var item in salesVM.ItemList)
            {
                item.InvoiceId = invoiceToAdd.Id;
            }

            // Income
            Income incomeToAdd = new Income();

            incomeToAdd = this._utilService.Mapper.Map <SalesVM, Income>(salesVM);
            _repositoryWrapper.Income.Create(incomeToAdd);

            // Recievable
            Recievable recievableToAdd = new Recievable();

            recievableToAdd = _utilService.Mapper.Map <SalesVM, Recievable>(salesVM);
            _repositoryWrapper.Recievable.Create(recievableToAdd);

            // Sales
            List <Sales> listOfSalesToAdd = new List <Sales>();

            listOfSalesToAdd = _utilService.Mapper.Map <List <SalesItemVM>, List <Sales> >(salesVM.ItemList);
            _repositoryWrapper.Sales.CreateAll(listOfSalesToAdd);


            // Stock
            Stock stockToAdd = new Stock();
            IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == salesVM.FactoryId);

            for (int i = 0; i < salesVM.ItemList.Count; i++)
            {
                Stock existingStock = stockList.ToList().Where(x => x.ItemId == salesVM.ItemList[i].Item.Id && x.ItemStatusId == salesVM.ItemList[i].ItemStatus.Id).FirstOrDefault();

                if (existingStock == null)
                {
                    var getDatalistVM2 = new GetDataListVM()
                    {
                        FactoryId  = salesVM.FactoryId,
                        PageNumber = 1,
                        PageSize   = 10
                    };
                    WrapperSalesListVM dataToReturn = await GetAllSalesAsync(getDatalistVM2);

                    dataToReturn.HasMessage = true;
                    dataToReturn.Message    = "Stock Is Empty";
                    return(dataToReturn);
                    // _utilService.Log("Stock Is Empty. Not Enough Stock available");
                    // throw new StockEmptyException();
                }
                else
                {
                    if (existingStock.Quantity >= salesVM.ItemList[i].Quantity)
                    {
                        existingStock.Quantity -= salesVM.ItemList[i].Quantity;
                        _repositoryWrapper.Stock.Update(existingStock);
                    }
                    else
                    {
                        _utilService.Log("Stock Is Empty");
                        return(new WrapperSalesListVM());
                    }
                }
            }

            // StockOut
            List <StockOut> stockOutsToAdd = new List <StockOut>();

            stockOutsToAdd = _utilService.Mapper.Map <List <SalesItemVM>, List <StockOut> >(salesVM.ItemList);
            _repositoryWrapper.StockOut.CreateAll(stockOutsToAdd);


            // Transaction
            TblTransaction transactionRecieved = new TblTransaction();

            transactionRecieved                 = _utilService.Mapper.Map <SalesVM, TblTransaction>(salesVM);
            transactionRecieved.Amount          = salesVM.PaidAmount;
            transactionRecieved.PaymentStatus   = PAYMENT_STATUS.CASH_RECIEVED.ToString();
            transactionRecieved.TransactionType = TRANSACTION_TYPE.CREDIT.ToString();
            _repositoryWrapper.Transaction.Create(transactionRecieved);


            //TblTransaction transactionRecievable = new TblTransaction();
            //transactionRecievable = _utilService.Mapper.Map<SalesVM, TblTransaction>(salesVM);
            //transactionRecievable.Amount = salesVM.DueAmount;
            //transactionRecievable.PaymentStatus = PAYMENT_STATUS.CASH_RECIEVABLE.ToString();
            //transactionRecievable.TransactionType = TRANSACTION_TYPE.NOT_YET_EXECUTED.ToString();
            //transactionRecievable.TransactionId = transactionRecieved.TransactionId;
            //_repositoryWrapper.Transaction.Create(transactionRecievable);

            Task <int> Invoice     = _repositoryWrapper.Invoice.SaveChangesAsync();
            Task <int> Income      = _repositoryWrapper.Income.SaveChangesAsync();
            Task <int> Recievable  = _repositoryWrapper.Recievable.SaveChangesAsync();
            Task <int> Sales       = _repositoryWrapper.Sales.SaveChangesAsync();
            Task <int> Stock       = _repositoryWrapper.Stock.SaveChangesAsync();
            Task <int> StockOut    = _repositoryWrapper.StockOut.SaveChangesAsync();
            Task <int> Transaction = _repositoryWrapper.Transaction.SaveChangesAsync();
            await Task.WhenAll(Invoice, Income, Recievable, Sales, Stock, StockOut, Transaction);



            var getDatalistVM = new GetDataListVM()
            {
                FactoryId  = salesVM.FactoryId,
                PageNumber = 1,
                PageSize   = 10
            };


            return(await GetAllSalesAsync(getDatalistVM));
        }
        // Invoice
        // Income
        // Recievable
        // Sales
        // Stock
        // StockOut
        // Transaction
        public async Task <WrapperSalesListVM> DeleteSalesAsync(SalesVM vm)
        {
            Task <List <Invoice> > invoiceToDelete = _repositoryWrapper
                                                     .Invoice
                                                     .FindAll()
                                                     .Where(x => x.Id == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                     .ToListAsync();
            Task <List <Income> > incomeToDelete = _repositoryWrapper
                                                   .Income
                                                   .FindAll()
                                                   .Where(x => x.InvoiceId == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                   .ToListAsync();
            Task <List <Recievable> > recievableToDelete = _repositoryWrapper
                                                           .Recievable
                                                           .FindAll()
                                                           .Where(x => x.InvoiceId == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                           .ToListAsync();
            Task <List <Sales> > salesToDelete = _repositoryWrapper
                                                 .Sales
                                                 .FindAll()
                                                 .Where(x => x.InvoiceId == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                 .ToListAsync();

            await Task.WhenAll(invoiceToDelete, incomeToDelete, recievableToDelete, salesToDelete);

            // Stock
            IEnumerable <Stock> stockList = await _repositoryWrapper
                                            .Stock
                                            .FindByConditionAsync(
                x => x.FactoryId == vm.FactoryId);

            //&& salesToDelete
            //.Result
            //.ToList()
            //.FirstOrDefault(d => d.ItemId == x.ItemId) != null);

            for (int i = 0; i < salesToDelete.Result.Count(); i++)
            {
                Sales sales         = salesToDelete.Result.ElementAt(i);
                Stock existingStock = stockList.Where(x => x.ItemId == sales.ItemId).FirstOrDefault();

                if (existingStock == null)
                {
                    // _utilService.Log("Stock Is Empty. Not Enough Stock available");
                    // throw new StockEmptyException();
                }
                else
                {
                    existingStock.Quantity += sales.Quantity;
                    _repositoryWrapper.Stock.Update(existingStock);
                }
            }


            Task <List <StockOut> > stockOutToDelete = _repositoryWrapper
                                                       .StockOut
                                                       .FindAll()
                                                       .Where(x => x.InvoiceId == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                       .ToListAsync();

            Task <List <TblTransaction> > transactionToDelete = _repositoryWrapper
                                                                .Transaction
                                                                .FindAll()
                                                                .Where(x => x.InvoiceId == vm.InvoiceId && x.FactoryId == vm.FactoryId)
                                                                .ToListAsync();



            _repositoryWrapper.Invoice.DeleteAll(invoiceToDelete.Result.ToList());
            _repositoryWrapper.Income.DeleteAll(incomeToDelete.Result.ToList());
            _repositoryWrapper.Recievable.DeleteAll(recievableToDelete.Result.ToList());
            _repositoryWrapper.Sales.DeleteAll(salesToDelete.Result.ToList());
            _repositoryWrapper.StockOut.DeleteAll(stockOutToDelete.Result.ToList());
            _repositoryWrapper.Transaction.DeleteAll(transactionToDelete.Result.ToList());



            Task <int> Invoice        = _repositoryWrapper.Invoice.SaveChangesAsync();
            Task <int> Income         = _repositoryWrapper.Income.SaveChangesAsync();
            Task <int> Recievable     = _repositoryWrapper.Recievable.SaveChangesAsync();
            Task <int> Sales          = _repositoryWrapper.Sales.SaveChangesAsync();
            Task <int> StockOut       = _repositoryWrapper.StockOut.SaveChangesAsync();
            Task <int> TblTransaction = _repositoryWrapper.Transaction.SaveChangesAsync();
            Task <int> Stock          = _repositoryWrapper.Stock.SaveChangesAsync();

            await Task.WhenAll(Invoice, Income, Recievable, Sales, StockOut, TblTransaction, Stock);


            var getDatalistVM = new GetDataListVM()
            {
                FactoryId  = vm.FactoryId,
                PageNumber = 1,
                PageSize   = 10
            };


            return(await GetAllSalesAsync(getDatalistVM));
        }