Exemplo n.º 1
0
        /// <summary>
        /// 赋值调拨入库通知单
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        private WTransferInNotice CloneInNotice(WTransferOut other)
        {
            WTransferInNotice inNotice = new WTransferInNotice();

            inNotice.BusinessPartnerID = other.BusinessPartnerID;
            inNotice.CreateBy          = other.CreateBy;
            inNotice.CreateDate        = DateTime.Now;
            inNotice.SourceCode        = other.TransferOutCode;
            inNotice.SourceID          = other.ID;
            inNotice.WarehouseID       = other.TWarehouseID;
            inNotice.WarehouseCode     = other.TWarehouseCode;
            foreach (var item in other.Lines)
            {
                inNotice.Lines.Add(new WTransferInNoticeLine()
                {
                    StockID       = item.StockID,
                    Batch         = item.Batch,
                    CompleteCount = 0,
                    CreateBy      = item.CreateBy,
                    CreateDate    = DateTime.Now,
                    DownCount     = 0,
                    Factory       = item.Factory,
                    InCount       = item.OutCount,
                    MaterialCode  = item.MaterialCode,
                    MaterialID    = item.MaterialID,
                    OwnerCode     = item.OwnerCode,
                    InPutCount    = item.OutCount,
                    UnitID        = item.UnitID
                });
            }
            return(inNotice);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加调拨入库单
        /// </summary>
        /// <param name="inNotice"></param>
        /// <returns></returns>
        public ResultData <string> AddTransferInNotice(WTransferInNotice inNotice)
        {
            ResultData <string> rData     = new ResultData <string>();
            DatabaseContext     dbContext = tinRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                inNotice.CreateDate   = DateTime.Now;
                inNotice.NoticeStatus = NoticeStatusEnum.New;
                inNotice.InNoticeCode = nuRepository.GetNextNumber("DBRT");
                tinRepository.Insert(inNotice);

                foreach (var line in inNotice.Lines)
                {
                    line.ParentID   = inNotice.ID;
                    line.CreateBy   = inNotice.CreateBy;
                    line.CreateDate = DateTime.Now;
                    tinllRepository.Insert(line);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="transferOut"></param>
        /// <returns></returns>
        public ResultData <string> ApproveTransferOut(WTransferOut transferOut)
        {
            ResultData <string> rData = new ResultData <string>();

            if (transferOut.Lines.Count < 1)
            {
                transferOut.Lines = tolRepository.GetLinesByParentId(transferOut.ID);
            }

            DatabaseContext dbContext = toRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();
                //出库记录
                List <WStockOut> stockOuts = new List <WStockOut>(transferOut.Lines.Count);

                //审核
                int result = toRepository.ApproveTransferOut(transferOut);
                if (result < 1)
                {
                    rData.status  = -1;
                    rData.message = "单据已经审核或删除.";
                    dbContext.AbortTransaction();
                    return(rData);
                }

                foreach (var line in transferOut.Lines)
                {
                    stockOuts.Add(CloneTransferOut(line, transferOut));
                }

                //更新库存
                WStockService sService = new WStockService(dbContext);
                rData = sService.DeleteStocks(stockOuts);
                if (rData.status != 0)
                {
                    dbContext.AbortTransaction();
                }
                else
                {
                    dbContext.CompleteTransaction();
                }
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }

            if (rData.status == 0)
            {
                //调拨入库通知单
                WTransferInNotice inNotice = CloneInNotice(transferOut);
                rData = new WTransferInNoticeService().AddTransferInNotice(inNotice);
            }
            return(rData);
        }
        public ContentResult Update()
        {
            ResultData <string> rt = new ResultData <string>();

            WTransferInNotice inNotice = GetUpdate <WTransferInNotice>();

            rt = iService.AddTransferIn(inNotice, this.CurrentUser.ID);
            return(ReturnResult(rt));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 入库通知单转换入库单
        /// </summary>
        /// <param name="inNotice"></param>
        /// <returns></returns>
        private WTransferIn CloneInNotice(WTransferInNotice inNotice)
        {
            WTransferIn transferIn = new WTransferIn();

            transferIn.BusinessPartnerID = inNotice.BusinessPartnerID;
            transferIn.CreateBy          = inNotice.CreateBy;
            transferIn.CreateDate        = DateTime.Now;
            transferIn.SourceCode        = inNotice.InNoticeCode;
            transferIn.SourceID          = inNotice.ID;
            transferIn.StockStatus       = StockStatusEnum.New;
            transferIn.WarehouseCode     = inNotice.WarehouseCode;
            transferIn.WarehouseID       = inNotice.WarehouseID;
            return(transferIn);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 根据入库通知添加入库
        /// </summary>
        /// <param name="inNotice"></param>
        /// <returns></returns>
        public ResultData <string> AddTransferIn(WTransferInNotice inNotice, int createBy)
        {
            ResultData <string> rData = new ResultData <string>();

            if (inNotice.NoticeStatus == NoticeStatusEnum.Complete)
            {
                rData.status  = -1;
                rData.message = "单据已完成不能入库.";
                return(rData);
            }
            //克隆主表
            WTransferIn transferIn = CloneInNotice(inNotice);

            transferIn.CreateBy = createBy;

            foreach (var item in inNotice.Lines)
            {
                if (item.InPutCount <= 0)
                {
                    continue;
                }
                //如果通知数量+下推数量+完成数量>当前入库数量
                if (item.InPutCount + item.DownCount + item.CompleteCount > item.InCount)
                {
                    rData.status  = -1;
                    rData.message = BuilderNoticeLessMessage(item);
                    return(rData);
                }
                //克隆明细
                transferIn.Lines.Add(CloneInNoticeLine(item));
                //更新下推数量和当前输入数量
                item.DownCount = item.DownCount + item.InPutCount;
            }

            if (transferIn.Lines.Count < 1)
            {
                rData.status  = -1;
                rData.message = "入库明细为空.";
                return(rData);
            }

            rData = CheckValid(transferIn);
            if (rData.status != 0)
            {
                return(rData);
            }

            DatabaseContext dbContext = tiRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                //添加入库单
                transferIn.CreateDate     = DateTime.Now;
                transferIn.StockStatus    = StockStatusEnum.New;
                transferIn.TransferInCode = nuRepository.GetNextNumber("DBRK");
                tiRepository.Insert(transferIn);
                foreach (var line in transferIn.Lines)
                {
                    line.ParentID   = transferIn.ID;
                    line.CreateBy   = transferIn.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    tilRepository.Insert(line);
                }

                //更新通知单
                foreach (var item in inNotice.Lines)
                {
                    tinlRepository.AddDownCount(item);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }

            //没有放到事务,因为状态更新不是很重要,不影响业务
            bool isAll = tinlRepository.IsAllDownload(inNotice.ID);

            if (isAll)
            {
                tinRepository.UpdateNoticeStatus(NoticeStatusEnum.Complete, inNotice.ID);
            }
            else
            {
                tinRepository.UpdateNoticeStatus(NoticeStatusEnum.Executing, inNotice.ID);
            }
            return(rData);
        }