/// <summary> /// 删除采购单 /// </summary> /// <param name="POID"></param> /// <returns></returns> public ReturnInfo DeletePurchaseOrder(string POID) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); ConPurchaseOrder Order = _ConPurchaseOrderReposity.GetById(POID).FirstOrDefault(); if (Order == null) { sb.Append("未找到该采购单!"); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } else { ///根据盘点单状态进行操作 if (Order.STATUS == (int)PurchaseOrderStatus.采购中) { //可以删除 try { _unitOfWork.RegisterDeleted(Order); List <ConPurchaseOrderRow> Rows = _ConPurchaseOrderRowReposity.GetByPOID(POID).ToList(); if (Rows.Count > 0) //如果存在行项 { foreach (ConPurchaseOrderRow Row in Rows) { _unitOfWork.RegisterDeleted(Row); } } _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); } } else { sb.Append("已经开始采购,无法删除采购单!"); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } } }
/// <summary> /// 耗材采购单创建 /// </summary> /// <param name="inputDto"></param> /// <returns></returns> public ReturnInfo AddPurchaseOrder(ConPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); if (string.IsNullOrEmpty(inputDto.NAME)) { throw new Exception("采购单名称不能为空!"); } if (string.IsNullOrEmpty(inputDto.PURCHASER)) { throw new Exception("请选择采购人!"); } String MaxID = _ConPurchaseOrderReposity.GetMaxID(); //获取最大采购单ID String NowID = Helper.GenerateID("PO", MaxID); //产生采购单编号 inputDto.POID = NowID; try { ConPurchaseOrder purchaseOrder = new ConPurchaseOrder(); purchaseOrder = Mapper.Map <ConPurchaseOrderInputDto, ConPurchaseOrder>(inputDto); purchaseOrder.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrder); foreach (var Row in inputDto.RowData) { ConPurchaseOrderRow purchaseOrderRow = new ConPurchaseOrderRow(); purchaseOrderRow = Mapper.Map <ConPurchaseOrderRowInputDto, ConPurchaseOrderRow>(Row); purchaseOrderRow.POID = NowID; purchaseOrderRow.CREATEUSER = inputDto.CREATEUSER; purchaseOrderRow.CREATEDATE = DateTime.Now; purchaseOrderRow.MODIFYUSER = inputDto.MODIFYUSER; purchaseOrderRow.MODIFYDATE = DateTime.Now; purchaseOrderRow.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrderRow); } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = inputDto.POID; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; 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); } }
/// <summary> /// 更新采购单 /// </summary> /// <param name="inputDto"></param> /// <returns></returns> public ReturnInfo UpdatePruchaseOrder(ConPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); ConPurchaseOrder Order = _ConPurchaseOrderReposity.GetById(inputDto.POID).FirstOrDefault(); if (Order == null) { sb.Append("该采购单不存在,请检查!"); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } else //采购单存在 { Order.REALID = inputDto.REALID; Order.NAME = inputDto.NAME; Order.VID = inputDto.VID; Order.PURCHASER = inputDto.PURCHASER; Order.MODIFYDATE = inputDto.MODIFYDATE; Order.MODIFYUSER = inputDto.MODIFYUSER; _unitOfWork.RegisterDirty(Order); //如果原来存在行项,则先删除 List <ConPurchaseOrderRow> Rows = _ConPurchaseOrderRowReposity.GetByPOID(inputDto.POID).ToList(); if (Rows.Count > 0) //如果存在行项 { foreach (ConPurchaseOrderRow Row in Rows) { _unitOfWork.RegisterDeleted(Row); } } ///添加新的选择行项 foreach (ConPurchaseOrderRowInputDto Row in inputDto.RowData) { ConPurchaseOrderRow purchaseOrderRow = new ConPurchaseOrderRow(); purchaseOrderRow = Mapper.Map <ConPurchaseOrderRowInputDto, ConPurchaseOrderRow>(Row); purchaseOrderRow.POID = inputDto.POID; purchaseOrderRow.CREATEUSER = inputDto.CREATEUSER; purchaseOrderRow.CREATEDATE = DateTime.Now; purchaseOrderRow.MODIFYUSER = inputDto.MODIFYUSER; purchaseOrderRow.MODIFYDATE = DateTime.Now; purchaseOrderRow.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrderRow); } 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); } } }