Example #1
0
 /// <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);
     }
 }
Example #2
0
 /// <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);
     }
 }
Example #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);
            }
        }
Example #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);
            }
        }