public ResultModel CreateDirectStock(UserModel user, Model.CashInAllot allot, List<Model.CashInCorp> details, int stockLogId) { ResultModel result = new ResultModel(); try { NFMT.WareHouse.DAL.StockLogDAL stockLogDAL = new WareHouse.DAL.StockLogDAL(); NFMT.WareHouse.DAL.StockDAL stockDAL = new WareHouse.DAL.StockDAL(); NFMT.Contract.DAL.ContractSubDAL subDAL = new Contract.DAL.ContractSubDAL(); DAL.CashInAllotDAL allotDAL = new CashInAllotDAL(); DAL.CashInDAL cashInDAL = new CashInDAL(); DAL.CashInCorpDAL cashInCorpDAL = new CashInCorpDAL(); DAL.CashInContractDAL cashInContractDAL = new CashInContractDAL(); using (System.Transactions.TransactionScope scope = new TransactionScope()) { //获取库存流水 result = stockLogDAL.Get(user, 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.Message = "库存流水不存在"; result.ResultStatus = -1; 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.Message = "库存不存在"; result.ResultStatus = -1; return result; } //获取子合约 result = subDAL.Get(user, stockLog.SubContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.ContractSub sub = result.ReturnValue as NFMT.Contract.Model.ContractSub; if (sub == null || sub.SubId <= 0) { result.Message = "子合约不存在"; result.ResultStatus = -1; return result; } allot.AllotBala = details.Sum(temp => temp.AllotBala); allot.Alloter = user.EmpId; allot.AllotStatus = StatusEnum.已录入; allot.AllotTime = DateTime.Now; allot.AllotType = (int)NFMT.Funds.CashInAllotTypeEnum.Stock; allot.CurrencyId = sub.SettleCurrency; result = allotDAL.Insert(user, allot); if (result.ResultStatus != 0) return result; int allotId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out allotId) || allotId <= 0) { result.Message = "收款分配新增失败"; result.ResultStatus = -1; return result; } //获取外部公司 NFMT.Contract.DAL.ContractCorporationDetailDAL corpDAL = new Contract.DAL.ContractCorporationDetailDAL(); result = corpDAL.LoadCorpListByContractId(user, sub.ContractId, false); if (result.ResultStatus != 0) return result; List<NFMT.Contract.Model.ContractCorporationDetail> outCorps = result.ReturnValue as List<NFMT.Contract.Model.ContractCorporationDetail>; if (outCorps == null) { result.Message = "合约对方抬头获取失败"; result.ResultStatus = -1; return result; } foreach (Model.CashInCorp corpDetail in details) { NFMT.User.Model.Corporation corp = NFMT.User.UserProvider.Corporations.FirstOrDefault(temp => temp.CorpId == corpDetail.CorpId); if (corp == null || corp.CorpId <= 0) { result.Message = "收款分配公司不存在"; result.ResultStatus = -1; return result; } if (!outCorps.Any(temp => temp.CorpId == corp.CorpId)) { result.Message = "收款分配公司不在合约对方抬头,收款分配失败"; result.ResultStatus = -1; return result; } result = cashInDAL.Get(user, corpDetail.CashInId); if (result.ResultStatus != 0) return result; Model.CashIn cashIn = result.ReturnValue as Model.CashIn; if (cashIn == null || cashIn.CashInId <= 0) { result.Message = "收款登记不存在"; result.ResultStatus = -1; return result; } if (cashIn.CurrencyId != sub.SettleCurrency) { result.Message = "收款登记币种与合约币种不相同"; result.ResultStatus = -1; return result; } corpDetail.AllotId = allotId; corpDetail.BlocId = corp.ParentId; corpDetail.CashInId = cashIn.CashInId; corpDetail.CorpId = corp.CorpId; corpDetail.DetailStatus = StatusEnum.已生效; corpDetail.IsShare = false; result = cashInCorpDAL.Insert(user, corpDetail); if (result.ResultStatus != 0) return result; int corpRefId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out corpRefId) || corpRefId <= 0) { result.Message = "收款分配新增失败"; result.ResultStatus = -1; return result; } Model.CashInContract cashInContract = new CashInContract(); cashInContract.AllotBala = corpDetail.AllotBala; cashInContract.AllotId = corpDetail.AllotId; cashInContract.CashInId = corpDetail.CashInId; cashInContract.ContractId = sub.ContractId; cashInContract.CorpRefId = corpRefId; cashInContract.DetailStatus = StatusEnum.已生效; cashInContract.SubContractId = sub.SubId; result = cashInContractDAL.Insert(user, cashInContract); if (result.ResultStatus != 0) return result; int contractRefId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out contractRefId) || contractRefId <= 0) { result.Message = "收款分配新增失败"; result.ResultStatus = -1; return result; } Model.CashInStcok cashInStock = new CashInStcok(); cashInStock.AllotBala = cashInContract.AllotBala; cashInStock.AllotId = cashInContract.AllotId; cashInStock.CashInId = cashInContract.CashInId; cashInStock.ContractRefId = contractRefId; cashInStock.CorpRefId = cashInContract.CorpRefId; cashInStock.DetailStatus = StatusEnum.已生效; cashInStock.StockId = stockLog.StockId; cashInStock.StockLogId = stockLog.StockLogId; cashInStock.StockNameId = stockLog.StockNameId; result = this.cashinstcokDAL.Insert(user, cashInStock); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel Create(UserModel user, Model.CashInAllot cashInAllot, Model.CashInCorp cashInCorp, Model.CashInContract cashInContract, List<Model.CashInStcok> cashInStocks, List<NFMT.Funds.Model.CashInInvoice> cashInInvoices) { ResultModel result = new ResultModel(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = cashinallotDAL.Insert(user, cashInAllot); if (result.ResultStatus != 0) return result; int cashInAllotId = (int)result.ReturnValue; cashInCorp.AllotId = cashInAllotId; DAL.CashInCorpDAL cashInCorpDAL = new CashInCorpDAL(); result = cashInCorpDAL.Insert(user, cashInCorp); if (result.ResultStatus != 0) return result; int corpRefId = (int)result.ReturnValue; int cashInContractCId = 0; if (cashInContract.SubContractId > 0) { NFMT.Contract.DAL.ContractDAL contractDAL = new Contract.DAL.ContractDAL(); result = contractDAL.Get(user, cashInContract.SubContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.Contract contract = result.ReturnValue as NFMT.Contract.Model.Contract; if (contract == null || contract.ContractId <= 0) { result.ResultStatus = -1; result.Message = "获取合约失败"; return result; } cashInContractCId = contract.ContractId; } cashInContract.CorpRefId = corpRefId; cashInContract.AllotId = cashInAllotId; cashInContract.ContractId = cashInContractCId; DAL.CashInContractDAL cashInContractDAL = new CashInContractDAL(); result = cashInContractDAL.Insert(user, cashInContract); if (result.ResultStatus != 0) return result; int contractRefId = (int)result.ReturnValue; if (cashInStocks != null && cashInStocks.Any()) { DAL.CashInStcokDAL cashInStcokDAL = new CashInStcokDAL(); foreach (Model.CashInStcok cashInStcok in cashInStocks) { cashInStcok.CashInId = cashInCorp.CashInId; cashInStcok.AllotId = cashInAllotId; cashInStcok.CorpRefId = corpRefId; cashInStcok.ContractRefId = contractRefId; result = cashInStcokDAL.Insert(user, cashInStcok); if (result.ResultStatus != 0) return result; } } if (cashInInvoices != null && cashInInvoices.Any()) { DAL.CashInInvoiceDAL cashInInvoiceDAL = new CashInInvoiceDAL(); foreach (Model.CashInInvoice cashInInvoice in cashInInvoices) { cashInInvoice.CashInId = cashInCorp.CashInId; cashInInvoice.AllotId = cashInAllotId; cashInInvoice.CorpRefId = corpRefId; cashInInvoice.ContractRefId = contractRefId; result = cashInInvoiceDAL.Insert(user, cashInInvoice); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception ex) { result.Message = ex.Message; result.ResultStatus = -1; } finally { if (result.ResultStatus != 0) this.Log.ErrorFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (this.Log.IsInfoEnabled) this.Log.InfoFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); } return result; }
public ResultModel CreateContractStock(UserModel user, Model.CashInAllot allot, List<Model.CashInContract> details, int stockLogId) { ResultModel result = new ResultModel(); try { DAL.CashInAllotDAL cashInAllotDAL = new CashInAllotDAL(); DAL.CashInDAL cashInDAL = new CashInDAL(); DAL.CashInCorpDAL cashInCorpDAL = new CashInCorpDAL(); DAL.CashInContractDAL cashInContractDAL = new CashInContractDAL(); NFMT.WareHouse.DAL.StockLogDAL stockLogDAL = new WareHouse.DAL.StockLogDAL(); NFMT.WareHouse.DAL.StockDAL stockDAL = new WareHouse.DAL.StockDAL(); NFMT.Contract.DAL.ContractSubDAL subDAL = new Contract.DAL.ContractSubDAL(); NFMT.Contract.DAL.ContractCorporationDetailDAL corpDetailDAL = new Contract.DAL.ContractCorporationDetailDAL(); using (System.Transactions.TransactionScope scope = new TransactionScope()) { //获取库存流水 result = stockLogDAL.Get(user, 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; } //获取库存 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.Message = "库存不存在"; result.ResultStatus = -1; return result; } //获取合约 result = subDAL.Get(user, stockLog.SubContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.ContractSub sub = result.ReturnValue as NFMT.Contract.Model.ContractSub; if (sub == null || sub.SubId <= 0) { result.ResultStatus = -1; result.Message = "合约不存在"; return result; } if (sub.SubStatus != StatusEnum.已生效) { result.ResultStatus = -1; result.Message = "合约状态不允许分配收款"; return result; } //获取外部公司 result = corpDetailDAL.LoadCorpListByContractId(user, sub.ContractId, false); if (result.ResultStatus != 0) return result; List<NFMT.Contract.Model.ContractCorporationDetail> outCorps = result.ReturnValue as List<NFMT.Contract.Model.ContractCorporationDetail>; if (outCorps == null) { result.Message = "合约对方抬头获取失败"; result.ResultStatus = -1; return result; } foreach (Model.CashInContract detail in details) { //收款登记验证 result = cashInDAL.Get(user, detail.CashInId); if (result.ResultStatus != 0) return result; Model.CashIn cashIn = result.ReturnValue as Model.CashIn; if (cashIn == null || cashIn.CashInId <= 0) { result.Message = "收款登记不存在"; result.ResultStatus = -1; return result; } //收款登记与合约币种验证 if (cashIn.CurrencyId != sub.SettleCurrency) { result.Message = "收款登记币种与合约币种不相同"; result.ResultStatus = -1; return result; } //获取公司收款分配 result = cashInCorpDAL.Get(user, detail.CorpRefId); if (result.ResultStatus != 0) return result; Model.CashInCorp cashInCorp = result.ReturnValue as Model.CashInCorp; if (cashInCorp == null || cashInCorp.RefId <= 0) { result.Message = "公司收款分配不存在"; result.ResultStatus = -1; return result; } //验证公司抬头 if (!outCorps.Any(temp => temp.CorpId == cashInCorp.CorpId)) { result.Message = "收款分配公司不在合约对方抬头,收款分配失败"; result.ResultStatus = -1; return result; } //新增合约收款分配 detail.AllotId = cashInCorp.AllotId; detail.CashInId = cashInCorp.CashInId; detail.ContractId = sub.ContractId; detail.CorpRefId = cashInCorp.RefId; detail.DetailStatus = StatusEnum.已生效; detail.SubContractId = sub.SubId; result = cashInContractDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; int contractRefId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out contractRefId) || contractRefId <= 0) { result.Message = "新增收款分配失败"; result.ResultStatus = -1; return result; } //新增库存收款分配 Model.CashInStcok cashInStock = new CashInStcok(); cashInStock.AllotBala = detail.AllotBala; cashInStock.AllotId = detail.AllotId; cashInStock.CashInId = detail.CashInId; cashInStock.ContractRefId = contractRefId; cashInStock.CorpRefId = detail.CorpRefId; cashInStock.DetailStatus = StatusEnum.已生效; cashInStock.StockId = stockLog.StockId; cashInStock.StockLogId = stockLog.StockLogId; cashInStock.StockNameId = stock.StockNameId; result = this.cashinstcokDAL.Insert(user, cashInStock); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.Message = ex.Message; result.ResultStatus = -1; } return result; }
public ResultModel Update(UserModel user, Model.CashInAllot cashInAllot, Model.CashInCorp cashInCorp, Model.CashInContract cashInContract, List<Model.CashInStcok> cashInStocks, List<NFMT.Funds.Model.CashInInvoice> cashInInvoices) { ResultModel result = new ResultModel(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = cashinallotDAL.Get(user, cashInAllot.AllotId); if (result.ResultStatus != 0) return result; Model.CashInAllot cashInAllotres = result.ReturnValue as Model.CashInAllot; if (cashInAllotres == null) { result.ResultStatus = -1; result.Message = "获取收款分配失败"; return result; } cashInAllotres.Alloter = user.EmpId; cashInAllotres.AllotTime = DateTime.Now; cashInAllotres.AllotBala = cashInAllot.AllotBala; cashInAllotres.AllotType = cashInAllot.AllotType; cashInAllotres.CurrencyId = cashInAllot.CurrencyId; cashInAllotres.AllotDesc = cashInAllot.AllotDesc; result = cashinallotDAL.Update(user, cashInAllotres); if (result.ResultStatus != 0) return result; //作废收款分配至公司 DAL.CashInCorpDAL cashInCorpDAL = new CashInCorpDAL(); result = cashInCorpDAL.InvalidAll(user, cashInAllot.AllotId); if (result.ResultStatus != 0) return result; result = cashInCorpDAL.Insert(user, cashInCorp); if (result.ResultStatus != 0) return result; int corpRefId = (int)result.ReturnValue; //作废收款分配至合同 DAL.CashInContractDAL cashInContractDAL = new CashInContractDAL(); result = cashInContractDAL.InvalidAll(user, cashInAllot.AllotId); if (result.ResultStatus != 0) return result; cashInContract.CorpRefId = corpRefId; result = cashInContractDAL.Insert(user, cashInContract); if (result.ResultStatus != 0) return result; int contractRefId = (int)result.ReturnValue; if (cashInStocks != null && cashInStocks.Any()) { DAL.CashInStcokDAL cashInStcokDAL = new CashInStcokDAL(); result = cashInStcokDAL.InvalidAll(user, cashInAllot.AllotId); if (result.ResultStatus != 0) return result; foreach (Model.CashInStcok cashInStcok in cashInStocks) { cashInStcok.CashInId = cashInCorp.CashInId; cashInStcok.AllotId = cashInAllot.AllotId; cashInStcok.CorpRefId = corpRefId; cashInStcok.ContractRefId = contractRefId; result = cashInStcokDAL.Insert(user, cashInStcok); if (result.ResultStatus != 0) return result; } } if (cashInInvoices != null && cashInInvoices.Any()) { DAL.CashInInvoiceDAL cashInInvoiceDAL = new CashInInvoiceDAL(); result = cashInInvoiceDAL.InvalidAll(user, cashInAllot.AllotId); if (result.ResultStatus != 0) return result; foreach (Model.CashInInvoice cashInInvoice in cashInInvoices) { cashInInvoice.CashInId = cashInCorp.CashInId; cashInInvoice.AllotId = cashInAllot.AllotId; cashInInvoice.CorpRefId = corpRefId; cashInInvoice.ContractRefId = contractRefId; result = cashInInvoiceDAL.Insert(user, cashInInvoice); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception ex) { result.Message = ex.Message; result.ResultStatus = -1; } finally { if (result.ResultStatus != 0) this.Log.ErrorFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (this.Log.IsInfoEnabled) this.Log.InfoFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); } return result; }