public ResultModel Complete(UserModel user, int stockInId) { //总体业务描述 //1:验证入库登记 //2:完成入库登记 //3:完成入库登记与合约关联 //4:完成库存流水与入库登记合约关联 //5:更新库存流水状态为已完成 //6:更新库存状态为在库正常 ResultModel result = new ResultModel(); try { DAL.StockInStockDAL stockInStockDAL = new StockInStockDAL(); DAL.ContractStockInDAL contractStockInDAL = new ContractStockInDAL(); NFMT.WareHouse.DAL.StockDAL stockDAL = new StockDAL(); DAL.StockLogDAL stockLogDAL = new StockLogDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = stockinDAL.Get(user, stockInId); if (result.ResultStatus != 0) return result; Model.StockIn stockIn = result.ReturnValue as Model.StockIn; if (stockIn == null || stockIn.StockInId <= 0) { result.ResultStatus = -1; result.Message = "数据不存在,无法完成"; return result; } //入库登记完成 result = stockinDAL.Complete(user, stockIn); if (result.ResultStatus != 0) return result; //获取合约关联 result = contractStockInDAL.GetByStockInId(user, stockIn.StockInId); if (result.ResultStatus != 0) return result; Model.ContractStockIn contractStockIn = result.ReturnValue as Model.ContractStockIn; if (contractStockIn == null || contractStockIn.RefId <= 0) { result.ResultStatus = -1; result.Message = "入库登记未关联合约,不允许确认完成"; return result; } //完成合约关联 result = contractStockInDAL.Complete(user, contractStockIn); if (result.ResultStatus != 0) return result; //获取入库登记库存关联 result = stockInStockDAL.GetByStockIn(NFMT.Common.DefaultValue.SysUser, stockIn.StockInId); if (result.ResultStatus != 0) return result; Model.StockInStock stockInStock = result.ReturnValue as Model.StockInStock; if (stockInStock == null || stockInStock.RefId <= 0) { result.ResultStatus = -1; result.Message = "获取入库登记与库存关联失败"; return result; } //完成入库登记库存关联 result = stockInStockDAL.Complete(user, stockInStock); if (result.ResultStatus != 0) return result; //获取库存流水 result = stockLogDAL.Get(user, stockInStock.StockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "获取入库流水失败"; return result; } //判断库存流水是否关联合约 if (stockLog.ContractId <= 0) { stockLog.ContractId = contractStockIn.ContractId; stockLog.SubContractId = contractStockIn.ContractSubId; result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; } result = stockLogDAL.Complete(user, stockLog); if (result.ResultStatus != 0) return result; //获取库存 result = stockDAL.Get(user, stockLog.StockId); if (result.ResultStatus != 0) return result; Model.Stock stock = result.ReturnValue as Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "库存获取失败"; return result; } //更新库存表 result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.在库正常); if (result.ResultStatus != 0) return result; scope.Complete(); } } catch (Exception e) { result.Message = e.Message; result.ResultStatus = -1; } return result; }
public ResultModel Audit(UserModel user, NFMT.WorkFlow.Model.DataSource dataSource, bool isPass) { ResultModel result = new ResultModel(); try { DAL.StockDAL stockDAL = new StockDAL(); NFMT.WareHouse.DAL.StockLogDAL stockLogDAL = new StockLogDAL(); NFMT.WareHouse.DAL.StockReceiptDetailDAL stockReceiptDetailDAL = new StockReceiptDetailDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = this.stockreceiptDAL.Get(NFMT.Common.DefaultValue.SysUser, dataSource.RowId); if (result.ResultStatus != 0) return result; Model.StockReceipt stockReceipt = result.ReturnValue as Model.StockReceipt; if (stockReceipt == null || stockReceipt.ReceiptId <= 0) { result.ResultStatus = -1; result.Message = "库存回执不存在"; return result; } //审核,修改数据状态 result = this.stockreceiptDAL.Audit(user, stockReceipt, isPass); if (result.ResultStatus != 0) return result; //审核通过 if (isPass) { //获取回执明细 result = stockReceiptDetailDAL.Load(user, stockReceipt.ReceiptId); if (result.ResultStatus != 0) return result; List<Model.StockReceiptDetail> stockReceiptDetails = result.ReturnValue as List<Model.StockReceiptDetail>; if (stockReceiptDetails == null || stockReceiptDetails.Count == 0) { result.ResultStatus = -1; result.Message = "获取回执明细失败"; return result; } foreach (Model.StockReceiptDetail detail in stockReceiptDetails) { //获取库存流水 result = stockLogDAL.Get(NFMT.Common.DefaultValue.SysUser, detail.StockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "获取库存流水失败"; return result; } //更新库存流水回执重量 stockLog.GapAmount += detail.QtyMiss; result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; //获取库存 result = stockDAL.Get(user, detail.StockId); if (result.ResultStatus != 0) return result; Model.Stock stock = result.ReturnValue as Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "库存不存在"; return result; } //更新库存净重 if (stockReceipt.ReceiptType == (int)ReceiptTypeEnum.入库回执) { stock.ReceiptInGap += detail.QtyMiss; //stock.NetAmount += detail.QtyMiss; } else stock.ReceiptOutGap += detail.QtyMiss; stock.CurNetAmount = detail.ReceiptAmount; result = stockDAL.Update(user, stock); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; return result; } return result; }
public ResultModel Close(UserModel user, int receiptId) { ResultModel result = new ResultModel(); try { DAL.StockLogDAL stockLogDAL = new StockLogDAL(); DAL.StockReceiptDetailDAL stockReceiptDetailDAL = new StockReceiptDetailDAL(); using (System.Transactions.TransactionScope scope = new TransactionScope()) { //获取回执 result = this.stockreceiptDAL.Get(user, receiptId); if (result.ResultStatus != 0) return result; Model.StockReceipt stockReceipt = result.ReturnValue as Model.StockReceipt; if (stockReceipt == null || stockReceipt.ReceiptId <= 0) { result.ResultStatus = -1; result.Message = "库存回执不存在"; return result; } //关闭回执 result = this.stockreceiptDAL.Close(user, stockReceipt); if (result.ResultStatus != 0) return result; //获取回执明细 result = stockReceiptDetailDAL.Load(user, stockReceipt.ReceiptId); if (result.ResultStatus != 0) return result; List<Model.StockReceiptDetail> details = result.ReturnValue as List<Model.StockReceiptDetail>; if (details == null || details.Count == 0) { result.ResultStatus = -1; result.Message = "回执明细获取失败"; return result; } foreach (Model.StockReceiptDetail detail in details) { //关闭回执明细 result = stockReceiptDetailDAL.Close(user, detail); if (result.ResultStatus != 0) return result; //获取库存流水 result = stockLogDAL.Get(user, detail.StockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "库存流水获取失败"; return result; } //更新库存流水磅差 stockLog.GapAmount -= detail.QtyMiss; result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; } } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel StockReceiptUpdate(UserModel user, int detailId, int stockId, int stockLogId, decimal receiptAmount) { ResultModel result = new ResultModel(); try { DAL.StockDAL stockDAL = new StockDAL(); DAL.StockLogDAL stockLogDAL = new StockLogDAL(); DAL.StockReceiptDetailDAL stockReceiptDetailDAL = new StockReceiptDetailDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = stockReceiptDetailDAL.Get(user, detailId); if (result.ResultStatus != 0) return result; Model.StockReceiptDetail stockReceiptDetail = result.ReturnValue as Model.StockReceiptDetail; if (stockReceiptDetail == null || stockReceiptDetail.DetailId <= 0) { result.ResultStatus = -1; result.Message = "获取库存回执错误"; return result; } stockReceiptDetail.ReceiptAmount = receiptAmount; stockReceiptDetail.QtyMiss = receiptAmount - stockReceiptDetail.PreNetAmount; stockReceiptDetail.QtyRate = (receiptAmount / stockReceiptDetail.PreNetAmount - 1) / 100; //修改库存回执明细 result = stockReceiptDetailDAL.Update(user, stockReceiptDetail); if (result.ResultStatus != 0) return result; //获取库存回执 result = stockreceiptDAL.Get(user, stockReceiptDetail.ReceiptId); if (result.ResultStatus != 0) return result; Model.StockReceipt stockReceipt = result.ReturnValue as Model.StockReceipt; if (stockReceipt == null || stockReceipt.ReceiptId <= 0) { result.ResultStatus = -1; result.Message = "获取库存回执出错"; return result; } result = stockLogDAL.Get(user, stockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "获取库存流水出错"; return result; } stockLog.GapAmount = receiptAmount - stockReceiptDetail.PreNetAmount; //更新库存流水 result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; //获取库存 result = stockDAL.Get(user, stockId); if (result.ResultStatus != 0) return result; Model.Stock stock = result.ReturnValue as Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "获取库存出错"; return result; } if (stockReceipt.ReceiptType == (int)NFMT.WareHouse.ReceiptTypeEnum.入库回执) { stock.ReceiptInGap = receiptAmount - stockReceiptDetail.PreNetAmount; } else if (stockReceipt.ReceiptType == (int)NFMT.WareHouse.ReceiptTypeEnum.出库回执) { stock.ReceiptOutGap = receiptAmount - stockReceiptDetail.PreNetAmount; } stock.CurNetAmount = receiptAmount; //更新库存 result = stockDAL.Update(user, stock); if (result.ResultStatus != 0) return result; //若此库存已开业务票,则修改业务票中的净重 result = stockreceiptDAL.UpdateBussinessInvDetail(user, stockLogId, receiptAmount); if (result.ResultStatus != 0) return result; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } finally { if (result.ResultStatus != 0) log.ErrorFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (log.IsInfoEnabled) log.InfoFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); } return result; }
public ResultModel Audit(UserModel user, NFMT.WorkFlow.Model.DataSource dataSource, bool isPass) { ResultModel result = new ResultModel(); try { DAL.StockLogDAL stockLogDAL = new StockLogDAL(); DAL.StockInDAL stockInDAL = new StockInDAL(); DAL.StockInStockDAL stockInStockDAL = new StockInStockDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = this.contractstockin_DAL.Get(NFMT.Common.DefaultValue.SysUser, dataSource.RowId); if (result.ResultStatus != 0) return result; Model.ContractStockIn stockInContract = result.ReturnValue as Model.ContractStockIn; if (stockInContract == null || stockInContract.StockInId <= 0) { result.ResultStatus = -1; result.Message = "入库登记合约关联不存在"; return result; } //审核,修改数据状态 result = this.contractstockin_DAL.Audit(user, stockInContract, isPass); if (result.ResultStatus != 0) return result; //审核通过 if (isPass) { //获取入库登记 result = stockInDAL.Get(user, stockInContract.StockInId); if (result.ResultStatus != 0) return result; Model.StockIn stockIn = result.ReturnValue as Model.StockIn; if (stockIn == null || stockIn.StockInId <= 0) { result.ResultStatus = -1; result.Message = "入库登记不存在"; return result; } //获取入库登记与流水关联 result = stockInStockDAL.GetByStockIn(user, stockIn.StockInId); if (result.ResultStatus != 0) return result; Model.StockInStock stockInStock = result.ReturnValue as Model.StockInStock; if (stockInStock == null || stockInStock.RefId <= 0) { result.ResultStatus = -1; result.Message = "入库登记不存在"; return result; } //获取流水 result = stockLogDAL.Get(user, stockInStock.StockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "入库流水获取失败不存在"; return result; } //更新流水合约关联 stockLog.SubContractId = stockInContract.ContractSubId; stockLog.ContractId = stockInContract.ContractId; result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; return result; } return result; }
public ResultModel ContractInCompleteStockOperate(UserModel user, int contractId) { ResultModel result = new ResultModel(); StockInDAL stockInDAL = new StockInDAL(); StockLogDAL stockLogDAL = new StockLogDAL(); StockDAL stockDAL = new StockDAL(); ContractStockInDAL contractStockInDAL = new ContractStockInDAL(); StockInStockDAL stockInStockDAL = new StockInStockDAL(); result = contractStockInDAL.Load(user, contractId); if (result.ResultStatus != 0) return result; List<NFMT.WareHouse.Model.ContractStockIn> contractStockIns = result.ReturnValue as List<NFMT.WareHouse.Model.ContractStockIn>; if (contractStockIns == null) { result.Message = "合约入库分配获取失败"; result.ResultStatus = -1; return result; } foreach (NFMT.WareHouse.Model.ContractStockIn contractStcokIn in contractStockIns) { //获取入库登记 result = stockInDAL.Get(user, contractStcokIn.StockInId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.StockIn stockIn = result.ReturnValue as NFMT.WareHouse.Model.StockIn; if (stockIn == null || stockIn.StockInId <= 0) { result.ResultStatus = -1; result.Message = "数据不存在,无法完成"; return result; } //入库登记完成 if (stockIn.StockInStatus == StatusEnum.已生效) { result = stockInDAL.Complete(user, stockIn); if (result.ResultStatus != 0) return result; } //获取合约关联 result = contractStockInDAL.GetByStockInId(user, stockIn.StockInId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.ContractStockIn contractStockIn = result.ReturnValue as NFMT.WareHouse.Model.ContractStockIn; if (contractStockIn == null || contractStockIn.RefId <= 0) { result.ResultStatus = -1; result.Message = "入库登记未关联合约,不允许确认完成"; return result; } //完成合约关联 if (contractStockIn.RefStatus == StatusEnum.已生效) { result = contractStockInDAL.Complete(user, contractStockIn); if (result.ResultStatus != 0) return result; } //获取入库登记库存关联 result = stockInStockDAL.GetByStockIn(NFMT.Common.DefaultValue.SysUser, stockIn.StockInId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.StockInStock stockInStock = result.ReturnValue as NFMT.WareHouse.Model.StockInStock; if (stockInStock == null || stockInStock.RefId <= 0) { result.ResultStatus = -1; result.Message = "获取入库登记与库存关联失败"; return result; } //完成入库登记库存关联 if (stockInStock.RefStatus == StatusEnum.已生效) { result = stockInStockDAL.Complete(user, stockInStock); if (result.ResultStatus != 0) return result; } //获取库存流水 result = stockLogDAL.Get(user, stockInStock.StockLogId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.StockLog stockLog = result.ReturnValue as NFMT.WareHouse.Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "获取入库流水失败"; return result; } //判断库存流水是否关联合约 if (stockLog.ContractId <= 0) { stockLog.ContractId = contractStockIn.ContractId; stockLog.SubContractId = contractStockIn.ContractSubId; result = stockLogDAL.Update(user, stockLog); if (result.ResultStatus != 0) return result; } if (stockLog.LogStatus == StatusEnum.已生效) { result = stockLogDAL.Complete(user, stockLog); if (result.ResultStatus != 0) return result; } //获取库存 result = stockDAL.Get(user, stockLog.StockId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.Stock stock = result.ReturnValue as NFMT.WareHouse.Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "库存获取失败"; return result; } //更新库存表 if (stock.StockStatus == NFMT.WareHouse.StockStatusEnum.预入库存) { result = stockDAL.UpdateStockStatus(stock, NFMT.WareHouse.StockStatusEnum.在库正常); if (result.ResultStatus != 0) return result; } } return result; }