public void FinaliseStocktake(Stocktake st)
        {
            st.TransactionTime = DateTime.Now;
            DBRepository.SaveStocktake(st);

            //Replicate to HODB using WCF service in a TPL task
            UploadStocktake(st);
        }
 private void UploadStocktake(Stocktake st)
 {
     Task taskA = Task.Factory.StartNew(() =>
     {
         PosWebService.PosWebServiceClient client = new PosWebService.PosWebServiceClient();
         client.UploadStocktake(st);
     });
 }
        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();
            }
        }
示例#4
0
 public void UploadStocktake(Stocktake stocktake)
 {
     DBRepository.SaveStocktake(stocktake);
 }
 public ActionResult FinaliseStocktake(Stocktake st)
 {
     stm.FinaliseStocktake(st);
     return(View("Index", stm));
 }