/// <summary> /// 入库提交 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Press(object sender, EventArgs e) { try { if (String.IsNullOrEmpty(lblLocation.Text)) { throw new Exception("请扫描调入库位!"); } List <ConPurchaseOrderRowInputDto> Rows = new List <ConPurchaseOrderRowInputDto>(); foreach (ListViewRow row in listCons.Rows) { frmConPORInStoLayout Layout = row.Control as frmConPORInStoLayout; if (Layout.getData() != null) { Rows.Add(Layout.getData()); //添加入库信息 } } if (Rows.Count == 0) { throw new Exception("请选择入库耗材!"); } String[] locDatas = lblLocation.Tag.ToString().Split('/'); ConPOInStoInputDto stoInputDto = new ConPOInStoInputDto(); stoInputDto.POID = POID; stoInputDto.WAREID = locDatas[0]; stoInputDto.STID = locDatas[1]; stoInputDto.SLID = locDatas[2]; stoInputDto.CREATEUSER = Client.Session["UserID"].ToString(); stoInputDto.RowDatas = Rows; ReturnInfo RInfo = autofacConfig.ConPurchaseOrderService.InStoConPurhcaseOrder(stoInputDto); if (RInfo.IsSuccess) { List <ConPORInstorageOutputDto> rows = autofacConfig.ConPurchaseOrderService.GetInStoRowsByPOID(POID); if (rows.Count == 0) { Toast("该采购单入库完成!"); Form.Close(); } else { Toast("入库成功!"); Bind(); //刷新当前页面入库数据 lblLocation.Text = ""; lblLocation.Tag = null; Checkall.Checked = false; } } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 提交退库操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Press(object sender, EventArgs e) { try { List <ConPurchaseOrderRowInputDto> Rows = new List <ConPurchaseOrderRowInputDto>(); foreach (ListViewRow row in listCons.Rows) { frmConPORReturnLayout Layout = row.Control as frmConPORReturnLayout; if (Layout.getData() != null) { Rows.Add(Layout.getData()); //添加入库信息 } } if (Rows.Count == 0) { throw new Exception("请选择退库耗材!"); } ConPOInStoInputDto stoInputDto = new ConPOInStoInputDto(); stoInputDto.POID = POID; stoInputDto.CREATEUSER = Client.Session["UserID"].ToString(); stoInputDto.RowDatas = Rows; ReturnInfo RInfo = autofacConfig.ConPurchaseOrderService.ReturnConPurchaseOrder(stoInputDto); if (RInfo.IsSuccess) { List <ConPurchaseOrderReturnOutputDto> rows = autofacConfig.ConPurchaseOrderService.GetReturnRowsByPOID(POID); if (rows.Count == 0) { Toast("该采购单退库完成!"); Form.Close(); } else { Toast("退库成功!"); Bind(); //刷新当前页面入库数据 Checkall.Checked = false; } } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 耗材采购单退库 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo ReturnConPurchaseOrder(ConPOInStoInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); foreach (ConPurchaseOrderRowInputDto row in entity.RowDatas) { ConPurchaseOrderReturn hasReturn = _conPurchaseOrderReturnReposity.GetByPOIDAndWareID(entity.POID, row.POROWID, row.WAREID, row.STID, row.SLID).FirstOrDefault(); if (hasReturn == null) //不存在退库行项 { ConPurchaseOrderReturn orderReturn = new ConPurchaseOrderReturn(); orderReturn.POID = entity.POID; orderReturn.POROWID = row.POROWID; orderReturn.WAREID = row.WAREID; orderReturn.STID = row.STID; orderReturn.SLID = row.SLID; orderReturn.QUANT = row.QUANTRETREATED; _unitOfWork.RegisterNew(orderReturn); } else //已存在退库行项 { hasReturn.QUANT = hasReturn.QUANT + row.QUANTRETREATED; _unitOfWork.RegisterDirty(hasReturn); } ConPurchaseOrderRow orderRow = _ConPurchaseOrderRowReposity.GetOrderRowByCID(entity.POID, row.CID).FirstOrDefault(); orderRow.QUANTRETREATED = orderRow.QUANTRETREATED + row.QUANTRETREATED; if (orderRow.QUANTRETREATED > orderRow.QUANTSTORED) { throw new Exception("实际退库数量不可大于可退库数量!"); } _unitOfWork.RegisterDirty(orderRow); ConQuant conq = _conQuantRepository.GetByCID(row.CID, row.WAREID, row.STID, row.SLID).FirstOrDefault(); if (conq == null) //如果原先不存在相关库存,则添加库存信息 { throw new Exception("不存在耗材编号为" + row.CID + "的库存,请检查!"); } else { conq.QUANTITY = conq.QUANTITY - row.QUANTRETREATED; if (conq.QUANTITY < 0) { throw new Exception("耗材" + row.CID + "库存不足,无法退库!"); } else if (conq.QUANTITY == 0) { _unitOfWork.RegisterDeleted(conq); } else { _unitOfWork.RegisterDirty(conq); } } } try { _unitOfWork.Commit(); RInfo.IsSuccess = true; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }
/// <summary> /// 耗材采购单入库 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo InStoConPurhcaseOrder(ConPOInStoInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); if (String.IsNullOrEmpty(entity.WAREID) || String.IsNullOrEmpty(entity.STID) || String.IsNullOrEmpty(entity.SLID)) { throw new Exception("请扫描调入库位!"); } int thisOver = 0; //此次完成入库的行项数 foreach (ConPurchaseOrderRowInputDto row in entity.RowDatas) { ConPurchaseOrderInstorage hasInSto = _conPurchaseOrderInstorageReposity.GetByPOIDAndWareID(entity.POID, row.POROWID, entity.WAREID, entity.STID, entity.SLID).FirstOrDefault(); if (hasInSto == null) //不存在入库行项 { ConPurchaseOrderInstorage instorage = new ConPurchaseOrderInstorage(); instorage.POID = entity.POID; instorage.POROWID = row.POROWID; instorage.WAREID = entity.WAREID; instorage.STID = entity.STID; instorage.SLID = entity.SLID; instorage.QUANT = row.QUANTSTORED; _unitOfWork.RegisterNew(instorage); } else //已存在入库行项 { hasInSto.QUANT = hasInSto.QUANT + row.QUANTSTORED; _unitOfWork.RegisterDirty(hasInSto); } //OrderRow表修改入库数量以及状态 ConPurchaseOrderRow orderRow = _ConPurchaseOrderRowReposity.GetOrderRowByCID(entity.POID, row.CID).FirstOrDefault(); orderRow.QUANTSTORED = orderRow.QUANTSTORED + row.QUANTSTORED; orderRow.STATUS = (int)PurchaseOrderStatus.入库中; if (orderRow.QUANTSTORED == orderRow.QUANTPURCHASED) { orderRow.STATUS = (int)PurchaseOrderStatus.已完成; thisOver += 1; } if (orderRow.QUANTSTORED > orderRow.QUANTPURCHASED) { throw new Exception("实际入库数量不可大于可入库数量!"); } _unitOfWork.RegisterDirty(orderRow); ConQuant con = _conQuantRepository.GetByCID(row.CID, entity.WAREID, entity.STID, entity.SLID).FirstOrDefault(); if (con == null) //如果原先不存在相关库存,则添加库存信息 { ConQuant conQuant = new ConQuant(); conQuant.CID = row.CID; conQuant.WAREID = entity.WAREID; conQuant.STID = entity.STID; conQuant.SLID = entity.SLID; conQuant.QUANTITY = row.QUANTSTORED; conQuant.CREATEDATE = DateTime.Now; conQuant.CREATEUSER = entity.CREATEUSER; conQuant.MODIFYDATE = DateTime.Now; conQuant.MODIFYUSER = entity.CREATEUSER; _unitOfWork.RegisterNew(conQuant); } else { con.QUANTITY = con.QUANTITY + row.QUANTSTORED; _unitOfWork.RegisterDirty(con); } } //order表修改状态 ConPurchaseOrder conPurchaseOrder = _ConPurchaseOrderReposity.GetById(entity.POID).FirstOrDefault(); int allRowsCount = _ConPurchaseOrderRowReposity.GetByPOID(entity.POID).ToList().Count; int hasOverCount = _ConPurchaseOrderRowReposity.GetOrderRowsByStatus(entity.POID, (int)PurchaseOrderStatus.已完成).ToList().Count; if (allRowsCount == hasOverCount + thisOver) { conPurchaseOrder.STATUS = (int)PurchaseOrderStatus.已完成; } else { conPurchaseOrder.STATUS = (int)PurchaseOrderStatus.入库中; } _unitOfWork.RegisterDirty(conPurchaseOrder); try { _unitOfWork.Commit(); RInfo.IsSuccess = true; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }