コード例 #1
0
        public ActionResult getTongCongNo(SearchingStockViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            model.Start = null;
            if (model.End == null)
            {
                model.End = DateTime.Now.Date;
            }
            var TongNo = new List <DebtStockGroupViewModel>();

            TongNo = _debtnote.GetDebtInStock(model).ToList();
            var result = TongNo.Select(x => x.Sum).Sum();

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
コード例 #2
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));
        }
コード例 #3
0
        public ActionResult getCongNo(SearchingStockViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            var NoDauKy     = new List <DebtStockGroupViewModel>();
            var NoCuoiKy    = new List <DebtStockGroupViewModel>();
            var tonDauModel = new SearchingStockViewModel();

            tonDauModel.End = model.Start;
            model.Start     = null;
            if (model.End == null)
            {
                model.End = DateTime.Now.Date;
            }

            NoDauKy  = _debtnote.GetDebtInStock(tonDauModel).ToList();
            NoCuoiKy = _debtnote.GetDebtInStock(model).ToList();
            var test  = new List <CongNoItem>();
            var test1 = new CongNoItem();

            if (NoDauKy.Count() != 0 && NoCuoiKy.Count() != 0)
            {
                foreach (var item in NoDauKy)
                {
                    test1               = new CongNoItem();
                    test1.NoDauKy       = item.Sum;
                    test1.WarehouseName = item.Warehouse;
                    test.Add(test1);
                }
                foreach (var item in NoCuoiKy)
                {
                    foreach (var item1 in test)
                    {
                        if (item.Warehouse == item1.WarehouseName)
                        {
                            item1.NoCuoiKy = item.Sum;
                        }
                    }
                    var check = NoDauKy.FirstOrDefault(x => x.Warehouse == item.Warehouse);
                    if (check == null)
                    {
                        test1               = new CongNoItem();
                        test1.NoDauKy       = 0;
                        test1.WarehouseName = item.Warehouse;
                        test1.NoCuoiKy      = item.Sum;
                        test.Add(test1);
                    }
                }
            }
            else if (NoDauKy.Count() == 0 && NoCuoiKy.Count() != 0)
            {
                foreach (var item in NoCuoiKy)
                {
                    test1               = new CongNoItem();
                    test1.NoCuoiKy      = item.Sum;
                    test1.NoDauKy       = 0;
                    test1.WarehouseName = item.Warehouse;
                    test.Add(test1);
                }
            }
            else if (NoCuoiKy.Count() == 0 && NoDauKy.Count() != 0)
            {
                foreach (var item in NoDauKy)
                {
                    test1               = new CongNoItem();
                    test1.NoCuoiKy      = 0;
                    test1.NoDauKy       = item.Sum;
                    test1.WarehouseName = item.Warehouse;
                    test.Add(test1);
                }
            }
            return(Json(test, JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
        public ActionResult GetDebtInStock(SearchingStockViewModel model)
        {
            Request.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            var ownedNote = _debtnote.Queryable().Include(t => t.PayWarehouse).Include(t => t.PaymentType).Where(x => x.IsOwed == true &&
                                                                                                                 x.Delete == false &&
                                                                                                                 ((!model.WarehouseId.HasValue) || x.PayWarehouse.Id == model.WarehouseId) &&
                                                                                                                 ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                                 ((!model.End.HasValue) || x.CreatedDate <= model.End)).Select(x => new DebtNoteViewModel
            {
                Id               = x.Id,
                PayWarehouse     = x.PayWarehouse.Name,
                Total            = x.Total,
                CreatedDate      = x.CreatedDate,
                LastModifiedDate = x.LastModifiedDate,
                PayMethod        = x.PaymentType.Name,
                Noted            = x.Noted,
                Code             = x.Code
            });
            var ownNote = _debtnote.Queryable().Include(t => t.PayWarehouse).Include(t => t.PaymentType).Where(x => x.IsOwed == false &&
                                                                                                               x.Delete == false &&
                                                                                                               ((!model.WarehouseId.HasValue) || x.PayWarehouse.Id == model.WarehouseId) &&
                                                                                                               ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                               ((!model.End.HasValue) || x.CreatedDate <= model.End)
                                                                                                               ).Select(x => new DebtNoteViewModel
            {
                Id               = x.Id,
                PayWarehouse     = x.PayWarehouse.Name,
                Total            = x.Total,
                CreatedDate      = x.CreatedDate,
                LastModifiedDate = x.LastModifiedDate,
                PayMethod        = x.PaymentType.Name,
                Noted            = x.Noted,
                Code             = x.Code
            });
            var groupOwedNote = ownedNote.GroupBy(x => new { x.PayWarehouse }, (Key, group) => new DebtStockGroupViewModel()
            {
                Warehouse = Key.PayWarehouse,
                StockList = group.GroupBy(y => new { y.PayMethod }, (Key2, group2) => new DebtStockViewModel()
                {
                    PayMethod = Key2.PayMethod,
                    Details   = group2.Select(z => new DebtStockDetailViewModel()
                    {
                        Code  = z.Code,
                        Total = z.Total,
                        Noted = z.Noted
                    }).ToList()
                }).ToList()
            });
            var groupOwnNote = ownNote.GroupBy(x => new { x.PayWarehouse }, (Key, group) => new DebtStockGroupViewModel()
            {
                Warehouse = Key.PayWarehouse,
                StockList = group.GroupBy(y => new { y.PayMethod }, (Key2, group2) => new DebtStockViewModel()
                {
                    PayMethod = Key2.PayMethod,
                    Details   = group2.Select(z => new DebtStockDetailViewModel()
                    {
                        Code  = z.Code,
                        Total = z.Total,
                        Noted = z.Noted
                    }).ToList()
                }).ToList()
            });
            var filterOwnedNote = new List <DebtStockViewModel>();

            foreach (var item in groupOwedNote)
            {
                if (groupOwnNote.Where(x => x.Warehouse == item.Warehouse).Any())
                {
                }
            }
            return(Json(groupOwnNote, JsonRequestBehavior.AllowGet));
        }
コード例 #5
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));
        }
コード例 #6
0
 public IEnumerable <DebtStockGroupViewModel> GetDebtInStock([FromUri] SearchingStockViewModel model)
 {
     return(_debtNote.GetDebtInStock(model));
 }
コード例 #7
0
ファイル: DebtNoteService.cs プロジェクト: Nanapj/inventory
        public IEnumerable <DebtStockGroupViewModel> GetDebtInStock(SearchingStockViewModel model)
        {
            if (model.End != null)
            {
                model.End = model.End.Value.AddDays(1);
            }
            var ownedNote = Queryable().Include(t => t.PayWarehouse).Include(t => t.PaymentType).Where(x => x.IsOwed == true &&
                                                                                                       x.Delete == false &&
                                                                                                       ((!model.WarehouseId.HasValue) || x.PayWarehouse.Id == model.WarehouseId) &&
                                                                                                       ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                       ((!model.End.HasValue) || x.CreatedDate <= model.End)).Select(x => new DebtNoteViewModel
            {
                Id               = x.Id,
                PayWarehouse     = x.PayWarehouse.Name,
                Total            = x.Total,
                CreatedDate      = x.CreatedDate,
                LastModifiedDate = x.LastModifiedDate,
                PayMethod        = x.PaymentType.Name,
                Noted            = x.Noted,
                Code             = x.Code
            });
            var ownNote = Queryable().Include(t => t.PayWarehouse).Include(t => t.PaymentType).Where(x => x.IsOwed == false &&
                                                                                                     x.Delete == false &&
                                                                                                     ((!model.WarehouseId.HasValue) || x.PayWarehouse.Id == model.WarehouseId) &&
                                                                                                     ((!model.Start.HasValue) || x.CreatedDate >= model.Start) &&
                                                                                                     ((!model.End.HasValue) || x.CreatedDate <= model.End)
                                                                                                     ).Select(x => new DebtNoteViewModel
            {
                Id               = x.Id,
                PayWarehouse     = x.PayWarehouse.Name,
                Total            = x.Total,
                CreatedDate      = x.CreatedDate,
                LastModifiedDate = x.LastModifiedDate,
                PayMethod        = x.PaymentType.Name,
                Noted            = x.Noted,
                Code             = x.Code
            });
            var groupOwedNote = ownedNote.GroupBy(x => new { x.PayWarehouse }, (Key, group) => new DebtStockGroupViewModel()
            {
                Warehouse = Key.PayWarehouse,
                Sum       = group.Sum(y => y.Total),
                StockList = group.GroupBy(y => new { y.PayMethod }, (Key2, group2) => new DebtStockViewModel()
                {
                    PayMethod = Key2.PayMethod,
                    Details   = group2.Select(z => new DebtStockDetailViewModel()
                    {
                        Code  = z.Code,
                        Total = z.Total,
                        Noted = z.Noted
                    }).ToList()
                }).ToList()
            });
            var tst          = groupOwedNote.Count();
            var groupOwnNote = ownNote.GroupBy(x => new { x.PayWarehouse }, (Key, group) => new DebtStockGroupViewModel()
            {
                Warehouse = Key.PayWarehouse,
                Sum       = group.Sum(y => y.Total),
                StockList = group.GroupBy(y => new { y.PayMethod }, (Key2, group2) => new DebtStockViewModel()
                {
                    PayMethod = Key2.PayMethod,
                    Details   = group2.Select(z => new DebtStockDetailViewModel()
                    {
                        Code  = z.Code,
                        Total = z.Total,
                        Noted = z.Noted
                    }).ToList()
                }).ToList()
            });
            var test            = groupOwnNote.Count();
            var filterOwnedNote = new List <DebtStockGroupViewModel>();

            foreach (var item in groupOwedNote)
            {
                if (test != 0)
                {
                    if (groupOwnNote.Where(x => x.Warehouse == item.Warehouse).Any())
                    {
                        var matchOwnNote = groupOwnNote.Where(x => x.Warehouse == item.Warehouse).FirstOrDefault();
                        item.Sum = item.Sum - matchOwnNote.Sum;
                        foreach (var smallitem in item.StockList)
                        {
                            if (matchOwnNote.StockList.Where(y => y.PayMethod == smallitem.PayMethod).Any())
                            {
                                var matchPayMethod = (matchOwnNote.StockList.Where(y => y.PayMethod == smallitem.PayMethod).FirstOrDefault());
                                foreach (var details in matchPayMethod.Details)
                                {
                                    smallitem.Details.Add(details);
                                }
                            }
                        }
                    }
                }

                filterOwnedNote.Add(item);
            }
            return(filterOwnedNote);
        }
コード例 #8
0
ファイル: NoteService.cs プロジェクト: Nanapj/inventory
        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);
        }
コード例 #9
0
ファイル: NoteService.cs プロジェクト: Nanapj/inventory
        public IEnumerable <XuatNhapItem> GetSlNhapXuat(SearchingStockViewModel model)
        {
            if (model.End != null)
            {
                model.End = model.End.Value.AddDays(1);
            }
            var DsXuatNhap    = new List <XuatNhapItem>();
            var DsXuatNhapKho = new XuatNhapItem();
            var DsNhap        = Queryable().Include(x => x.Details.Select(y => y.Product)).Where(x => (x.Destination != null) &&
                                                                                                 (x.Destination.Id == model.WarehouseId) &&
                                                                                                 ((!model.Start.HasValue) || (x.CreatedDate >= model.Start)) &&
                                                                                                 ((!model.End.HasValue) || (x.CreatedDate <= model.End)) &&
                                                                                                 (x.Delete != true)).SelectMany(x => x.Details).GroupBy(x => x.Product.ProductName)
                                .Select(x => new XuatNhapItem()
            {
                ProductName = x.Key,
                ImQuantity  = x.Sum(i => i.Quantity),
                ExQuantity  = 0,
            }).ToList();

            var DsXuat = Queryable().Include(x => x.Details.Select(y => y.Product)).Where(x => (x.Source != null) &&
                                                                                          (x.Source.Id == model.WarehouseId) &&
                                                                                          ((!model.Start.HasValue) || (x.CreatedDate >= model.Start)) &&
                                                                                          ((!model.End.HasValue) || (x.CreatedDate <= model.End)) &&
                                                                                          (x.Delete != true)).SelectMany(x => x.Details).GroupBy(x => x.Product.ProductName)
                         .Select(x => new XuatNhapItem()
            {
                ProductName = x.Key,
                ExQuantity  = x.Sum(i => i.Quantity),
                ImQuantity  = 0,
            }).ToList();

            if (DsNhap.Count() != 0 && DsXuat.Count() != 0)
            {
                foreach (var item in DsNhap)
                {
                    DsXuatNhapKho             = new XuatNhapItem();
                    DsXuatNhapKho.ImQuantity  = item.ImQuantity;
                    DsXuatNhapKho.ProductName = item.ProductName;
                    DsXuatNhap.Add(DsXuatNhapKho);
                }
                foreach (var item in DsXuat)
                {
                    foreach (var item1 in DsXuatNhap)
                    {
                        if (item.ProductName == item1.ProductName)
                        {
                            item1.ExQuantity = item.ExQuantity;
                        }
                    }
                    var check = DsNhap.FirstOrDefault(x => x.ProductName == item.ProductName);
                    if (check == null)
                    {
                        DsXuatNhapKho             = new XuatNhapItem();
                        DsXuatNhapKho.ImQuantity  = 0;
                        DsXuatNhapKho.ProductName = item.ProductName;
                        DsXuatNhapKho.ExQuantity  = item.ExQuantity;
                        DsXuatNhap.Add(DsXuatNhapKho);
                    }
                }
            }
            else if (DsNhap.Count() == 0 && DsXuat.Count() != 0)
            {
                foreach (var item in DsXuat)
                {
                    DsXuatNhapKho             = new XuatNhapItem();
                    DsXuatNhapKho.ImQuantity  = 0;
                    DsXuatNhapKho.ProductName = item.ProductName;
                    DsXuatNhapKho.ExQuantity  = item.ExQuantity;
                    DsXuatNhap.Add(DsXuatNhapKho);
                }
            }
            else if (DsNhap.Count() != 0 && DsXuat.Count() == 0)
            {
                foreach (var item in DsNhap)
                {
                    DsXuatNhapKho             = new XuatNhapItem();
                    DsXuatNhapKho.ImQuantity  = item.ImQuantity;
                    DsXuatNhapKho.ProductName = item.ProductName;
                    DsXuatNhapKho.ExQuantity  = 0;
                    DsXuatNhap.Add(DsXuatNhapKho);
                }
            }
            return(DsXuatNhap);
        }
コード例 #10
0
ファイル: NoteController.cs プロジェクト: Nanapj/inventory
 public IEnumerable <StockGroupViewModel> GetProductInStock([FromUri] SearchingStockViewModel model)
 {
     return(_note.GetProductInStock(model));
 }