Example #1
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));
        }
Example #2
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));
            }
        }
Example #3
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));
        }
Example #4
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);
        }