Esempio n. 1
0
        public static OpResult AddStockLock(TreasuryLocks obj)
        {
            var op = new OpResult();

            try
            {
                obj.LockStoreID.IsNullThrow();
                var xh = obj.CheckBatch.Substring(obj.CheckBatch.Length - 2);
                if (int.Parse(xh) > 20)
                {
                    op.Message = "每月最多只能锁定20次"; return(op);
                }
                var selectBarcodes = HttpContext.Current.Request["selectBarcodes"];
                var barcodes       = new string[] { };
                if (selectBarcodes.IsNullOrEmpty())
                {
                    List <int> childsns = null;
                    if (!obj.LockCategorySN.IsNullOrEmpty())
                    {
                        var parsns = obj.LockCategorySN.Split(',').Select(o => int.Parse(o)).ToList();
                        childsns = ProductCategoryService.GetChildSNs(parsns, true);
                    }
                    else
                    {
                        var ware   = WarehouseService.Find(o => o.StoreId == obj.LockStoreID && o.CompanyId == CommonService.CompanyId);
                        var parsns = ware.CategorySN.Split(',').Where(o => !o.IsNullOrEmpty()).Select(o => int.Parse(o)).ToList();
                        childsns = ProductCategoryService.GetChildSNs(parsns);
                    }
                    barcodes = ProductService.FindList(o => childsns.Contains(o.CategorySN) && o.CompanyId == CommonService.CompanyId).Select(o => o.Barcode).Distinct().ToArray();
                }
                else
                {
                    barcodes = selectBarcodes.Split(',');
                }

                var dt = dal.GetInventoryBalanceLast(CommonService.CompanyId, obj.LockStoreID, string.Join(",", barcodes));
                if (dt == null || dt.Rows.Count <= 0)
                {
                    op.Message = "该门店暂无库存信息";
                }
                else
                {
                    obj.LockDate  = DateTime.Now;
                    obj.LockUID   = Sys.CurrentUser.UID;
                    obj.CompanyId = CommonService.CompanyId;
                    var stocks = new List <StockTaking>();
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (stocks.Any(o => o.Barcode == dr["Barcode"].ToString()))
                        {
                            continue;
                        }
                        stocks.Add(new StockTaking()
                        {
                            Barcode    = dr["Barcode"].ToString(),
                            LockNumber = dr["Number"].ToType <decimal>(),
                            CheckBatch = obj.CheckBatch,
                            CreateDT   = obj.LockDate,
                            CreateUID  = obj.LockUID,
                            CompanyId  = obj.CompanyId
                        });
                    }
                    BaseService <TreasuryLocks> .Add(obj, false);

                    op = AddRange(stocks);
                }
            }
            catch (Exception ex)
            {
                op.Message = ex.Message;
                Log.WriteError(ex);
            }
            return(op);
        }
Esempio n. 2
0
        public static DataTable ReportList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount, ref object footer, bool isPage = true)
        {
            var nl = new System.Collections.Specialized.NameValueCollection()
            {
                nvl
            };

            if (!nl["categorysn"].IsNullOrEmpty())
            {
                var childs = ProductCategoryService.GetChildSNs(new List <int>()
                {
                    int.Parse(nl["categorysn"])
                });
                nl["categorysn"] = string.Join(",", childs);
            }
            if (!isPage)
            {
                nl["rows"] = int.MaxValue.ToString();
            }
            var     ds = dal.FindTakeStockPages(nl, out recordCount);
            var     dt = ds.Tables[0];
            decimal ActualNumber = 0, LockNumber = 0, SubstractNum = 0, SubstractTotal = 0, ActualTotal = 0;

            if (ds.Tables.Count > 1 && ds.Tables[1].Rows.Count > 0)
            {
                var dttotal = ds.Tables[1];
                ActualNumber   = Math.Round(dttotal.Rows[0]["ActualNumbers"].ToType <decimal>(), 3);
                LockNumber     = Math.Round(dttotal.Rows[0]["LockNumbers"].ToType <decimal>(), 3);
                SubstractNum   = Math.Round(dttotal.Rows[0]["SubstractNums"].ToType <decimal>(), 3);
                SubstractTotal = Math.Round(dttotal.Rows[0]["SubstractTotals"].ToType <decimal>(), 3);
                ActualTotal    = Math.Round(dttotal.Rows[0]["ActualTotals"].ToType <decimal>(), 3);
            }
            footer = new List <object>()
            {
                new { ActualNumber = ActualNumber, LockNumber = LockNumber, SubstractNum = SubstractNum, SubstractTotal = SubstractTotal, ActualTotal = ActualTotal, SubUnit = "合计:" }
            };
            return(dt);

            /*
             * var query = from a in CurrentRepository.Entities
             *          join b in BaseService<VwProduct>.CurrentRepository.Entities on a.Barcode equals b.Barcode
             *          join c in BaseService<TreasuryLocks>.CurrentRepository.Entities on a.CheckBatch equals c.CheckBatch
             *          join d in WarehouseService.CurrentRepository.Entities.DefaultIfEmpty() on c.LockStoreID equals d.StoreId
             *          let o = from x in BaseService<StockTakingLog>.CurrentRepository.QueryEntity where x.CheckBatch == a.CheckBatch && x.Barcode == a.Barcode && x.State == 0 select (decimal?)x.Number
             *          //where c.State==1
             *          orderby c.CheckBatch descending, b.CategorySN ascending
             *          select new
             *          {
             *              a.Id,
             *              a.CheckBatch,
             *              c.LockStoreID,
             *              StoreTitle= d.Title,
             *              c.LockDate,
             *              Pro=b,
             *              a.LockNumber,
             *              ActualNumber=a.ActualNumber??o.Sum(),
             *              b.SysPrice,
             *              BuyTotal="",
             *              c.State
             *          };
             * if (!storeId.IsNullOrEmpty())
             *  query = query.Where(o => o.LockStoreID == storeId);
             * if(!checkBatch.IsNullOrEmpty())
             *  query = query.Where(o => o.CheckBatch == checkBatch);
             ||||||| .r6102
             |||||||public static DataTable ReportList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount, bool isPage = true)
             |||||||{
             |||||||return dal.FindTakeStockPages(nvl, out recordCount, isPage);
             |||||||/*
             |||||||var query = from a in CurrentRepository.Entities
             |||||||    join b in BaseService<VwProduct>.CurrentRepository.Entities on a.Barcode equals b.Barcode
             |||||||    join c in BaseService<TreasuryLocks>.CurrentRepository.Entities on a.CheckBatch equals c.CheckBatch
             |||||||    join d in WarehouseService.CurrentRepository.Entities.DefaultIfEmpty() on c.LockStoreID equals d.StoreId
             |||||||    let o = from x in BaseService<StockTakingLog>.CurrentRepository.QueryEntity where x.CheckBatch == a.CheckBatch && x.Barcode == a.Barcode && x.State == 0 select (decimal?)x.Number
             |||||||    //where c.State==1
             |||||||    orderby c.CheckBatch descending, b.CategorySN ascending
             |||||||    select new
             |||||||    {
             |||||||        a.Id,
             |||||||        a.CheckBatch,
             |||||||        c.LockStoreID,
             |||||||        StoreTitle= d.Title,
             |||||||        c.LockDate,
             |||||||        Pro=b,
             |||||||        a.LockNumber,
             |||||||        ActualNumber=a.ActualNumber??o.Sum(),
             |||||||        b.SysPrice,
             |||||||        BuyTotal="",
             |||||||        c.State
             |||||||    };
             |||||||if (!storeId.IsNullOrEmpty())
             |||||||query = query.Where(o => o.LockStoreID == storeId);
             |||||||if(!checkBatch.IsNullOrEmpty())
             |||||||query = query.Where(o => o.CheckBatch == checkBatch);
             |||||||=======
             |||||||public static DataTable ReportList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount, ref object footer, bool isPage = true)
             |||||||{
             |||||||var dt = dal.FindTakeStockPages(nvl, out recordCount, isPage);
             |||||||int countNotPage = 0;
             |||||||var dtNotPage = dal.FindTakeStockPages(nvl, out countNotPage, false);
             |||||||var lockNumber = dtNotPage.AsEnumerable().Sum(o => o["LockNumber"].ToType<decimal>());
             |||||||var actualNumber = dtNotPage.AsEnumerable().Sum(o => o["ActualNumber"].ToType<decimal>());
             |||||||var substractNum = dtNotPage.AsEnumerable().Sum(o => o["SubstractNum"].ToType<decimal>());
             |||||||var substractTotal = dtNotPage.AsEnumerable().Sum(o => o["SubstractTotal"].ToType<decimal>());
             |||||||var actualTotal = dtNotPage.AsEnumerable().Sum(o => o["ActualTotal"].ToType<decimal>());
             |||||||footer = new List<object>() {
             |||||||new {
             |||||||SysPrice="所有合计:",
             |||||||State=-1,
             |||||||LockNumber=lockNumber,
             |||||||ActualNumber=actualNumber,
             |||||||SubstractNum=substractNum,
             |||||||SubstractTotal=substractTotal,
             |||||||ActualTotal=actualTotal
             |||||||}
             |||||||};
             |||||||return dt;
             |||||||
             |||||||/*
             |||||||var query = from a in CurrentRepository.Entities
             |||||||     join b in BaseService<VwProduct>.CurrentRepository.Entities on a.Barcode equals b.Barcode
             |||||||     join c in BaseService<TreasuryLocks>.CurrentRepository.Entities on a.CheckBatch equals c.CheckBatch
             |||||||     join d in WarehouseService.CurrentRepository.Entities.DefaultIfEmpty() on c.LockStoreID equals d.StoreId
             |||||||     let o = from x in BaseService<StockTakingLog>.CurrentRepository.QueryEntity where x.CheckBatch == a.CheckBatch && x.Barcode == a.Barcode && x.State == 0 select (decimal?)x.Number
             |||||||     //where c.State==1
             |||||||     orderby c.CheckBatch descending, b.CategorySN ascending
             |||||||     select new
             |||||||     {
             |||||||         a.Id,
             |||||||         a.CheckBatch,
             |||||||         c.LockStoreID,
             |||||||         StoreTitle= d.Title,
             |||||||         c.LockDate,
             |||||||         Pro=b,
             |||||||         a.LockNumber,
             |||||||         ActualNumber=a.ActualNumber??o.Sum(),
             |||||||         b.SysPrice,
             |||||||         BuyTotal="",
             |||||||         c.State
             |||||||     };
             |||||||if (!storeId.IsNullOrEmpty())
             |||||||query = query.Where(o => o.LockStoreID == storeId);
             |||||||if(!checkBatch.IsNullOrEmpty())
             |||||||query = query.Where(o => o.CheckBatch == checkBatch);
             |||||||>>>>>>> .r6246
             |||||||
             |||||||if (isPage)
             |||||||{
             |||||||recordCount = query.Count();
             |||||||var list= query.ToPageList();
             |||||||ProductService.SetSysPrice(storeId, list.Select(o => o.Pro).ToList());
             |||||||return list.Select(o=>new{
             ||||||| o.Id,
             ||||||| o.CheckBatch,
             ||||||| o.LockStoreID,
             ||||||| o.StoreTitle,
             ||||||| o.LockDate,
             ||||||| o.LockNumber,
             ||||||| o.ActualNumber,
             ||||||| SubstractNum=o.ActualNumber-o.LockNumber,
             ||||||| SubstractTotal=(o.ActualNumber-o.LockNumber)*o.Pro.BuyPrice,
             ||||||| ActualTotal = o.ActualNumber * o.Pro.SysPrice,
             ||||||| o.BuyTotal,
             ||||||| o.Pro.State,
             ||||||| o.Pro.ProductCode,
             ||||||| o.Pro.Barcode,
             ||||||| o.Pro.Title,
             ||||||| o.Pro.CategoryTitle,
             ||||||| o.Pro.SubUnit,
             ||||||| o.Pro.Size,
             ||||||| o.Pro.SupplierTitle,
             ||||||| o.Pro.SysPrice
             |||||||});
             |||||||}
             |||||||else
             |||||||{
             |||||||recordCount = 0;
             |||||||var list= query.Where(o=>o.State==1).ToList();
             |||||||ProductService.SetSysPrice(storeId, list.Select(o => o.Pro).ToList());
             |||||||return list.Select(o => new
             |||||||{
             ||||||| o.Id,
             ||||||| o.CheckBatch,
             ||||||| o.LockStoreID,
             ||||||| o.StoreTitle,
             ||||||| o.LockDate,
             ||||||| o.LockNumber,
             ||||||| o.ActualNumber,
             ||||||| SubstractNum = o.ActualNumber - o.LockNumber,
             ||||||| SubstractTotal = (o.ActualNumber - o.LockNumber) * o.Pro.BuyPrice,
             ||||||| ActualTotal = o.ActualNumber * o.Pro.SysPrice,
             ||||||| o.BuyTotal,
             ||||||| o.Pro.State,
             ||||||| o.Pro.ProductCode,
             ||||||| o.Pro.Barcode,
             ||||||| o.Pro.Title,
             ||||||| o.Pro.CategoryTitle,
             ||||||| o.Pro.SubUnit,
             ||||||| o.Pro.Size,
             ||||||| o.Pro.SupplierTitle,
             ||||||| o.Pro.SysPrice
             |||||||});
             |||||||}*/
        }
Esempio n. 3
0
        public static DataTable FindPageList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount, ref object footer, bool ispage = true)
        {
            var nl = new System.Collections.Specialized.NameValueCollection()
            {
                nvl
            };

            if (!nl["categorysn"].IsNullOrEmpty())
            {
                var childs = ProductCategoryService.GetChildSNs(new List <int>()
                {
                    int.Parse(nl["categorysn"])
                });
                nl["categorysn"] = string.Join(",", childs);
            }
            if (!ispage)
            {
                nl["rows"] = int.MaxValue.ToString();
            }
            var ds = dal.FindTakeStockPages(nl, out recordCount);
            //var num = dt.AsEnumerable().Sum(o => o["ActualNumber"].ToType<decimal>());
            decimal ActualNumber = 0, LockNumber = 0;
            var     dt = ds.Tables[0];

            if (ds.Tables.Count > 1 && ds.Tables[1].Rows.Count > 0)
            {
                var dttotal = ds.Tables[1];
                ActualNumber = dttotal.Rows[0]["ActualNumbers"].ToType <decimal>();
                LockNumber   = dttotal.Rows[0]["LockNumbers"].ToType <decimal>();
            }
            footer = new List <object>()
            {
                new {
                    SubUnit      = "合计:",
                    ActualNumber = Math.Round(ActualNumber, 3),
                    LockNumber   = Math.Round(LockNumber, 3)
                }
            };
            return(dt);

            /*var storeId = nvl["storeId"];
             * var userId = nvl["userId"];
             * var date1 = nvl["date1"].IsNullOrEmpty()?new Nullable<DateTime>():DateTime.Parse(nvl["date1"]);
             * var date2 = nvl["date2"].IsNullOrEmpty()?new Nullable<DateTime>():DateTime.Parse(nvl["date2"]).AddDays(1);
             * var searchText = nvl["searchText"];
             * var express = DynamicallyLinqHelper.True<TreasuryLocks>().And(o => o.LockStoreID == storeId, storeId.IsNullOrEmpty())
             *  .And(o => o.LockDate >= date1, !date1.HasValue).And(o => o.LockDate < date2, !date2.HasValue);
             * var queryLock = BaseService<TreasuryLocks>.CurrentRepository.QueryEntity.Where(express);
             * var queryWare = WarehouseService.CurrentRepository.QueryEntity;
             * var queryProduct = BaseService<VwProduct>.CurrentRepository.QueryEntity;
             * var queryStock= CurrentRepository.QueryEntity;
             * if (!userId.IsNullOrEmpty())
             *  queryStock = queryStock.Where(o => o.CheckUID == userId);
             * var queryUser = UserInfoService.CurrentRepository.QueryEntity;
             * var query = from a in queryStock
             *          join b in queryLock on a.CheckBatch equals b.CheckBatch
             *          join c in queryWare on b.LockStoreID equals c.StoreId
             *          join d in queryProduct on a.Barcode equals d.Barcode
             *          join e in queryUser on a.CheckUID equals e.UID into g
             *          join e in queryUser on a.CreateUID equals e.UID into h
             *          from f in g.DefaultIfEmpty()
             *          from y in h.DefaultIfEmpty()
             *          let o=from x in BaseService<StockTakingLog>.CurrentRepository.QueryEntity where x.CheckBatch==a.CheckBatch && x.Barcode==a.Barcode && x.State==0 select (decimal?)x.Number
             *          where b.State==0
             *          select new
             *          {
             *              a.Id,
             *              b.CheckBatch,
             *              StoreTitle = c.Title,
             *              b.LockDate,
             *              d.ProductCode,
             *              d.Barcode,
             *              d.Title,
             *              d.BrandTitle,
             *              d.SubUnit,
             *              ActualNumber=a.ActualNumber??o.Sum(),
             *              f.FullName,
             *              CreateName=y.FullName,
             *              d.CategorySN,
             *              a.LockNumber
             *          };
             * if(!searchText.IsNullOrEmpty())
             *  query=query.Where(o=>(o.CheckBatch.StartsWith(searchText) || o.Barcode.StartsWith(searchText) || o.Title.Contains(searchText)));
             * var ls = new List<object>();
             * recordCount = 0;
             * if (ispage)
             * {
             *  recordCount = query.Count();
             *  var list = query.ToPageList();
             *  ls.AddRange(list);
             * }
             * else
             * {
             *  ls.AddRange(query.ToList());
             * }
             * return ls;*/
        }