Ejemplo n.º 1
0
 /// <summary>
 /// 数据加载
 /// </summary>
 public void Bind()
 {
     try
     {
         DataTable tableAssets = new DataTable();     //未开启SN的资产列表
         tableAssets.Columns.Add("CID");              //资产编号
         tableAssets.Columns.Add("NAME");             //资产名称
         tableAssets.Columns.Add("LOCATIONID");       //区域编号
         tableAssets.Columns.Add("LOCATIONNAME");     //区域名称
         tableAssets.Columns.Add("IMAGE");            //图片编号
         tableAssets.Columns.Add("QUANTITY");         //空闲数量
         tableAssets.Columns.Add("SELECTQTY");        //选择数量
         if (RowData.Count > 0)
         {
             foreach (ConsumablesOrderRow Row in RowData)
             {
                 ConQuant    conQuant = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.LOCATIONID);
                 Consumables con      = autofacConfig.orderCommonService.GetConsByID(Row.CID);
                 AssLocation Loc      = autofacConfig.assLocationService.GetByID(Row.LOCATIONID);
                 tableAssets.Rows.Add(Row.CID, con.NAME, Row.LOCATIONID, Loc.NAME, con.IMAGE, conQuant.QUANTITY, Row.QTY);
             }
         }
         ListAssets.DataSource = tableAssets;
         ListAssets.DataBind();
     }
     catch (Exception ex)
     {
         Toast(ex.Message);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 数据加载
 /// </summary>
 public void Bind()
 {
     try
     {
         DataTable tableAssets = new DataTable();       //未开启SN的资产列表
         tableAssets.Columns.Add("CID");                //资产编号
         tableAssets.Columns.Add("NAME");               //资产名称
         tableAssets.Columns.Add("LOCID");              //   仓库/存储类型/库位
         tableAssets.Columns.Add("LOCNAME");            //   仓库名称/类型名称/库位名称
         tableAssets.Columns.Add("IMAGE");              //图片编号
         tableAssets.Columns.Add("QUANTITY");           //空闲数量
         tableAssets.Columns.Add("SELECTQTY");          //选择数量
         if (RowData.Count > 0)
         {
             foreach (ConsumablesOrderRow Row in RowData)
             {
                 ConQuant    conQuant             = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.WAREID, Row.STID, Row.SLID);
                 Consumables con                  = autofacConfig.consumablesService.GetConsById(Row.CID);
                 WHStorageLocationOutputDto WHLoc = autofacConfig.wareHouseService.GetSLByID(Row.WAREID, Row.STID, Row.SLID);
                 tableAssets.Rows.Add(Row.CID, con.NAME, Row.WAREID + "/" + Row.STID + "/" + Row.SLID, WHLoc.WARENAME + "/" + WHLoc.STNAME + "/" + WHLoc.SLNAME, con.IMAGE, conQuant.QUANTITY, Row.QTY);
             }
         }
         ListCons.DataSource = tableAssets;
         ListCons.DataBind();
     }
     catch (Exception ex)
     {
         Toast(ex.Message);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 数据加载
        /// </summary>
        public void Bind()
        {
            try
            {
                foreach (ConsumablesOrderRow data in RowData)
                {
                    foreach (ListViewRow row in ListCons.Rows)
                    {
                        frmOrderCreateLayout Layout = row.Control as frmOrderCreateLayout;
                        string[]             LCData = Layout.lblLocation.BindDataValue.ToString().Split('/');
                        string cId = Layout.lblName.BindDataValue.ToString();
                        if (data.CID == cId && data.WAREID == LCData[0] &&
                            data.STID == LCData[1] && data.SLID == LCData[2])
                        {
                            data.QTY = (Decimal)Layout.numNumber.Value;
                        }
                    }
                }

                DataTable tableAssets = new DataTable();       //未开启SN的资产列表
                tableAssets.Columns.Add("CID");                //资产编号
                tableAssets.Columns.Add("NAME");               //资产名称
                tableAssets.Columns.Add("LOCID");              //   仓库/存储类型/库位
                tableAssets.Columns.Add("LOCNAME");            //   仓库名称/类型名称/库位名称
                tableAssets.Columns.Add("IMAGE");              //图片编号
                tableAssets.Columns.Add("QUANTITY");           //空闲数量
                tableAssets.Columns.Add("SELECTQTY");          //选择数量

                if (RowData.Count > 0)
                {
                    foreach (ConsumablesOrderRow Row in RowData)
                    {
                        ConQuant    conQuant             = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.WAREID, Row.STID, Row.SLID);
                        Consumables con                  = autofacConfig.consumablesService.GetConsById(Row.CID);
                        WHStorageLocationOutputDto WHLoc = autofacConfig.wareHouseService.GetSLByID(Row.WAREID, Row.STID, Row.SLID);
                        tableAssets.Rows.Add(Row.CID, con.NAME, Row.WAREID + "/" + Row.STID + "/" + Row.SLID, WHLoc.WARENAME + "/" + WHLoc.STNAME + "/" + WHLoc.SLNAME, con.IMAGE, conQuant.QUANTITY, Row.QTY);
                    }
                }
                ListCons.DataSource = tableAssets;
                ListCons.DataBind();
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 耗材扫描
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void barcodeScanner1_BarcodeScanned(object sender, BarcodeResultArgs e)
 {
     try
     {
         string CID  = e.Value.ToUpper();
         var    con  = _autofacConfig.consumablesService.GetConsById(CID);
         String STID = (lblST.Tag == null) ? null : lblST.Tag.ToString();
         String SLID = (lblSL.Tag == null) ? null : lblSL.Tag.ToString();
         if (con != null)
         {
             ConInventoryResult result = _autofacConfig.ConInventoryService.GetResultByCID(IID, CID);
             if (result != null)
             {
                 if (result.RESULT.ToString() != "0")
                 {
                     throw new Exception("该耗材已盘点完毕,请勿重复盘点!");
                 }
                 frmCIResultTotalLayout frm = new frmCIResultTotalLayout();
                 ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID);
                 frm.lblNumber.Text = conq.QUANTITY.ToString();
                 frm.CID            = CID;
                 Form.ShowDialog(frm);
             }
             else        //盘盈
             {
                 frmCIResultTotalLayout frm = new frmCIResultTotalLayout();
                 ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID);
                 frm.plNumber.Visible = false;
                 frm.Height           = 120;
                 frm.CID = CID;
                 Form.ShowDialog(frm);
             }
         }
         else
         {
             Toast("未找到对应的耗材!");
         }
     }
     catch (Exception ex)
     {
         Toast(ex.Message);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 耗材销售单退货
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo RetConSalesOrder(ConSOOutboundInputDto entity)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            foreach (ConSalesOrderRowInputDto Row in entity.RowDatas)
            {
                //新增退库行项
                List <ConSalesOrderOutbound> orderOutList = _ConSalesOrderOutboundReposity.GetBySOIDAndSOROWID(entity.SOID, Row.SOROWID).AsNoTracking().ToList();
                ConSalesOrderRow             orderRow     = _ConSalesOrderRowReposity.GetOrderRowByCID(entity.SOID, Row.CID).FirstOrDefault();
                decimal hasRet  = orderRow.QUANTRETREATED;  //已经退货数
                decimal waitRet = Row.QUANTRETREATED;       //等待退货数
                foreach (ConSalesOrderOutbound orderOut in orderOutList)
                {
                    if (waitRet > 0)
                    {
                        if (hasRet >= orderOut.QUANT)
                        {
                            hasRet -= orderOut.QUANT;
                        }
                        else
                        {
                            //新增退库单数据
                            decimal canRetNum = orderOut.QUANT - hasRet;    //此行项可退库数量
                            ConSalesOrderRetiring orderRetiring = _ConSalesOrderRetiringReposity.GetBySOIDAndWareID(entity.SOID, Row.SOROWID, orderOut.WAREID, orderOut.STID, orderOut.SLID).FirstOrDefault();
                            if (orderRetiring == null)
                            {
                                ConSalesOrderRetiring orderNewRetiring = new ConSalesOrderRetiring();
                                orderNewRetiring.SOID    = entity.SOID;
                                orderNewRetiring.SOROWID = Row.SOROWID;
                                orderNewRetiring.WAREID  = orderOut.WAREID;
                                orderNewRetiring.STID    = orderOut.STID;
                                orderNewRetiring.SLID    = orderOut.SLID;
                                if (waitRet > canRetNum)
                                {
                                    waitRet -= canRetNum;
                                    orderNewRetiring.QUANT = canRetNum;
                                }
                                else
                                {
                                    orderNewRetiring.QUANT = waitRet;
                                    waitRet = 0;
                                }
                                _unitOfWork.RegisterNew(orderNewRetiring);
                                //新增或者修改ConQuant数据
                                ConQuant conQuant = _ConQuantRepository.GetByCID(Row.CID, orderNewRetiring.WAREID, orderNewRetiring.STID, orderNewRetiring.SLID).FirstOrDefault();
                                if (conQuant == null)  //当前库位不存在库存,则新增
                                {
                                    ConQuant newQuant = new ConQuant();
                                    newQuant.CID        = Row.CID;
                                    newQuant.WAREID     = orderNewRetiring.WAREID;
                                    newQuant.STID       = orderNewRetiring.STID;
                                    newQuant.SLID       = orderNewRetiring.SLID;
                                    newQuant.QUANTITY   = orderNewRetiring.QUANT;
                                    newQuant.CREATEUSER = entity.CREATEUSER;
                                    newQuant.CREATEDATE = DateTime.Now;
                                    newQuant.MODIFYUSER = entity.CREATEUSER;
                                    newQuant.MODIFYDATE = DateTime.Now;
                                    _unitOfWork.RegisterNew(newQuant);
                                }
                                else          //当前库位存在库存,则添加数量
                                {
                                    conQuant.QUANTITY += orderNewRetiring.QUANT;
                                    _unitOfWork.RegisterDirty(conQuant);
                                }
                                hasRet -= orderNewRetiring.QUANT;
                            }
                            else
                            {
                                decimal retNumThisTime = 0;
                                if (waitRet > canRetNum)
                                {
                                    waitRet            -= canRetNum;
                                    retNumThisTime      = canRetNum;
                                    orderRetiring.QUANT = orderRetiring.QUANT + canRetNum;
                                }
                                else
                                {
                                    orderRetiring.QUANT = orderRetiring.QUANT + waitRet;
                                    retNumThisTime      = waitRet;
                                    waitRet             = 0;
                                }
                                _unitOfWork.RegisterDirty(orderRetiring);
                                //新增或者修改ConQuant数据
                                ConQuant conQuant = _ConQuantRepository.GetByCID(Row.CID, orderRetiring.WAREID, orderRetiring.STID, orderRetiring.SLID).FirstOrDefault();
                                if (conQuant == null)  //当前库位不存在库存,则新增
                                {
                                    ConQuant newQuant = new ConQuant();
                                    newQuant.CID        = Row.CID;
                                    newQuant.WAREID     = orderRetiring.WAREID;
                                    newQuant.STID       = orderRetiring.STID;
                                    newQuant.SLID       = orderRetiring.SLID;
                                    newQuant.QUANTITY   = retNumThisTime;
                                    newQuant.CREATEUSER = entity.CREATEUSER;
                                    newQuant.CREATEDATE = DateTime.Now;
                                    newQuant.MODIFYUSER = entity.CREATEUSER;
                                    newQuant.MODIFYDATE = DateTime.Now;
                                    _unitOfWork.RegisterNew(newQuant);
                                }
                                else          //当前库位存在库存,则添加数量
                                {
                                    conQuant.QUANTITY += retNumThisTime;
                                    _unitOfWork.RegisterDirty(conQuant);
                                }
                                hasRet -= retNumThisTime;
                            }
                        }
                    }
                }

                //修改OrderRow行项表退库数量
                ConSalesOrderRow conSalesOrderRow = _ConSalesOrderRowReposity.GetOrderRowByCID(entity.SOID, Row.CID).FirstOrDefault();
                conSalesOrderRow.QUANTRETREATED = conSalesOrderRow.QUANTRETREATED + Row.QUANTRETREATED;
                if (conSalesOrderRow.QUANTRETREATED > conSalesOrderRow.QUANTOUT)
                {
                    throw new Exception("退货数量不能大于出库数量!");
                }
                _unitOfWork.RegisterDirty(conSalesOrderRow);
            }
            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);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 开始盘点
        /// </summary>
        /// <param name="inputDto">开始盘点时,传给后台的数据</param>
        /// <returns></returns>
        public ReturnInfo AddConInventoryResult(AddCIResultInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            if (IsExist(inputDto.IID))
            {
                RInfo.IsSuccess = true;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
            else
            {
                try
                {
                    //更新盘点单状态为盘点中
                    var inventory = _conInventoryRepository.GetConInventoryByID(inputDto.IID).FirstOrDefault();
                    if (inventory != null)
                    {
                        //添加当前的盘点单行项
                        List <string> conList = _conQuantRepository.GetInventoryCons(inventory.LOCATIONID).Select(a => a.CID).ToList();
                        inventory.STATUS      = (int)InventoryStatus.盘点中;
                        inventory.TOTAL       = conList.Count;
                        inventory.RESULTCOUNT = 0;
                        _unitOfWork.RegisterDirty(inventory);

                        foreach (var con in conList)
                        {
                            ConQuant           conQuant = _conQuantRepository.GetByCID(con, inventory.LOCATIONID).FirstOrDefault();
                            ConInventoryResult result   = new ConInventoryResult
                            {
                                IID        = inputDto.IID,
                                CID        = con,
                                RESULT     = 0,
                                TOTAL      = conQuant.QUANTITY,
                                CREATEDATE = DateTime.Now,
                                CREATEUSER = inputDto.UserId,
                                MODIFYDATE = DateTime.Now,
                                MODIFYUSER = inputDto.UserId
                            };
                            _unitOfWork.RegisterNew(result);

                            //更新盘点的物品状态为锁定
                            var conq = _conQuantRepository.GetQuants(inputDto.LocationId, con).FirstOrDefault();
                            if (conq != null)
                            {
                                conq.ISLOCKED = 1;
                                _unitOfWork.RegisterDirty(conq);
                            }
                        }
                    }
                    _unitOfWork.Commit();
                    RInfo.IsSuccess = true;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 根据库位等编号和耗材编号得到耗材库存
        /// </summary>
        /// <param name="WAREID">仓库编号</param>
        /// <param name="STID">类型编号</param>
        /// <param name="SLID">库位编号</param>
        /// <param name="CID">耗材编号</param>
        /// <returns></returns>
        public ConQuant GetQuants(string WAREID, string STID, string SLID, string CID)
        {
            ConQuant conQuant = _conQuantRepository.GetByCID(CID, WAREID, STID, SLID).FirstOrDefault();

            return(conQuant);
        }
Ejemplo n.º 8
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);
            }
        }
Ejemplo n.º 9
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);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 添加入库单
        /// </summary>
        /// <param name="inputDto">入库单信息</param>
        /// <returns></returns>
        public ReturnInfo AddWarehouseReceipt(WarehouseReceiptInputDto inputDto)
        {
            ReturnInfo    rInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            string        maxId = _warehouseReceiptRepository.GetMaxId();
            string        WRId  = Helper.GenerateIDEx("WR", maxId);

            inputDto.WRID = WRId;
            sb.Append(Helper.BasicValidate(inputDto).ToString());
            if (sb.Length == 0)
            {
                var warehouseReceipt = Mapper.Map <WarehouseReceiptInputDto, WarehouseReceipt>(inputDto);
                warehouseReceipt.CREATEDATE = DateTime.Now;
                warehouseReceipt.MODIFYDATE = DateTime.Now;
                try
                {
                    _unitOfWork.RegisterNew(warehouseReceipt);

                    foreach (var rowInput in inputDto.RowInputDtos)
                    {
                        WarehouseReceiptRow row = new WarehouseReceiptRow
                        {
                            CID        = rowInput.CID,
                            MONEY      = rowInput.MONEY,
                            CREATEUSER = inputDto.CREATEUSER,
                            CREATEDATE = DateTime.Now,
                            MODIFYUSER = inputDto.MODIFYUSER,
                            MODIFYDATE = DateTime.Now,
                            NOTE       = rowInput.NOTE,
                            WRID       = WRId,
                            QUANTITY   = rowInput.QUANTITY
                        };
                        _unitOfWork.RegisterNew(row);

                        //修改库存
                        ConQuant quant = _conQuantRepository.GetQuants(inputDto.LOCATIONID, rowInput.CID)
                                         .FirstOrDefault();
                        if (quant != null)
                        {
                            quant.QUANTITY   = quant.QUANTITY - rowInput.QUANTITY;
                            quant.MODIFYDATE = DateTime.Now;
                            quant.MODIFYUSER = inputDto.MODIFYUSER;
                            _unitOfWork.RegisterDirty(quant);
                        }
                        else
                        {
                            ConQuant Quant = new ConQuant
                            {
                                QUANTITY   = rowInput.QUANTITY,
                                MODIFYDATE = DateTime.Now,
                                MODIFYUSER = inputDto.MODIFYUSER,
                                CID        = rowInput.CID,
                                CREATEUSER = inputDto.CREATEUSER,
                                CREATEDATE = DateTime.Now,
                                LOCATIONID = inputDto.LOCATIONID
                            };
                            _unitOfWork.RegisterNew(Quant);
                        }
                        //添加处理记录
                        var pr = new AssProcessRecord
                        {
                            ASSID          = "",
                            CID            = rowInput.CID,
                            CREATEDATE     = DateTime.Now,
                            CREATEUSER     = inputDto.CREATEUSER,
                            HANDLEDATE     = DateTime.Now,
                            HANDLEMAN      = inputDto.HANDLEMAN,
                            MODIFYDATE     = DateTime.Now,
                            MODIFYUSER     = inputDto.MODIFYUSER,
                            PROCESSCONTENT = inputDto.CREATEUSER + "入库了" + row.CID + ",数量为" + rowInput.QUANTITY,
                            PROCESSMODE    = (int)PROCESSMODE.入库,
                            QUANTITY       = rowInput.QUANTITY
                        };
                        _unitOfWork.RegisterNew(pr);
                    }

                    bool result = _unitOfWork.Commit();
                    rInfo.IsSuccess = result;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    rInfo.IsSuccess = false;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
            }
            else
            {
                rInfo.IsSuccess = false;
                rInfo.ErrorInfo = sb.ToString();
                return(rInfo);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 更新报修单行项
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public void UpdateAssTransferOrderRow(TOInputDto entity, PROCESSMODE ProType, OperateType type)
        {
            AssTransferOrderRow assROR = new AssTransferOrderRow();

            foreach (AssTransferOrderRow Row in entity.Rows)
            {
                assROR = _AssTransferOrderRowRepository.GetByID(entity.TOID, Row.TOROWID).FirstOrDefault();
                if (assROR == null)
                {
                    throw new Exception("调拨单行项:" + Row.TOROWID + "不存在!");
                }
                switch (ProType)
                {
                case PROCESSMODE.调拨确认:
                    assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFEREDQTY);         //确认调拨数量
                    if (Row.INTRANSFERQTY < 0)
                    {
                        throw new Exception("确认数量不能超过申请调拨数量!");
                    }
                    assROR.TRANSFEREDQTY = Convert.ToDecimal(assROR.TRANSFEREDQTY) + Row.TRANSFEREDQTY;
                    break;

                case PROCESSMODE.调拨取消:
                    assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFERCANCELQTY);         //取消调拨数量
                    if (Row.INTRANSFERQTY < 0)
                    {
                        throw new Exception("取消数量不能超过申请调拨数量!");
                    }
                    assROR.TRANSFERCANCELQTY = Convert.ToDecimal(assROR.TRANSFERCANCELQTY) + Row.TRANSFERCANCELQTY;
                    break;
                }

                if (assROR.INTRANSFERQTY == 0)       //如果全部调拨完毕,则修改行项状态
                {
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        assROR.STATUS = 1;        //调拨完成
                    }
                    else
                    {
                        assROR.STATUS = 2;        //调拨取消
                    }
                }

                //更新OrderRow数据
                _unitOfWork.RegisterDirty(assROR);

                if (type == OperateType.资产)
                {
                    Assets SNData = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault();
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        SNData.LOCATIONID = entity.DESLOCATIONID;        //区域
                    }
                    //修改AssetsSN表中资产状态
                    SNData.STATUS = (Int32)STATUS.闲置;  //资产状态
                    _unitOfWork.RegisterDirty(SNData); //新建调拨行项
                }
                else
                {
                    ConQuant assQuant = new ConQuant();
                    //修改Quant表数据
                    assQuant.CID = Row.CID;    //资产条码
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        assQuant.QUANTITY   = Convert.ToDecimal(Row.TRANSFEREDQTY); //确认调入数量
                        assQuant.LOCATIONID = entity.DESLOCATIONID;                 //区域
                    }
                    else
                    {
                        assQuant.QUANTITY   = Convert.ToDecimal(Row.TRANSFERCANCELQTY); //取消调入数量
                        assQuant.LOCATIONID = Row.LOCATIONID;                           //区域
                    }
                    ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, assQuant.LOCATIONID).FirstOrDefault();

                    if (aq == null)     //如果不存在当前库存地数据,则创建一条新数据
                    {
                        assQuant.CREATEDATE = DateTime.Now;
                        assQuant.CREATEUSER = entity.MODIFYUSER;
                        assQuant.MODIFYDATE = DateTime.Now;
                        assQuant.MODIFYUSER = entity.MODIFYUSER;
                        _unitOfWork.RegisterNew(assQuant);
                    }
                    else            //已有数据,修改库存数量
                    {
                        aq.QUANTITY = aq.QUANTITY + assQuant.QUANTITY;
                        _unitOfWork.RegisterDirty(aq);
                    }
                }
                //往AssProcessRecord表添加数据
                CreatePR(entity, Row, ProType);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 新增调拨单行项
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo AddAssTransferOrderRow(TOInputDto entity, OperateType type)
        {
            ReturnInfo RInfo = new ReturnInfo();

            try
            {
                String   TOROWID  = "0";
                ConQuant assQuant = new ConQuant();
                if (entity.Rows != null)
                {
                    foreach (AssTransferOrderRow Row in entity.Rows)
                    {
                        TOROWID     = (int.Parse(TOROWID) + 1).ToString();
                        Row.TOID    = entity.TOID;
                        Row.TOROWID = TOROWID;
                        if (GetRowByRowID(Row.TOID, Row.TOROWID) != null)
                        {
                            throw new Exception("调拨单行项号已存在!");
                        }
                        _unitOfWork.RegisterNew(Row);
                        //往AssProcessRecord表添加数据
                        CreatePR(entity, Row, PROCESSMODE.调拨);

                        if (type == OperateType.资产)
                        {
                            Assets assetsSN = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault();
                            if (assetsSN == null)
                            {
                                throw new Exception("不存在条码为:" + Row.ASSID + "的资产。");
                            }
                            assetsSN.STATUS = (Int32)STATUS.调拨中;
                            _unitOfWork.RegisterDirty(assetsSN);
                        }
                        else
                        {
                            ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, Row.LOCATIONID).FirstOrDefault();
                            if (aq == null)
                            {
                                throw new Exception("库存中不存在编号为+" + Row.CID + "的耗材,请检查!");
                            }

                            aq.QUANTITY = aq.QUANTITY - Row.INTRANSFERQTY;
                            if (aq.QUANTITY > 0)
                            {
                                //更新数据
                                _unitOfWork.RegisterDirty(aq);
                            }
                            else if (aq.QUANTITY == 0)
                            {
                                _unitOfWork.RegisterDeleted(aq);
                            }
                            else
                            {
                                throw new Exception("所需调拨数量超过库存数!");
                            }
                        }
                    }
                    RInfo.IsSuccess = true;
                    RInfo.ErrorInfo = "调拨单行项创建成功!";
                }
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = ex.Message;
            }
            return(RInfo);
        }