/// <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);
        }
Example #2
0
        /// <summary>
        /// 插入新采购出库
        /// </summary>
        /// <param name="sell"></param>
        /// <returns></returns>
        public ResultData <string> AddSell(WSell sell)
        {
            ResultData <string> rData = CheckValid(sell);

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

            DatabaseContext dbContext = sRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                sell.CreateDate  = DateTime.Now;
                sell.StockStatus = StockStatusEnum.New;
                sell.SellCode    = nuRepository.GetNextNumber("XSCK");
                sRepository.Insert(sell);

                foreach (var line in sell.Lines)
                {
                    line.ParentID   = sell.ID;
                    line.CreateBy   = sell.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    slRepository.Insert(line);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #3
0
        /// <summary>
        /// 添加调拨入库
        /// </summary>
        /// <param name="transferIn"></param>
        /// <returns></returns>
        public ResultData <string> AddTransferIn(WTransferIn transferIn)
        {
            ResultData <string> 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);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #4
0
        /// <summary>
        /// 插入新采购入库
        /// </summary>
        /// <param name="purchase"></param>
        /// <returns></returns>
        public ResultData <string> AddPurchase(WPurchase purchase)
        {
            ResultData <string> rData = CheckValid(purchase);

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

            DatabaseContext dbContext = pRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                purchase.CreateDate   = DateTime.Now;
                purchase.StockStatus  = StockStatusEnum.New;
                purchase.PurchaseCode = nuRepository.GetNextNumber("CGRK");
                pRepository.Insert(purchase);

                foreach (var line in purchase.Lines)
                {
                    line.ParentID   = purchase.ID;
                    line.CreateBy   = purchase.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    plRepository.Insert(line);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #5
0
        /// <summary>
        /// 插入新其他入库
        /// </summary>
        /// <param name="otherIn"></param>
        /// <returns></returns>
        public ResultData <string> AddOtherIn(WOtherIn otherIn)
        {
            ResultData <string> rData = CheckValid(otherIn);

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

            DatabaseContext dbContext = oiRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();
                //入库记录
                List <WStockIn> stockIns = new List <WStockIn>(otherIn.Lines.Count);

                //添加其他入库
                otherIn.CreateDate  = DateTime.Now;
                otherIn.StockStatus = StockStatusEnum.New;
                otherIn.OtherInCode = nuRepository.GetNextNumber("QTRK");
                oiRepository.Insert(otherIn);

                foreach (var line in otherIn.Lines)
                {
                    line.ParentID   = otherIn.ID;
                    line.CreateBy   = otherIn.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    oilRepository.Insert(line);
                }

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #6
0
        /// <summary>
        /// 添加采购通知单
        /// </summary>
        /// <param name="inNotice"></param>
        /// <returns></returns>
        public ResultData <string> AddPurchaseNotice(WPurchaseNotice inNotice)
        {
            ResultData <string> rData = CheckValid(inNotice);

            if (rData.status != 0)
            {
                return(rData);
            }
            DatabaseContext dbContext = pnRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

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

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

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #7
0
        /// <summary>
        /// 根据入库通知添加入库
        /// </summary>
        /// <param name="sell"></param>
        /// <returns></returns>
        public ResultData <string> AddSellReturn(WSell sell, int createBy)
        {
            ResultData <string> rData = new ResultData <string>();

            if (sell.StockStatus != StockStatusEnum.Approve)
            {
                rData.status  = -1;
                rData.message = "单据未审核不能退库.";
                return(rData);
            }

            //查询明细
            if (sell.Lines.Count < 1)
            {
                sell.Lines = slRepository.GetLinesByParentId(sell.ID);
            }

            //克隆主表
            WSellReturn sellReturn = CloneInNotice(sell);

            sellReturn.CreateBy = createBy;

            foreach (var item in sell.Lines)
            {
                WSellReturnLine line = CloneInNoticeLine(item);
                if (line != null)
                {
                    sellReturn.Lines.Add(line);
                }
            }

            if (sellReturn.Lines.Count < 1)
            {
                rData.status  = -1;
                rData.message = "单据已经全部退库.";
                return(rData);
            }

            DatabaseContext dbContext = srRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                //添加入库单
                sellReturn.CreateDate     = DateTime.Now;
                sellReturn.StockStatus    = StockStatusEnum.New;
                sellReturn.SellReturnCode = nuRepository.GetNextNumber("XSTK");
                srRepository.Insert(sellReturn);
                foreach (var line in sellReturn.Lines)
                {
                    line.ParentID   = sellReturn.ID;
                    line.CreateBy   = sellReturn.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    srlRepository.Insert(line);

                    //更新入库单 添加退库
                    decimal rt = slRepository.AddReturnCount(line.InCount, line.SourceLineID);
                    if (rt < 0)
                    {
                        dbContext.AbortTransaction();
                        rData.status  = -1;
                        rData.message = BuilderNoticeLessMessage(line);
                        return(rData);
                    }
                }

                //将插入主键赋值给返回值
                rData.result = sellReturn.ID.ToString();

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

            return(rData);
        }
Example #8
0
        /// <summary>
        /// 根据入库单下推出库单
        /// </summary>
        /// <param name="purchase"></param>
        /// <returns></returns>
        public ResultData <string> AddPurchaseReturn(WPurchase purchase, int createBy)
        {
            ResultData <string> rData = new ResultData <string>();

            if (purchase.StockStatus != StockStatusEnum.Approve)
            {
                rData.status  = -1;
                rData.message = "单据未审核不能退库.";
                return(rData);
            }

            //查询明细
            if (purchase.Lines.Count < 1)
            {
                purchase.Lines = plRepository.GetLinesByParentId(purchase.ID);
            }

            //克隆主表
            WPurchaseReturn purReturn = ClonePuchase(purchase);

            purReturn.CreateBy = createBy;
            //克隆子表
            foreach (var item in purchase.Lines)
            {
                WPurchaseReturnLine line = ClonePurchaseLine(item);
                if (line != null)
                {
                    purReturn.Lines.Add(line);
                }
            }

            if (purReturn.Lines.Count < 1)
            {
                rData.status  = -1;
                rData.message = "单据已经全部退库.";
                return(rData);
            }

            DatabaseContext dbContext = pRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                //添加入库单
                purReturn.CreateDate         = DateTime.Now;
                purReturn.StockStatus        = StockStatusEnum.New;
                purReturn.PurchaseReturnCode = nuRepository.GetNextNumber("CGTK");
                prRepository.Insert(purReturn);
                foreach (var line in purReturn.Lines)
                {
                    //插入入库明细
                    line.ParentID   = purReturn.ID;
                    line.CreateBy   = purReturn.CreateBy;
                    line.CreateDate = DateTime.Now;
                    line.Batch      = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch;
                    prlRepository.Insert(line);

                    //更新入库单 添加退库
                    decimal rt = plRepository.AddReturnCount(line.OutCount, line.SourceLineID);
                    if (rt < 0)
                    {
                        dbContext.AbortTransaction();
                        rData.status  = -1;
                        rData.message = BuilderNoticeLessMessage(line);
                        return(rData);
                    }
                }

                //将插入主键赋值给返回值
                rData.result = purReturn.ID.ToString();

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

            return(rData);
        }
Example #9
0
        /// <summary>
        /// 添加盘亏出库
        /// </summary>
        /// <param name="inv"></param>
        /// <returns></returns>
        public ResultData <string> AddLoss(WInventory inv)
        {
            ResultData <string> rData = new ResultData <string>();

            if (inv.InventoryStatus == InventoryStatusEnum.Out)
            {
                rData.status  = -1;
                rData.message = "单据已经盘亏.";
                return(rData);
            }
            else if (inv.InventoryStatus == InventoryStatusEnum.Complete)
            {
                rData.status  = -1;
                rData.message = "单据已经完成.";
                return(rData);
            }

            if (ilRepository.HasNoLoss(inv.ID))
            {
                if (inv.InventoryStatus == InventoryStatusEnum.In)
                {
                    iRepository.UpdateLossStatus(inv.ID, 0, "", InventoryStatusEnum.Complete);
                }
                else
                {
                    iRepository.UpdateLossStatus(inv.ID, 0, "", InventoryStatusEnum.Out);
                }
                rData.status  = -1;
                rData.message = "单据没有盘亏记录.";
                return(rData);
            }

            DatabaseContext dbContext = ooRepository.DbCondext;

            try
            {
                dbContext.BeginTransaction();

                WOtherOut otherOut = new WOtherOut
                {
                    CreateBy     = inv.CreateBy,
                    CreateDate   = DateTime.Now,
                    OtherOutCode = nuRepository.GetNextNumber("QTCK"),
                    StockOutType = StockOutEnum.InvShortages,
                    StockStatus  = StockStatusEnum.New
                };

                //添加主表
                ooRepository.Insert(otherOut);

                //更新为盘点
                if (inv.InventoryStatus == InventoryStatusEnum.In)
                {
                    iRepository.UpdateLossStatus(inv.ID, otherOut.ID, otherOut.OtherOutCode, InventoryStatusEnum.Complete);
                }
                else if (inv.InventoryStatus == InventoryStatusEnum.Complete)
                {
                    rData.status  = -1;
                    rData.message = "单据已经完成.";
                    return(rData);
                }
                else
                {
                    iRepository.UpdateLossStatus(inv.ID, otherOut.ID, otherOut.OtherOutCode, InventoryStatusEnum.Out);
                }

                //添加明细
                oolRepository.AddOtherLinesByInv(otherOut, inv.ID);

                //返回插入的ID
                rData.result = otherOut.ID.ToString();

                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw ex;
            }
            return(rData);
        }
Example #10
0
 /// <summary>
 /// 自动生成单号
 /// </summary>
 /// <param name="businessType">业务类型</param>
 public string GetNextNumber(string businessType)
 {
     return(repository.GetNextNumber(businessType));
 }