private void FormLog_Load(object sender, EventArgs e) { _billList = new List <VIEW_IO_SUMMARY_ByStock>(); _selectedBill = new VIEW_IO_SUMMARY_ByStock(); GetBillList(); }
/// <summary> /// 计算出入库汇总表 /// </summary> /// <param name="db"></param> /// <param name="beginTime"></param> /// <param name="endTime"></param> /// <returns></returns> public static List <VIEW_IO_SUMMARY_ByStock> GetIoSummarysByStockDetailList(SpareEntities db, DateTime beginTime, DateTime endTime) { var NowTime = db.Database.SqlQuery <DateTime>("select getdate()").FirstOrDefault(); var detailList = new List <VIEW_IO_SUMMARY_ByStock>(); var PartList = db.TA_PART.ToList(); var TranList = db.TL_TRANSACTION.ToList(); var StoreList = db.TA_STORE_WHSE.ToList(); var StockList = db.TS_STOCK_DETAIL.ToList(); var BillCalc = db.TA_BILLTYPE.Where(p => (bool)p.IsCalc).Select(x => x.BillType).ToList(); foreach (var part in PartList) { foreach (var store in StoreList) { var LocList = db.TA_STORE_LOCATION.Where(p => p.WhseCode == store.WhseCode).Select(x => x.LocCode).ToList(); var TranIn = TranList.Where( p => p.LogTime >= beginTime && p.LogTime <= endTime && BillCalc.Contains(p.BillType) && LocList.Contains(p.LocCode) && p.PartCode == part.PartCode && p.Remark == "In"); var TranOut = TranList.Where( p => p.LogTime >= beginTime && p.LogTime <= endTime && BillCalc.Contains(p.BillType) && LocList.Contains(p.LocCode) && p.Remark == "Out"); //计算筛选的结束时间到当前时间的发生额 var TranNowIn = TranList.Where( p => p.LogTime >= endTime && p.LogTime <= NowTime && BillCalc.Contains(p.BillType) && LocList.Contains(p.LocCode) && p.PartCode == part.PartCode && p.Remark == "In"); var TranNowOut = TranList.Where( p => p.LogTime >= endTime && p.LogTime <= NowTime && BillCalc.Contains(p.BillType) && LocList.Contains(p.LocCode) && p.Remark == "Out"); var CalStock = StockList.Where(p => p.PartCode == part.PartCode); var IOSum = new VIEW_IO_SUMMARY_ByStock(); IOSum.库房 = store.WhseCode; IOSum.零件号 = part.PartCode; IOSum.入库数量 = TranIn.Sum(p => p.Qty); IOSum.入库金额 = TranIn.Sum(p => p.Qty * p.UnitPrice); IOSum.出库数量 = 0 - TranOut.Sum(p => p.Qty); IOSum.出库金额 = 0 - TranOut.Sum(p => p.Qty * p.UnitPrice); IOSum.当前库存 = CalStock.Sum(p => p.Qty); IOSum.当前库存金额 = CalStock.Sum(p => p.Qty * p.UnitPrice); IOSum.结束库存 = IOSum.当前库存 - TranNowIn.Sum(p => p.Qty) + (0 - TranNowOut.Sum(p => p.Qty)); IOSum.结束库存金额 = IOSum.当前库存金额 - TranNowIn.Sum(p => p.Qty * p.UnitPrice) + (0 - TranNowOut.Sum(p => p.Qty * p.UnitPrice)); IOSum.开始库存 = IOSum.结束库存 - IOSum.入库数量 + IOSum.出库数量; IOSum.开始库存金额 = IOSum.结束库存金额 - IOSum.入库金额 + IOSum.出库金额; if (IOSum.入库数量 == 0 && IOSum.出库数量 == 0 && IOSum.当前库存 == 0) { continue; } detailList.Add(IOSum); } } return(detailList); }