/// <summary> /// 添加【其它出库单】 /// </summary> /// <param name="db"></param> /// <param name="bill">其它出库单</param> /// <param name="details">其它出库明细</param> /// <returns></returns> public static void AddOtherOut(SpareEntities db, TB_BILL bill, List <TB_OTHER_OUT> details) { { SetBillNum(bill); //设置单据编号 details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 BillController.AddOrUpdate(db, bill); //添加单据 foreach (var detail in details) { OtherOutController.AddOrUpdate(db, detail); //添加明细 } var subBillType = (SubBillType)bill.SubBillType; switch (subBillType) { //出库 case SubBillType.OtherOut: //其它出库 // case SubBillType.ReturnToSupplier: //原料退货 case SubBillType.InventoryLoss: //盘亏 case SubBillType.ScrapDestroy: //报废销毁 var detailsOut = details.Select(detail => detail.ToStockDetailOut(bill)).ToList(); StockDetailController.ListOut(db, bill, detailsOut); //更新【库存主表】【库存明细】出库 break; default: throw new WmsException(ResultCode.Exception, bill.BillNum, "单据二级类型错误"); } NotifyController.AddNotify(db, bill.OperName, NotifyType.OtherOutApprove, bill.BillNum, ""); } }
/// <summary> /// 添加移库单,原料入库,成品入库,原料发货,成品出库,其它移库等等都当做移库处理,以SubBillType进行区分 /// </summary> /// <param name="db"></param> /// <param name="bill"></param> /// <param name="details"></param> /// <returns></returns> public static void AddStockMove(SpareEntities db, TB_BILL bill, List <TB_STOCK_MOVE> details) { SetBillNum(bill); //设置单据编号 details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 BillController.AddOrUpdate(db, bill); //添加【移库单】单据 StockMoveController.AddList(db, details); //添加【移库单】明细 StockDetailController.ListMove(db, bill, details); //更新【库存主表】【库存明细】 NotifyController.AddNotify(db, bill.OperName, NotifyType.StockMoveApprove, bill.BillNum, ""); }
private void grid_CellValueChanged(object sender, GridCellValueChangedEventArgs e) { GridCell cell = e.GridCell; var row = (GridRow)e.GridPanel.Rows[cell.RowIndex]; //根据选择的零件号,获取库存批次,单价 if (cell.GridColumn == gcPartCode) { var stockDetail = StockDetailController.GetListByPartCode(_db, cell.Value.ToString()).OrderBy(p => p.Batch).FirstOrDefault(); row.Cells[gcBatch].Value = stockDetail.Batch; row.Cells[gcFromLocCode].Value = stockDetail.LocCode; } }
/// <summary> /// 确认【拣料单】 /// </summary> /// <param name="db"></param> /// <param name="bill"></param> /// <param name="details"></param> /// <returns></returns> public static void FinishMaterialOut(SpareEntities db, TB_BILL bill, List <TB_OUT> details) { //校验单据状态是否为执行中 if (bill.State != (int)BillState.New) { throw new WmsException(ResultCode.DataStateError, bill.BillNum, "状态错误,不应为:" + bill.State); } foreach (var detail in details) { var detailOut = detail.ToStockDetailOut(); StockDetailController.Out(db, bill, detailOut); } BillController.UpdateState(db, bill, BillState.Finished); //更新【拣料单】状态为:完成 NotifyController.AddNotify(db, bill.OperName, NotifyType.MaterialOutApprove, bill.BillNum, ""); }
/// <summary> /// 添加【其它出入库单】 /// </summary> /// <param name="db"></param> /// <param name="bill">其它出入库单</param> /// <param name="details">其它出入库明细</param> /// <returns></returns> public static void AddOtherIn(SpareEntities db, TB_BILL bill, List <TB_OTHER_IN> details) { { SetBillNum(bill); //设置单据编号 details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 BillController.AddOrUpdate(db, bill); //添加单据 foreach (var detail in details) { OtherInController.AddOrUpdate(db, detail); //添加明细 } var subBillType = (SubBillType)bill.SubBillType; switch (subBillType) { //出库 case SubBillType.OtherOut: //其它出库 // case SubBillType.ReturnToSupplier: //原料退货 case SubBillType.InventoryLoss: //盘亏 case SubBillType.ScrapDestroy: //报废销毁 // var detailsOut = details.Select(detail => detail.ToStockDetailOut(bill)).ToList(); // StockDetailController.ListOut(db, bill, detailsOut); //更新【库存主表】【库存明细】出库 // break; //入库 case SubBillType.OtherIn: //其它入库 // case SubBillType.ProductReturn: //成品退货 case SubBillType.InventoryProfit: //盘盈 var detailsIn = details.Select(detail => detail.ToStockDetailIn(bill)).ToList(); StockDetailController.ListIn(db, bill, detailsIn); //更新【库存主表】【库存明细】入库 break; case SubBillType.ProductUndecide: //隔离 case SubBillType.ProductScrap: //报废 // var detailsMove = details.Select(p => p.ToStockMove()).ToList(); // StockDetailController.ListMove(db, bill, detailsMove); //更新【库存主表】【库存明细】 break; default: throw new WmsException(ResultCode.Exception, bill.BillNum, "单据二级类型错误"); } NotifyController.AddNotify(db, bill.OperName, NotifyType.OtherInApprove, bill.BillNum, ""); } }
/// <summary> /// 添加【原料收货单】 /// </summary> /// <param name="db"></param> /// <param name="billList">原料收货单列表</param> /// <param name="detailList">原料收货明细列表</param> /// <returns></returns> public static void AddMaterialIn(SpareEntities db, List <TB_BILL> billList, List <TB_IN> detailList) { { foreach (var bill in billList) { SetBillNum(bill); //设置单据编号 detailList.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 BillController.AddOrUpdate(db, bill); //添加【原料收货单】单据 SpareInController.AddList(db, detailList); //添加【原料收货单】明细 var stockDetails = detailList.Select(detail => detail.ToStockDetailIn(bill)).ToList(); StockDetailController.ListIn(db, bill, stockDetails); //更新【库存主表】【库存明细】 } EntitiesFactory.SaveDb(db); } }
/// <summary> /// 添加【盘点计划】 /// </summary> /// <param name="db"></param> /// <param name="bill">盘点计划</param> /// <param name="locList">盘点库位明细</param> /// <returns></returns> public static void AddInventoryLoc(SpareEntities db, TB_BILL bill, List <TB_INVENTORY_LOC> locList) { { //新单据,增加盘点的三张表 if (string.IsNullOrEmpty(bill.BillNum)) { SetBillNum(bill); //设置单据编号 locList.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号 InventoryController.AddLocList(db, locList); //添加盘点库位列表 foreach (var locBill in locList) { var stockDetailList = StockDetailController.GetTListByLocCode(db, locBill.LocCode); var inventoryDetailList = (stockDetailList.Select(p => p.ToInventoryDetail(locBill))).ToList(); InventoryController.AddDetailList(db, inventoryDetailList); //添加盘点明细 } NotifyController.AddNotify(db, bill.OperName, NotifyType.InventoryPlan, bill.BillNum, ""); //添加【叫料提醒单】 } else { //修改单据,对第二、三张表的增加或删除 foreach (var locBill in locList) { if (db.TB_INVENTORY_LOC.FirstOrDefault(p => p.BillNum == bill.BillNum && p.LocCode == locBill.LocCode) == null) { InventoryController.AddLocList(db, locList); //添加盘点库位列表 var stockDetailList = StockDetailController.GetTListByLocCode(db, locBill.LocCode); var inventoryDetailList = (stockDetailList.Select(p => p.ToInventoryDetail(locBill))).ToList(); InventoryController.AddDetailList(db, inventoryDetailList); //添加盘点明细 } } var DBLocList = db.TB_INVENTORY_LOC.Where(p => p.BillNum == bill.BillNum).ToList(); foreach (var loc in DBLocList) { if (locList.SingleOrDefault(p => p.LocCode == loc.LocCode) == null) { InventoryController.DeleteInventory(db, loc); } } NotifyController.AddNotify(db, bill.OperName, NotifyType.InventoryPlanUpdate, bill.BillNum, ""); //添加【叫料提醒单】 } InventoryController.AddOrUpdate(db, bill); //添加盘点单据 } }
private void grid_CellValueChanged(object sender, GridCellValueChangedEventArgs e) { GridCell cell = e.GridCell; var row = (GridRow)e.GridPanel.Rows[cell.RowIndex]; //相同批次的物料,看库存中是否有单价 if (cell.GridColumn == gcPartCode || cell.GridColumn == gcBatch) { if (row[gcPartCode].Value != null) { var partcode = row[gcPartCode].Value.ToString(); if (row[gcBatch].Value != null) { var batch = row[gcBatch].Value.ToString(); var stockDetail = StockDetailController.GetListByPartCode(_db, partcode) .Where(p => p.Batch == batch) .OrderBy(p => p.Batch) .FirstOrDefault(); if (stockDetail != null) { row.Cells[gcUnitPrice].Value = stockDetail.UnitPrice; } } } if (row[gcProduceDate].Value == null) { row[gcProduceDate].Value = DateTime.Now; } } //根据出库数量,自动计算金额 if (cell.GridColumn == gcUnitPrice || cell.GridColumn == gcQty) { if (Convert.ToString(row.Cells[gcUnitPrice].Value) != "" && Convert.ToString(row.Cells[gcQty].Value) != "") { row.Cells[gcAmount].Value = (decimal)row.Cells[gcUnitPrice].Value * (decimal)row.Cells[gcQty].Value; } } }
/// <summary> /// 执行【领用还回单】 /// </summary> /// <param name="db"></param> /// <param name="billList">领用还回单列表</param> /// <param name="detailList">领用还回明细列表</param> /// <returns></returns> public static void ExecuteSpareReturn(SpareEntities db, TB_BILL bill, List <TB_RETURN> detailList) { { foreach (var detail in detailList) { var stockDetail = new TS_STOCK_DETAIL() { LocCode = detail.ToLocCode, PartCode = detail.PartCode, Batch = detail.Batch, Qty = (decimal)detail.InQty, UnitPrice = detail.UnitPrice, UpdateQty = (decimal)detail.InQty }; var stockDetails = new List <TS_STOCK_DETAIL>(); stockDetails.Add(stockDetail); StockDetailController.ListIn(db, bill, stockDetails); //更新【库存主表】【库存明细】 NotifyController.AddNotify(db, bill.OperName, NotifyType.SpareReturnApprove, bill.BillNum, ""); } EntitiesFactory.SaveDb(db); } }
public static StockDetailController Fixture() { StockDetailController controller = new StockDetailController(new StockDetailRepository(), "", new LoginView()); return(controller); }
public static StockDetailController Fixture() { StockDetailController controller = new StockDetailController(new StockDetailRepository(), "", new LoginView()); return controller; }