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); }
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 |||||||}); |||||||}*/ }
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;*/ }