示例#1
0
        /// <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);
                }
            }
        }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        /// <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);
                }
            }
        }