コード例 #1
0
 private void FormLog_Load(object sender, EventArgs e)
 {
     _billList     = new List <VIEW_IO_SUMMARY_ByStock>();
     _selectedBill = new VIEW_IO_SUMMARY_ByStock();
     GetBillList();
 }
コード例 #2
0
        /// <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);
        }