/// <summary>
        /// It is for such situation that deponds on whether or no stock item
        /// </summary>
        /// <param name="invoiceItem"></param>
        /// <param name="stockitem"></param>
        /// <param name="dif"></param>
        /// <returns></returns>
        private ActionResult DoBaseOnDiffer(InvoiceItem invoiceItem, DomainModel.Order.StockItem stockitem, int dif)
        {
            if (dif > 0)
            {
                //if ((stockitem.Quantity - dif) > 0)
                //{
                db.SaveChanges();
                stockitem.Quantity       -= dif;
                db.Entry(stockitem).State = EntityState.Modified;
                db.SaveChanges();

                TempData["message"] = "ویرایش انجام شد";
                TempData["success"] = "true";

                return(Json(new { success = true }));
                //}
                //else
                //{
                //    TempData["message"] = "موجودی منفی می شود.ویرایش لغو شد";
                //    TempData["success"] = "false";

                //    return Json(new { success = true });

                //}
            }
            else
            {
                InsertNewInvoiceItem(dif, stockitem);
                TempData["message"] = "ویرایش انجام شد";
                TempData["success"] = "true";

                return(Json(new { success = true }));
            }
        }
 public ActionResult DeleteConfirmed(int id)
 {
     DomainModel.Order.StockItem stockItem = db.StockItems.Find(id);
     db.StockItems.Remove(stockItem);
     db.SaveChanges();
     return(RedirectToAction("Index"));
 }
 /// <summary>
 /// pass the invoice item and stock item to update them
 /// </summary>
 /// <param name="invoiceItem"></param>
 /// <param name="stockitem"></param>
 /// <exception cref="adsfasd"></exception>
 private void InsertNewInvoiceItem(int dif, DomainModel.Order.StockItem stockitem)
 {
     TempData["message"] = dif.ToString();
     TempData["success"] = true;
     stockitem.Quantity -= dif;
     db.SaveChanges();
     db.Entry(stockitem).State = EntityState.Modified;
     db.SaveChanges();
 }
 public ActionResult Edit([Bind(Include = "Id,Quantity,Price,ProductId")] DomainModel.Order.StockItem stockItem)
 {
     if (ModelState.IsValid)
     {
         db.Entry(stockItem).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ProductId = new SelectList(db.Products, "Id", "Name", stockItem.ProductId);
     return(View(stockItem));
 }
 // GET: StockItems/Details/5
 public ActionResult Details(int?id)
 {
     if (id == null)
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
     DomainModel.Order.StockItem stockItem = db.StockItems.Find(id);
     if (stockItem == null)
     {
         return(HttpNotFound());
     }
     return(View(stockItem));
 }
 // GET: StockItems/Edit/5
 public ActionResult Edit(int?id)
 {
     if (id == null)
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
     DomainModel.Order.StockItem stockItem = db.StockItems.Find(id);
     if (stockItem == null)
     {
         return(HttpNotFound());
     }
     ViewBag.ProductId = new SelectList(db.Products, "Id", "Name", stockItem.ProductId);
     return(View(stockItem));
 }
        private void RollbackStockItem(InvoiceItem invoiceItem)
        {
            int i  = int.Parse(Session["productId"].ToString());
            var st = db.StockItems
                     .Where(s => s.ProductId == i)
                     .FirstOrDefault();

            st.Quantity += int.Parse(Session["quantity"].ToString());

            //update the invoice item
            db.SaveChanges();

            //roll back the quantity of stock item
            db.Entry(st).State = EntityState.Modified;
            db.SaveChanges();

            //کسر از موجودی بر اساس آیتم فعلی
            var stockItem = db.StockItems
                            .Where(x => x.ProductId == invoiceItem.ProductId).FirstOrDefault();

            if (stockItem != null)
            {
                stockItem.Quantity       -= invoiceItem.Quantity;
                db.Entry(stockItem).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                DomainModel.Order.StockItem stItme = new DomainModel.Order.StockItem()
                {
                    Price     = invoiceItem.Price,
                    ProductId = invoiceItem.ProductId,
                    Quantity  = invoiceItem.Quantity
                };
                db.StockItems.Add(stItme);
                db.SaveChanges();
            }
        }
        public ActionResult Create(DomainModel.Order.StockItem stockItem, FormCollection collection)
        {
            ViewBag.ProductCategoryId = new SelectList(db.ProductCategories, "Id", "Name");

            GetPeriod();
            GetStock();

            #region Save and contunue
            if (Request.Form["btnContinue"] != null && ModelState.IsValid)
            {
                //stockItem.StockId = int.Parse(Session["StockId"].ToString());
                db.StockItems.Add(stockItem);
                db.SaveChanges();

                ViewBag.Info = stockItem.Quantity + "-" + stockItem.Id;

                //update the product to increase quantity,if there is
                Product prd = db.Products.Where(p => p.Id == stockItem.ProductId).First();
                if (prd != null)
                {
                    prd.QuantityPerUnit += stockItem.Quantity;
                    db.Entry(prd).State  = EntityState.Modified;
                    db.SaveChanges();
                }
                else
                {
                    //create a new product
                    Product prdNew = new Product()
                    {
                        //Price = stockItem.Price.ToString(),
                        //QuantityPerUnit = stockItem.Quantity,
                        //ProductCategoryId = stockItem.ProductCategoryId,
                        ManufacturerId = db.Manufacturers.Select(x => x.Id).First()
                    };
                    db.Products.Add(prdNew);
                    db.SaveChanges();
                }
                return(View());
            }
            #endregion

            #region Save
            if (Request.Form["btnSave"] != null)
            {
                //stockItem.StockId = int.Parse(Session["StockId"].ToString());
                db.StockItems.Add(stockItem);
                db.SaveChanges();

                Product prd = db.Products.Find(stockItem.ProductId);
                prd.QuantityPerUnit += stockItem.Quantity;
                db.Entry(prd).State  = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Edit", "SaleSlips", new { Id = int.Parse(Session["StockId"].ToString()) }));
            }
            #endregion

            if (Request.Form["cancel"] != null)
            {
                return(RedirectToAction("Index"));
            }

            return(View());
        }
 private void DoSctockItem(InvoiceItem invoiceItem, DomainModel.Order.StockItem stockitem)
 {
     stockitem.Quantity       -= invoiceItem.Quantity;
     db.Entry(stockitem).State = EntityState.Modified;
     db.SaveChanges();
 }