public static void SaveGrn(Grn grn)
        {
            using (RetailDbContext retailDbContext = new RetailDbContext())
            {
                retailDbContext.Grns.Add(grn);
                retailDbContext.SaveChanges(); //This will give us a unique GrnID

                //QtyOnHand change
                foreach (Grnline gl in grn.Grnlines)
                {
                    StoreProduct storeProduct = retailDbContext.StoreProducts.ToList().SingleOrDefault <StoreProduct>(x => (x.ProductID == gl.ProductID) && (x.StoreID == grn.StoreID));
                    if (storeProduct == null)
                    {
                        storeProduct            = new StoreProduct();
                        storeProduct.ProductID  = gl.ProductID;
                        storeProduct.StoreID    = grn.StoreID;
                        storeProduct.QtyOnHand += gl.Quantity;
                        retailDbContext.StoreProducts.Add(storeProduct);
                    }
                    else
                    {
                        storeProduct.QtyOnHand += gl.Quantity;
                    }

                    StoreProductTran storeProductTran = new StoreProductTran();
                    storeProductTran.ProductID     = storeProduct.ProductID;
                    storeProductTran.DocumentType  = "G";
                    storeProductTran.DocumentID    = grn.GrnID;
                    storeProductTran.Quantity      = gl.Quantity;
                    storeProductTran.EffectiveTime = grn.TransactionTime;
                    retailDbContext.StoreProductTrans.Add(storeProductTran);
                }
                retailDbContext.SaveChanges();
            }
        }
        public static void SaveSale(Sale sale)
        {
            using (RetailDbContext retailDbContext = new RetailDbContext())
            {
                retailDbContext.Sales.Add(sale);
                retailDbContext.SaveChanges(); //This will give us a unique SaleID

                //QtyOnHand change
                foreach (Saleline sl in sale.Salelines)
                {
                    StoreProduct storeProduct = retailDbContext.StoreProducts.ToList().SingleOrDefault <StoreProduct>(x => (x.ProductID == sl.ProductID) && (x.StoreID == sale.StoreID));
                    if (storeProduct == null)
                    {
                        storeProduct            = new StoreProduct();
                        storeProduct.ProductID  = sl.ProductID;
                        storeProduct.StoreID    = sale.StoreID;
                        storeProduct.QtyOnHand -= sl.Quantity;
                        retailDbContext.StoreProducts.Add(storeProduct);
                    }
                    else
                    {
                        storeProduct.QtyOnHand -= sl.Quantity;
                    }

                    StoreProductTran storeProductTran = new StoreProductTran();
                    storeProductTran.ProductID     = storeProduct.ProductID;
                    storeProductTran.DocumentType  = "S";
                    storeProductTran.DocumentID    = sale.SaleID;
                    storeProductTran.Quantity      = sl.Quantity;
                    storeProductTran.EffectiveTime = sale.TransactionTime;
                    retailDbContext.StoreProductTrans.Add(storeProductTran);
                }
                retailDbContext.SaveChanges();
            }
        }
 public static void SaveProduct(Product product)
 {
     using (RetailDbContext retailDbContext = new RetailDbContext())
     {
         retailDbContext.Products.Add(product);
         retailDbContext.SaveChanges();
     }
 }
        public static void SaveStocktake(Stocktake st)
        {
            using (RetailDbContext retailDbContext = new RetailDbContext())
            {
                retailDbContext.Stocktakes.Add(st);
                retailDbContext.SaveChanges(); //This will give us a unique StocktakeID

                //QtyOnHand change
                foreach (Stocktakeline stl in st.Stocktakelines)
                {
                    int          QtyBefore    = 0;
                    StoreProduct storeProduct = retailDbContext.StoreProducts.ToList().SingleOrDefault <StoreProduct>(x => (x.ProductID == stl.ProductID) && (x.StoreID == st.StoreID));
                    if (storeProduct == null)
                    {
                        storeProduct           = new StoreProduct();
                        storeProduct.ProductID = stl.ProductID;
                        storeProduct.StoreID   = st.StoreID;
                        storeProduct.QtyOnHand = stl.CountedQty;
                        retailDbContext.StoreProducts.Add(storeProduct);
                    }
                    else
                    {
                        QtyBefore = storeProduct.QtyOnHand;
                        storeProduct.QtyOnHand = stl.CountedQty;
                    }

                    //QtyOnHand change history
                    StoreProductTran storeProductTran = new StoreProductTran();
                    storeProductTran.ProductID     = storeProduct.ProductID;
                    storeProductTran.DocumentType  = "A";
                    storeProductTran.DocumentID    = st.StocktakeID;
                    storeProductTran.Quantity      = stl.CountedQty - QtyBefore;
                    storeProductTran.EffectiveTime = st.TransactionTime;
                    retailDbContext.StoreProductTrans.Add(storeProductTran);
                }
                retailDbContext.SaveChanges();
            }
        }