Esempio n. 1
0
        public ActionResult Create(TransactionRowViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                using (var ctx = new SalesDbContext())
                {
                    var transact = new Transaction()
                    {
                        PayMethod = viewModel.Payment,
                        Sales     = viewModel.SalesList
                    };

                    foreach (Sale s in viewModel.SalesList)
                    {
                        ProductLog.GenerateSaleLog(ctx, s.Product, s.QTY);
                        s.Update();
                    }

                    transact.Update();

                    ctx.Transactions.Add(transact);
                    ctx.SaveChanges();

                    return(RedirectToAction("Read", new { id = transact.ID }));
                }
            }

            return(View(viewModel));
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Read(Guid?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }
            using (var ctx = new SalesDbContext())
            {
                var txn = ctx.Transactions.Include("Sales").Where(t => t.ID == id).FirstOrDefault();

                if (txn != null)
                {
                    var viewModel = new TransactionRowViewModel()
                    {
                        TransactionId = txn.ID,
                        SalesList     = txn.Sales.ToList()
                    };

                    return(View(viewModel));
                }
            }

            return(View(new TransactionRowViewModel()
            {
                TransactionId = Guid.Empty,
                SalesList = new List <Sale>()
            }));
        }
Esempio n. 3
0
        /// <summary>
        /// Create a transaction with items that are being negated from another transaction.
        /// </summary>
        /// <param name="sales">List of Sales to be negated</param>
        /// <returns></returns>
        public ActionResult Return(TransactionRowViewModel t)
        {
            using (var ctx = new SalesDbContext())
            {
                for (int i = 0; i < t.SalesList.Count; i++)
                {
                    if (t.SalesList.ElementAt(i).Void == false)
                    {
                        t.SalesList.RemoveAt(i--);
                    }
                    else
                    {
                        Guid g = t.SalesList.ElementAt(i).ID;
                        Sale s = ctx.Sales.Where(m => m.ID == g).FirstOrDefault();
                        t.SalesList[i] = s;
                        t.SalesList.ElementAt(i).QTY *= -1;
                        t.SalesList.ElementAt(i).Void = true;
                    }
                }
            }

            return(View(t));
        }
Esempio n. 4
0
        public ActionResult Edit(TransactionRowViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                using (var ctx = new SalesDbContext())
                {
                    var oldTransaction = ctx.Transactions.Include("Sales").Where(t => t.ID == viewModel.TransactionId).FirstOrDefault();

                    if (oldTransaction != null)
                    {
                        foreach (var item in viewModel.SalesList)
                        {
                            var oldSale = oldTransaction.Sales.Where(x => x.ID == item.ID).FirstOrDefault();

                            //ADD NEW SALE
                            if (oldSale == null)
                            {
                                oldSale = new Sale();
                                oldTransaction.Sales.Add(oldSale);
                                oldTransaction.Update();
                            }

                            //OVERWRITE SALE

                            //CHECK IF SAME PRODUCT
                            if (oldSale.ProductID == item.ProductID)
                            {
                                //LOG CHANGE IN PRODUCT COUNT
                                oldSale.Product = ctx.Products.Where(y => y.ID == item.ProductID).FirstOrDefault();
                                Decimal qtyChanged = oldSale.QTY - item.QTY;

                                oldSale.Product.QTY += qtyChanged;
                                oldSale.Product.Update();

                                ProductLog.GenerateSaleLog(ctx, item.Product, qtyChanged);
                            }
                            else
                            {
                                oldSale.Product = ctx.Products.Where(y => y.ID == item.ProductID).FirstOrDefault();
                                //RETURN ALL OF OLD

                                oldSale.Product.QTY += oldSale.QTY;
                                oldSale.Product.Update();

                                ProductLog.GenerateSaleLog(ctx, item.Product, -oldSale.QTY); //FIX THIS!!

                                //DETUCT ALL OF NEW
                                item.Product         = ctx.Products.Where(z => z.ID == item.ProductID).FirstOrDefault();
                                oldSale.Product      = item.Product;
                                oldSale.Product.QTY -= item.QTY;
                                oldSale.Product.Update();

                                ProductLog.GenerateSaleLog(ctx, item.Product, item.QTY); //FIX THIS!
                            }

                            oldSale.GST       = item.GST;
                            oldSale.Price     = item.Price;
                            oldSale.ProductID = item.ProductID;

                            oldSale.QTY = item.QTY;

                            oldSale.Update();
                        }

                        ctx.SaveChanges();

                        return(RedirectToAction("Read", new { id = viewModel.TransactionId }));
                    }
                    else
                    {
                        ModelState.AddModelError("Not Found", "ID was not found");
                    }
                }
            }

            return(View(viewModel));
        }