Пример #1
0
        /// <summary>
        /// 得到所有耗材采购单
        /// </summary>
        /// <returns></returns>
        public DataTable GetOrders()
        {
            var FirstOrders = _ConPurchaseOrderReposity.GetAll();
            var result      = from Order in FirstOrders
                              join User in _SMOWMSDbContext.coreUsers on Order.PURCHASER equals User.USER_ID
                              select new ConPurchaseOrderOutputDto()
            {
                POID          = Order.POID,
                NAME          = Order.NAME,
                REALID        = Order.REALID,
                STATUS        = Order.STATUS,
                PURCHASER     = Order.PURCHASER,
                PURCHASERNAME = User.USER_NAME,
                CREATEDATE    = Order.CREATEDATE,
                TIME          = ""
            };
            var OrderTable = LINQToDataTable.ToDataTable(result);

            foreach (DataRow Row in OrderTable.Rows)
            {
                ConPurchaseOrderRow conPurchaseOrderRow = _ConPurchaseOrderRowReposity.GetByPOID(Row["POID"].ToString()).FirstOrDefault();
                Consumables         consumables         = _consumablesRepository.GetByID(conPurchaseOrderRow.CID).FirstOrDefault();
                Row["Image"] = consumables.IMAGE;

                Row["STATUSNAME"] = Enum.GetName(typeof(PurchaseOrderStatus), int.Parse(Row["STATUS"].ToString()));
                Row["TIME"]       = DateTime.Parse(Row["CREATEDATE"].ToString()).ToShortDateString();
            }
            return(OrderTable);
        }
Пример #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 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);
            }
        }
Пример #4
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);
            }
        }
Пример #5
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);
                }
            }
        }