//進貨單
        public ActionResult 進貨單建立()
        {
            MotaiDataEntities dbContext = new MotaiDataEntities();

            if (Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] != null)
            {
                StockCreateViewModel model  = new StockCreateViewModel();
                StockDetailViewModel detail = new StockDetailViewModel();
                tEmployee            emp    = Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] as tEmployee;
                model.sEmployeeId = emp.EmployeeId;
                var productNames = productRespoitory.GetNameAll();
                List <SelectListItem> productlist = productRespoitory.GetPositionName(productNames);
                var warehouseNames = commodityRespoitory.GetWarehouseAll();
                List <SelectListItem> warehouselist = commodityRespoitory.GetSelectList(warehouseNames);
                detail.WareHouseNames = warehouselist;
                detail.ProductNames   = productlist;
                DateTime today = DateTime.Now.Date;
                var      count = dbContext.tStockLists.Where(s => s.sStockDate == today).ToList().Count;
                count++;
                model.sStockSerialValue = Convert.ToInt32(DateTime.Now.ToString("yyMMdd") + count.ToString("0000"));
                model.StockDetail       = detail;
                model.sStockDate        = DateTime.Now;
                return(View(model));
            }
            else
            {
                return(RedirectToAction("員工登入", "Employee"));
            }
        }
Beispiel #2
0
        public JsonResult TakeOutData(StockDetailViewModel model, bool takeoutFlag)
        {
            MSGReturnModel <bool> result = new MSGReturnModel <bool>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (Cache.IsSet(CacheList.StockMainData))
            {
                var tempData       = (List <StockDetailViewModel>)Cache.Get(CacheList.StockMainData);
                var updateTempData = tempData.FirstOrDefault(x => x.vTreaBatchNo == model.vTreaBatchNo);
                if (updateTempData != null)
                {
                    if (takeoutFlag)
                    {
                        updateTempData.vStatus = Ref.AccessInventoryType._4.GetDescription();
                    }
                    else
                    {
                        updateTempData.vStatus = Ref.AccessInventoryType._1.GetDescription();
                    }
                    updateTempData.vTakeoutFlag = takeoutFlag;
                    Cache.Invalidate(CacheList.StockMainData);
                    Cache.Set(CacheList.StockMainData, tempData);
                    result.RETURN_FLAG = true;
                    result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription();
                    result.Datas       = tempData.Any(x => x.vTakeoutFlag);
                }
                else
                {
                    result.RETURN_FLAG = false;
                    result.DESCRIPTION = Ref.MessageType.update_Fail.GetDescription();
                }
            }
            return(Json(result));
        }
Beispiel #3
0
        public JsonResult DeleteTempData(StockDetailViewModel model)
        {
            MSGReturnModel <bool> result = new MSGReturnModel <bool>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (Cache.IsSet(CacheList.StockTempData) && Cache.IsSet(CacheList.TreasuryAccessViewData))
            {
                var data           = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                var tempData       = (List <StockDetailViewModel>)Cache.Get(CacheList.StockTempData);
                var deleteTempData = tempData.FirstOrDefault(x => x.vItemId == model.vItemId);
                if (deleteTempData != null)
                {
                    tempData.Remove(deleteTempData);
                    Cache.Invalidate(CacheList.StockTempData);
                    Cache.Set(CacheList.StockTempData, tempData);
                    result.RETURN_FLAG = true;
                    result.DESCRIPTION = Ref.MessageType.delete_Success.GetDescription();
                    result.Datas       = tempData.Any();
                }
                else
                {
                    result.RETURN_FLAG = false;
                    result.DESCRIPTION = Ref.MessageType.delete_Fail.GetDescription();
                }
            }
            return(Json(result));
        }
 public StockDetailPage()
 {
     if (Application.Current.Properties.ContainsKey("Key"))
     {
         InitializeComponent();
         BindingContext     = new StockDetailViewModel();
         MsgResul.IsVisible = false;
     }
     else
     {
         Navigation.PushModalAsync(new MainPage());
     }
 }
        public string createStockDetail(StockDetailViewModel stockDetail)
        {
            if (Session[CSession關鍵字.SK_STOCKDETAIL] == null)
            {
                List <StockDetailViewModel> stocks = new List <StockDetailViewModel>();
                stocks.Add(stockDetail);
                Session[CSession關鍵字.SK_STOCKDETAIL] = stocks;
            }
            else
            {
                List <StockDetailViewModel> stocks = Session[CSession關鍵字.SK_STOCKDETAIL] as List <StockDetailViewModel>;
                stocks.Add(stockDetail);
                Session[CSession關鍵字.SK_STOCKDETAIL] = stocks;
            }
            MotaiDataEntities dbContext = new MotaiDataEntities();

            stockDetail.ProductName   = dbContext.tProducts.Where(s => s.ProductId.Equals(stockDetail.sProductId)).FirstOrDefault().pName;
            stockDetail.WareHouseName = dbContext.tWarehouseNames.Where(w => w.WarehouseNameId.Equals(stockDetail.sWarehouseNameId)).FirstOrDefault().WarehouseName;

            string data = "<tr><td scope='row'>";

            if (stockDetail.sNote != null)
            {
                data += stockDetail.ProductName.ToString() + "</td><td>";
                data += stockDetail.sCost.ToString() + "</td><td>";
                data += stockDetail.sQuantity.ToString() + "</td><td>";
                data += stockDetail.WareHouseName.ToString() + "</td><td>";
                if (stockDetail.sNote.Length > 10)
                {
                    for (int i = 0; i < stockDetail.sNote.Length / 10; i++)
                    {
                        data += stockDetail.sNote.Substring(i * 10, 10) + "<br>";
                    }
                    data += "</td>";
                }
                else
                {
                    data += stockDetail.sNote.ToString() + "</td>";
                }
            }
            else
            {
                data += stockDetail.ProductName.ToString() + "</td><td>";
                data += stockDetail.sCost.ToString() + "</td><td>";
                data += stockDetail.sQuantity.ToString() + "</td><td>";
                data += stockDetail.WareHouseName.ToString() + "</td><td>";
                data += "</td>";
            }
            return(data);
        }
Beispiel #6
0
        public void QueryStockDetail(string palletCode)
        {
            ViewDataManager.STOCKQUERYDATAVIEWDATA.StockDetailList.Clear();
            List <View_StockListModel> stockList = bllViewStockList.GetModelListByPalletCode(palletCode);

            foreach (View_StockListModel stockDetail in stockList)
            {
                StockDetailViewModel sdm = new StockDetailViewModel();
                sdm.托盘条码 = stockDetail.Stock_Tray_Barcode;
                sdm.物料编码 = stockDetail.Goods_Code;
                sdm.物料个数 = stockDetail.Stock_List_Quantity;
                sdm.物料类别 = stockDetail.Goods_Class_Name;
                sdm.物料名称 = stockDetail.Goods_Name;
                ViewDataManager.STOCKQUERYDATAVIEWDATA.StockDetailList.Add(sdm);
            }
        }
 //進貨單
 public ActionResult 進貨單建立()
 {
     if (Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] != null)
     {
         StockCreateViewModel model  = new StockCreateViewModel();
         StockDetailViewModel detail = new StockDetailViewModel();
         tEmployee            emp    = Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] as tEmployee;
         model.sEmployeeId = emp.EmployeeId;
         var productNames = productRespoitory.GetNameAll();
         List <SelectListItem> productlist = productRespoitory.GetSelectList(productNames);
         var warehouseNames = commodityRespoitory.GetWarehouseAll();
         List <SelectListItem> warehouselist = commodityRespoitory.GetSelectList(warehouseNames);
         detail.WareHouseNames = warehouselist;
         detail.ProductNames   = productlist;
         model.StockDetail     = detail;
         return(View(model));
     }
     return(RedirectToAction("員工登入", "Employee"));
 }
Beispiel #8
0
        public JsonResult InsertTempData(StockDetailViewModel model)
        {
            MSGReturnModel <string> result = new MSGReturnModel <string>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (Cache.IsSet(CacheList.StockTempData) && Cache.IsSet(CacheList.TreasuryAccessViewData))
            {
                var data     = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                var tempData = (List <StockDetailViewModel>)Cache.Get(CacheList.StockTempData);
                model.vStatus = Ref.AccessInventoryType._3.GetDescription();
                tempData.Add(model);
                Cache.Invalidate(CacheList.StockTempData);
                Cache.Set(CacheList.StockTempData, tempData);
                result.RETURN_FLAG = true;
                result.DESCRIPTION = Ref.MessageType.insert_Success.GetDescription();
            }
            return(Json(result));
        }
Beispiel #9
0
        public JsonResult UpdateTempData(StockDetailViewModel model)
        {
            MSGReturnModel <string> result = new MSGReturnModel <string>();

            result.RETURN_FLAG = false;
            result.DESCRIPTION = Ref.MessageType.login_Time_Out.GetDescription();
            if (Cache.IsSet(CacheList.StockTempData) && Cache.IsSet(CacheList.TreasuryAccessViewData))
            {
                var data           = (TreasuryAccessViewModel)Cache.Get(CacheList.TreasuryAccessViewData);
                var tempData       = (List <StockDetailViewModel>)Cache.Get(CacheList.StockTempData);
                var updateTempData = tempData.FirstOrDefault(x => x.vItemId == model.vItemId);
                if (updateTempData != null)
                {
                    updateTempData.vStockType               = model.vStockType;
                    updateTempData.vStockNoPreamble         = model.vStockNoPreamble;
                    updateTempData.vStockNoB                = model.vStockNoB;
                    updateTempData.vStockNoE                = model.vStockNoE;
                    updateTempData.vStockTotal              = model.vStockTotal;
                    updateTempData.vAmount_Per_Share        = model.vAmount_Per_Share;
                    updateTempData.vSingle_Number_Of_Shares = model.vSingle_Number_Of_Shares;
                    updateTempData.vDenomination            = model.vDenomination;
                    updateTempData.vDenominationTotal       = model.vDenominationTotal;
                    updateTempData.vNumberOfShares          = model.vNumberOfShares;
                    updateTempData.vMemo = model.vMemo;
                    Cache.Invalidate(CacheList.StockTempData);
                    Cache.Set(CacheList.StockTempData, tempData);
                    result.RETURN_FLAG = true;
                    result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription();
                }
                else
                {
                    result.RETURN_FLAG = false;
                    result.DESCRIPTION = Ref.MessageType.update_Fail.GetDescription();
                }
            }
            return(Json(result));
        }
Beispiel #10
0
        //To get all current products in warehouse
        public ActionResult ProductInStock(SearchingStockViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            var DeNote = _note.Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => ((!model.WarehouseId.HasValue) || x.Source.Id == model.WarehouseId) &&
                                                                                                x.Delete.Equals(false) &&
                                                                                                ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                ((!model.End.HasValue) || x.CreatedDate <= model.End)
                                                                                                ).Select(x => new NoteViewModel()
            {
                Id = x.Id,
                SourceWarehouse = x.Source.Name,
                Details         = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            });

            var ReNote = _note.Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => ((!model.WarehouseId.HasValue) || x.Destination.Id == model.WarehouseId) &&
                                                                                                x.Delete.Equals(false) &&
                                                                                                ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                ((!model.End.HasValue) || x.CreatedDate <= model.End)
                                                                                                ).Select(x => new NoteViewModel()
            {
                Id = x.Id,
                DestinationWarehouse = x.Destination.Name,
                Details = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            });
            var ReDetails = new List <StockViewModel>();
            var DeDetails = new List <StockViewModel>();

            foreach (var item in DeNote)
            {
                foreach (var smallitem in item.Details)
                {
                    DeDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.SourceWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            }
            foreach (var item in ReNote)
            {
                foreach (var smallitem in item.Details)
                {
                    ReDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.DestinationWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            }
            var filterDeNote = DeDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            });
            var filterReNote = ReDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            });
            var currentStorage = new List <StockGroupViewModel>();

            foreach (var item in filterReNote)
            {
                var currentStorageItem = new StockGroupViewModel();

                currentStorageItem.Warehouse = item.warehouse;

                if (filterDeNote.Where(x => x.warehouse == item.warehouse).Any())
                {
                    var gooditem = filterDeNote.Where(x => x.warehouse == item.warehouse).FirstOrDefault();
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        if (gooditem.listItem.Where(t => t.productname == smallitem.productname).Any())
                        {
                            var caughtDetail = gooditem.listItem.Where(t => t.productname == smallitem.productname).FirstOrDefault();
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity - caughtDetail.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                        else
                        {
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                    }
                    currentStorage.Add(currentStorageItem);
                }
                else
                {
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        detailItem.ProductName = smallitem.productname;
                        detailItem.Quantity    = smallitem.quantity;
                        currentStorageItem.StockList.Add(detailItem);
                    }
                    currentStorage.Add(currentStorageItem);
                }
            }
            return(Json(currentStorage, JsonRequestBehavior.AllowGet));
        }
Beispiel #11
0
        public ActionResult getSLNhap(SearchingStockViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            var DsXuatNhap = new List <XuatNhapItem>();

            var tonDauModel = new SearchingStockViewModel();

            if (model.Start != null && model.End != null)
            {
                tonDauModel.End = model.Start.Value.AddDays(-1);
            }
            else if (model.Start == null && model.End == null)
            {
                tonDauModel.End = new DateTime(1, 1, 1);
                model.End       = DateTime.Now.Date;
                model.Start     = new DateTime(1, 1, 1);
            }
            DsXuatNhap = _note.GetSlNhapXuat(model).ToList();
            tonDauModel.WarehouseId = model.WarehouseId;
            var DsTonDau = new List <StockGroupViewModel>();

            DsTonDau = _note.GetProductInStock(tonDauModel).ToList();
            if (DsTonDau.Count() == 0 && DsXuatNhap.Count() != 0)
            {
                var item  = DsXuatNhap.FirstOrDefault();
                var list1 = new StockGroupViewModel();
                var list  = new StockDetailViewModel();
                list1.Warehouse     = _warehouse.Queryable().Where(x => x.Id == model.WarehouseId).Select(x => x.Name).FirstOrDefault();
                list.ProductName    = item.ProductName;
                list.Quantity       = 0;
                list.OpeningStock   = 0;
                list.ClosingStock   = item.ImQuantity - item.ExQuantity;
                list.ExportQuantity = item.ExQuantity;
                list.ImportQuantity = item.ImQuantity;
                list1.StockList.Add(list);
                DsTonDau.Add(list1);
            }
            if (DsTonDau.Count() != 0 && DsXuatNhap.Count() != 0)
            {
                foreach (var item in DsTonDau.FirstOrDefault().StockList.ToList())
                {
                    var check = DsXuatNhap.FirstOrDefault(x => x.ProductName == item.ProductName);
                    if (check == null)
                    {
                        var list = new XuatNhapItem();
                        list.ProductName = item.ProductName;
                        list.ImQuantity  = 0;
                        list.ExQuantity  = 0;
                        DsXuatNhap.Add(list);
                    }
                }

                foreach (var item in DsTonDau.FirstOrDefault().StockList.ToList())
                {
                    foreach (var item1 in DsXuatNhap)
                    {
                        if (item1.ProductName == item.ProductName)
                        {
                            item.OpeningStock   = item.Quantity;
                            item.ExportQuantity = item1.ExQuantity;
                            item.ImportQuantity = item1.ImQuantity;
                            item.ClosingStock   = item.OpeningStock + item1.ImQuantity - item1.ExQuantity;
                        }
                        var check = DsTonDau.FirstOrDefault().StockList.FirstOrDefault(x => x.ProductName == item1.ProductName);
                        if (check == null)
                        {
                            var list = new StockDetailViewModel();
                            list.ProductName    = item1.ProductName;
                            list.OpeningStock   = 0;
                            list.ClosingStock   = item1.ImQuantity - item1.ExQuantity;
                            list.ExportQuantity = item1.ExQuantity;
                            list.ImportQuantity = item1.ImQuantity;
                            list.Quantity       = 0;
                            DsTonDau.FirstOrDefault().StockList.Add(list);
                        }
                    }
                }
            }
            else if (DsTonDau.Count() != 0 && DsXuatNhap.Count() == 0)
            {
                foreach (var item in DsTonDau.FirstOrDefault().StockList)
                {
                    item.Quantity       = item.Quantity;
                    item.ClosingStock   = item.Quantity;
                    item.ImportQuantity = 0;
                    item.ExportQuantity = 0;
                    item.OpeningStock   = item.Quantity;
                }
            }


            return(Json(DsTonDau, JsonRequestBehavior.AllowGet));
        }
Beispiel #12
0
        public ActionResult CheckProductInStock(NoteViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            var DeNote = _note.Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => (x.Source.Id != null) && (x.Source.Id == model.SourceId) &&
                                                                                                x.Delete.Equals(false)).Select(x => new NoteViewModel()
            {
                Id = x.Id,
                SourceWarehouse = x.Source.Name,
                Details         = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            });

            var ReNote = _note.Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => (x.Destination.Id != null) && x.Delete.Equals(false))
                         .Select(x => new NoteViewModel()
            {
                Id = x.Id,
                DestinationWarehouse = x.Destination.Name,
                Details = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            });
            var ReDetails = new List <StockViewModel>();
            var DeDetails = new List <StockViewModel>();

            foreach (var item in DeNote)
            {
                foreach (var smallitem in item.Details)
                {
                    DeDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.SourceWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            }
            foreach (var item in ReNote)
            {
                foreach (var smallitem in item.Details)
                {
                    ReDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.DestinationWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            }
            var filterDeNote = DeDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            });
            var filterReNote = ReDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            });
            var currentStorage = new List <StockGroupViewModel>();

            foreach (var item in filterReNote)
            {
                var currentStorageItem = new StockGroupViewModel();

                currentStorageItem.Warehouse = item.warehouse;

                if (filterDeNote.Where(x => x.warehouse == item.warehouse).Any())
                {
                    var gooditem = filterDeNote.Where(x => x.warehouse == item.warehouse).FirstOrDefault();
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        if (gooditem.listItem.Where(t => t.productname == smallitem.productname).Any())
                        {
                            var caughtDetail = gooditem.listItem.Where(t => t.productname == smallitem.productname).FirstOrDefault();
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity - caughtDetail.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                        else
                        {
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                    }
                    currentStorage.Add(currentStorageItem);
                }
                else
                {
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        detailItem.ProductName = smallitem.productname;
                        detailItem.Quantity    = smallitem.quantity;
                        currentStorageItem.StockList.Add(detailItem);
                    }
                    currentStorage.Add(currentStorageItem);
                }
            }
            var flagWrong        = false;
            var WrongName        = "";
            var requestWarehouse = _warehouse.Find((Guid)model.SourceId).Name;
            var matchWarehouse   = currentStorage.Where(x => x.Warehouse == requestWarehouse).FirstOrDefault();

            if (matchWarehouse != null)
            {
                foreach (var item in model.Details)
                {
                    var productName = _product.Find((Guid)item.ProductId).ProductName;
                    if (!matchWarehouse.StockList.Where(x => x.ProductName == productName).Any())
                    {
                        flagWrong = true;
                        WrongName = productName;
                        break;
                    }
                    else
                    {
                        var quantity = matchWarehouse.StockList.Where(x => x.ProductName == productName).FirstOrDefault().Quantity;
                        if (item.Quantity > quantity)
                        {
                            flagWrong = true;
                            WrongName = productName;
                            break;
                        }
                    }
                }
            }
            else
            {
                flagWrong = true;
                WrongName = requestWarehouse;
            }

            if (flagWrong == true)
            {
                var objects = new
                {
                    result = "Kho không đủ số lượng sản phẩm " + WrongName
                };
                return(Json(objects, JsonRequestBehavior.AllowGet));
            }
            else
            {
                var objects = new
                {
                    result = "Ok"
                };
                return(Json(objects, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #13
0
        public IEnumerable <StockGroupViewModel> GetProductInStock(SearchingStockViewModel model)
        {
            if (model.End != null)
            {
                model.End = model.End.Value.AddDays(1);
            }
            var DeNote = Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => ((!model.WarehouseId.HasValue) || x.Source.Id == model.WarehouseId) &&
                                                                                          ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                          ((!model.End.HasValue) || x.CreatedDate <= model.End) &&
                                                                                          x.Delete.Equals(false)
                                                                                          ).Select(x => new NoteViewModel()
            {
                Id = x.Id,
                SourceWarehouse = x.Source.Name,
                Details         = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            }); // Danh sách phiếu xuất

            var ReNote = Queryable().Include(x => x.Details.Select(t => t.Product)).Where(x => ((!model.WarehouseId.HasValue) || x.Destination.Id == model.WarehouseId) &&
                                                                                          ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                          ((!model.End.HasValue) || x.CreatedDate <= model.End) &&
                                                                                          x.Delete.Equals(false)
                                                                                          ).Select(x => new NoteViewModel()
            {
                Id = x.Id,
                DestinationWarehouse = x.Destination.Name,
                Details = x.Details.Select(y => new NoteDetailViewModel()
                {
                    Id          = y.Id,
                    ProductName = y.Product.ProductName,
                    Quantity    = y.Quantity
                }).ToList()
            }); // Danh sách phiếu nhập
            var ReDetails = new List <StockViewModel>();
            var DeDetails = new List <StockViewModel>();

            foreach (var item in DeNote)
            {
                foreach (var smallitem in item.Details)
                {
                    DeDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.SourceWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            } // List chi tiết phiếu xuất
            foreach (var item in ReNote)
            {
                foreach (var smallitem in item.Details)
                {
                    ReDetails.Add(new StockViewModel()
                    {
                        ProductName = smallitem.ProductName,
                        Warehouse   = item.DestinationWarehouse,
                        Quantity    = smallitem.Quantity
                    });
                }
            } // List chi tiết phiếu nhập
            var filterDeNote = DeDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            }); // list số lượng theo sản phảm xuất
            var filterReNote = ReDetails.Where(x => x.Warehouse != null).GroupBy(x => x.Warehouse).Select(x => new
            {
                warehouse = x.Key,
                listItem  = x.GroupBy(y => y.ProductName).Select(y => new {
                    productname = y.Key,
                    quantity    = y.Sum(t => t.Quantity)
                }).ToList()
            });// list số lượng theo sản phảm nhập
            var currentStorage = new List <StockGroupViewModel>();

            foreach (var item in filterReNote)
            {
                var currentStorageItem = new StockGroupViewModel();

                currentStorageItem.Warehouse = item.warehouse;

                if (filterDeNote.Where(x => x.warehouse == item.warehouse).Any())
                {
                    var gooditem = filterDeNote.Where(x => x.warehouse == item.warehouse).FirstOrDefault();
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        if (gooditem.listItem.Where(t => t.productname == smallitem.productname).Any())
                        {
                            var caughtDetail = gooditem.listItem.Where(t => t.productname == smallitem.productname).FirstOrDefault();
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity - caughtDetail.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                        else
                        {
                            detailItem.ProductName = smallitem.productname;
                            detailItem.Quantity    = smallitem.quantity;
                            currentStorageItem.StockList.Add(detailItem);
                        }
                    }
                    currentStorage.Add(currentStorageItem);
                }
                else
                {
                    foreach (var smallitem in item.listItem)
                    {
                        var detailItem = new StockDetailViewModel();
                        detailItem.ProductName = smallitem.productname;
                        detailItem.Quantity    = smallitem.quantity;
                        currentStorageItem.StockList.Add(detailItem);
                    }
                    currentStorage.Add(currentStorageItem);
                }
            }
            return(currentStorage);
        }
Beispiel #14
0
        public StockViewModel Search(StockRequestModel request)
        {
            request.StartDate = request.StartDate.Date;
            request.EndDate   = request.EndDate.Date.AddDays(1).AddMinutes(-1);

            Bookmark bookmark = db.Bookmarks.OrderByDescending(x => x.Created).FirstOrDefault(x => x.Created < request.StartDate);

            if (bookmark == null)
            {
                return(null);
            }
            IQueryable <ProductBookmark> queryablePBookmarks = bookmark.ProductBookmarks.AsQueryable();

            ProductBookmarkRequestModel pbRequestModel = new ProductBookmarkRequestModel(request.Keyword, "Modified", "False");

            queryablePBookmarks = pbRequestModel.GetOrderedData(queryablePBookmarks);
            queryablePBookmarks = pbRequestModel.SkipAndTake(queryablePBookmarks);
            List <ProductBookmarkViewModel> productBookmarks = queryablePBookmarks.ToList().ConvertAll(x => new ProductBookmarkViewModel(x)).ToList();

            var bookmarkDate = bookmark.Created.Date;
            List <SaleDetailViewModel> saleDetails = db.SaleDetails.Include(x => x.Product).Where(x => x.Created >= bookmarkDate && x.Created <= request.EndDate).ToList().ConvertAll(x => new SaleDetailViewModel(x)).ToList();
            var purchaseDetails       = db.PurchaseDetails.Include(x => x.Product).Where(x => x.Created >= bookmarkDate && x.Created <= request.EndDate).ToList().ConvertAll(x => new PurchaseDetailViewModel(x));
            var stockDetailViewModels = new List <StockDetailViewModel>();

            foreach (var pb in productBookmarks)
            {
                var purchaseDqBefore = purchaseDetails.Where(x => x.Created < request.StartDate && x.ProductId == pb.ProductId).ToList();
                int purchasedBefore  = purchaseDqBefore.Any() ? purchaseDqBefore.Sum(x => x.Quantity) : 0;
                var purchaseDqAfter  = purchaseDetails.Where(x => x.Created >= request.StartDate && x.ProductId == pb.ProductId).ToList();
                int purchasedAfter   = purchaseDqAfter.Any() ? purchaseDqAfter.Sum(x => x.Quantity) : 0;
                var saleDqBefore     = saleDetails.Where(x => x.Created < request.StartDate && x.ProductId == pb.ProductId).ToList();
                int soldBefore       = saleDqBefore.Any() ? saleDqBefore.Sum(x => x.Quantity) : 0;
                var saleDqAfter      = saleDetails.Where(x => x.Created >= request.StartDate && x.ProductId == pb.ProductId).ToList();
                int soldAfter        = saleDqAfter.Any() ? saleDqAfter.Sum(x => x.Quantity) : 0;

                StockDetailViewModel sdetail = new StockDetailViewModel
                {
                    StartingOnHand         = pb.PhysicalOnHand + purchasedBefore - soldBefore,
                    StockIn                = purchasedAfter,
                    ProductName            = pb.ProductName,
                    StockOut               = soldAfter,
                    BookmarkStartingOnHand = pb.PhysicalOnHand
                };
                sdetail.EndOnHand = sdetail.StartingOnHand + sdetail.StockIn - sdetail.StockOut;
                sdetail.CostTotal = pb.CostPrice * sdetail.EndOnHand;
                stockDetailViewModels.Add(sdetail);
            }

            StockViewModel stockViewModel = new StockViewModel()
            {
                BookmarkDate          = bookmarkDate,
                StartDate             = request.StartDate,
                EndDate               = request.EndDate,
                CostTotal             = stockDetailViewModels.Sum(x => x.CostTotal),
                StockDetailViewModels = stockDetailViewModels
            };

            // get purchase detail by productid & date range
            // get sale detail by productid & date range
            // prepare view model & return
            return(stockViewModel);
        }