public ResultModel PayApplyStockCreate(UserModel user, PayApply payApply, List<StockPayApply> stockPayApplies, string memo, int deptId, int corpId) { ResultModel result = new ResultModel(); try { StockPayApplyDAL stockPayApplyDAL = new StockPayApplyDAL(); ApplyDAL applyDAL = new ApplyDAL(); PayApplyDAL payApplyDAL = new PayApplyDAL(); ContractPayApplyDAL contractPayApplyDAL = new ContractPayApplyDAL(); StockLogDAL stockLogDAL = new StockLogDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证可申请金额 //NFMT.Data.Model.FuturesPrice futuresPrice = NFMT.Data.BasicDataProvider.FuturesPrices[0]; //验证库存流水是否在同一子合约中 int subId = 0; int contractId = 0; foreach (StockPayApply stockPayApply in stockPayApplies) { result = stockLogDAL.Get(user, stockPayApply.StockLogId); if (result.ResultStatus != 0) return result; StockLog stockLog = result.ReturnValue as StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "库存流水不存在"; return result; } if (subId == 0) { subId = stockLog.SubContractId; contractId = stockLog.ContractId; } if (stockLog.SubContractId != subId) { result.ResultStatus = -1; result.Message = "不能同时申请不同子合约中的库存付款"; return result; } } //新增申请主表 Department dept = UserProvider.Departments.FirstOrDefault(temp => temp.DeptId == deptId); if (dept == null || dept.DeptId < 0) { result.ResultStatus = -1; result.Message = "申请部门不存在"; return result; } int applyId = 0; Apply apply = new Apply(); apply.ApplyDept = dept.DeptId; apply.ApplyCorp = corpId; apply.ApplyDesc = memo; apply.ApplyTime = DateTime.Now; apply.ApplyType = ApplyType.付款申请; apply.EmpId = user.EmpId; result = applyDAL.Insert(user, apply); if (result.ResultStatus != 0) return result; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out applyId)) { result.ResultStatus = -1; result.Message = "申请主表新增失败"; return result; } decimal sumApplyBala = stockPayApplies.Sum(temp => temp.ApplyBala); //新增付款申请表 payApply.ApplyId = applyId; payApply.PayApplySource = (int)FundsStyleEnum.StockPayApply; payApply.ApplyBala = sumApplyBala; result = payapplyDAL.Insert(user, payApply); if (result.ResultStatus != 0) return result; int payApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out payApplyId)) { result.ResultStatus = -1; result.Message = "付款申请新增失败"; return result; } //新增合约付款申请关联表 ContractPayApply payApplyContract = new ContractPayApply(); payApplyContract.ApplyBala = sumApplyBala; payApplyContract.ContractId = contractId; payApplyContract.ContractSubId = subId; payApplyContract.PayApplyId = payApplyId; result = contractPayApplyDAL.Insert(user, payApplyContract); if (result.ResultStatus != 0) return result; int contractRefId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out contractRefId) || contractRefId <= 0) { result.ResultStatus = -1; result.Message = "新增付款申请失败"; return result; } //新增dbo.Fun_StockPayApply_Ref库存付款申请 foreach (StockPayApply stockPayApply in stockPayApplies) { stockPayApply.ContractId = contractId; stockPayApply.ContractRefId = contractRefId; stockPayApply.SubId = subId; stockPayApply.PayApplyId = payApplyId; stockPayApply.RefStatus = StatusEnum.已生效; result = stockPayApplyDAL.Insert(user, stockPayApply); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel PayApplyCreate(UserModel user, Apply apply, PayApply payApply, List<StockPayApply> stockDetails, int subId, bool isAudit) { ResultModel result = new ResultModel(); try { ApplyDAL applyDAL = new ApplyDAL(); ContractPayApplyDAL contractPayApplyDAL = new ContractPayApplyDAL(); StockPayApplyDAL stockPayApplyDAL = new StockPayApplyDAL(); StockDAL stockDAL = new StockDAL(); StockLogDAL stockLogDAL = new StockLogDAL(); ContractSubDAL subDAL = new ContractSubDAL(); using (TransactionScope scope = new TransactionScope()) { //新增主申请 apply.ApplyStatus = StatusEnum.已录入; apply.ApplyType = ApplyType.PayApply; apply.EmpId = user.EmpId; result = applyDAL.Insert(user, apply); if (result.ResultStatus != 0) return result; int applyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out applyId) || applyId <= 0) { result.Message = "主申请新增失败"; result.ResultStatus = -1; return result; } apply.ApplyId = applyId; //新增付款申请 payApply.ApplyId = apply.ApplyId; payApply.PayApplySource = (int)FundsStyleEnum.ContractPayApply; if (stockDetails != null && stockDetails.Count > 0) payApply.PayApplySource = (int)FundsStyleEnum.StockPayApply; result = this.payapplyDAL.Insert(user, payApply); if (result.ResultStatus != 0) return result; int payApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out payApplyId) || payApplyId <= 0) { result.Message = "付款申请新增失败"; result.ResultStatus = -1; return result; } payApply.PayApplyId = payApplyId; //获取子合约 result = subDAL.Get(user, subId); if (result.ResultStatus != 0) return result; ContractSub sub = result.ReturnValue as ContractSub; if (sub == null || sub.SubId <= 0) { result.Message = "子合约获取失败"; result.ResultStatus = -1; return result; } if (sub.SubStatus != StatusEnum.已生效) { result.Message = "子合约状态不正确,不能进行付款申请"; result.ResultStatus = -1; return result; } //新增合约付款申请 ContractPayApply contractPayApply = new ContractPayApply(); contractPayApply.ApplyBala = payApply.ApplyBala; contractPayApply.ContractId = sub.ContractId; contractPayApply.ContractSubId = sub.SubId; contractPayApply.PayApplyId = payApply.PayApplyId; contractPayApply.Status = StatusEnum.已录入; result = contractPayApplyDAL.Insert(user, contractPayApply); if (result.ResultStatus != 0) return result; int contractPayApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out contractPayApplyId) || contractPayApplyId <= 0) { result.Message = "合约关联新增失败"; result.ResultStatus = -1; return result; } contractPayApply.RefId = contractPayApplyId; //新增库存付款申请 if (stockDetails != null && stockDetails.Count > 0) { foreach (StockPayApply detail in stockDetails) { detail.ContractId = contractPayApply.ContractId; detail.ContractRefId = contractPayApply.RefId; detail.PayApplyId = contractPayApply.PayApplyId; detail.RefStatus = StatusEnum.已生效; detail.SubId = contractPayApply.ContractSubId; result = stockPayApplyDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } } if (result.ResultStatus == 0) result.ReturnValue = payApply; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel PayApplyMultiCreate(UserModel user, Apply apply, PayApply payApply, List<StockPayApply> stockDetails, bool isAudit) { ResultModel result = new ResultModel(); try { ApplyDAL applyDAL = new ApplyDAL(); ContractPayApplyDAL contractPayApplyDAL = new ContractPayApplyDAL(); StockPayApplyDAL stockPayApplyDAL = new StockPayApplyDAL(); using (TransactionScope scope = new TransactionScope()) { //新增主申请 apply.ApplyStatus = StatusEnum.已录入; apply.ApplyType = ApplyType.PayApply; apply.EmpId = user.EmpId; result = applyDAL.Insert(user, apply); if (result.ResultStatus != 0) return result; int applyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out applyId) || applyId <= 0) { result.Message = "主申请新增失败"; result.ResultStatus = -1; return result; } apply.ApplyId = applyId; //新增付款申请 payApply.ApplyId = apply.ApplyId; payApply.PayApplySource = (int)FundsStyleEnum.ContractPayApply; if (stockDetails != null && stockDetails.Any()) payApply.PayApplySource = (int)FundsStyleEnum.StockPayApply; result = this.payapplyDAL.Insert(user, payApply); if (result.ResultStatus != 0) return result; int payApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out payApplyId) || payApplyId <= 0) { result.Message = "付款申请新增失败"; result.ResultStatus = -1; return result; } payApply.PayApplyId = payApplyId; if (stockDetails != null) foreach (int subId in stockDetails.Select(a => a.SubId).Distinct()) { List<Model.StockPayApply> stockPayApplyDetails = stockDetails.Where(a => a.SubId == subId).ToList(); //新增合约付款申请 ContractPayApply contractPayApply = new ContractPayApply { ApplyBala = stockPayApplyDetails.Sum(a=>a.ApplyBala), ContractId = stockPayApplyDetails.First().ContractId, ContractSubId = subId, PayApplyId = payApply.PayApplyId, Status = StatusEnum.已录入 }; result = contractPayApplyDAL.Insert(user, contractPayApply); if (result.ResultStatus != 0) return result; int contractPayApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out contractPayApplyId) || contractPayApplyId <= 0) { result.Message = "合约关联新增失败"; result.ResultStatus = -1; return result; } contractPayApply.RefId = contractPayApplyId; foreach (StockPayApply detail in stockPayApplyDetails) { detail.ContractId = contractPayApply.ContractId; detail.ContractRefId = contractPayApply.RefId; detail.PayApplyId = contractPayApply.PayApplyId; detail.RefStatus = StatusEnum.已生效; detail.SubId = contractPayApply.ContractSubId; result = stockPayApplyDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } } if (result.ResultStatus == 0) result.ReturnValue = payApply; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel PayApplyContractCreate(UserModel user, PayApply payApply, int subId, string memo, int deptId, int corpId) { ResultModel result = new ResultModel(); try { ContractSubDAL subDAL = new ContractSubDAL(); ApplyDAL applyDAL = new ApplyDAL(); PayApplyDAL payApplyDAL = new PayApplyDAL(); ContractPayApplyDAL contractPayApplyDAL = new ContractPayApplyDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证子合约信息 result = subDAL.Get(user, subId); if (result.ResultStatus != 0) return result; ContractSub sub = result.ReturnValue as ContractSub; if (sub == null || sub.SubId <= 0) { result.ResultStatus = -1; result.Message = "子合约不存在"; return result; } //验证可申请金额 //NFMT.Data.Model.FuturesPrice futuresPrice = NFMT.Data.BasicDataProvider.FuturesPrices[0]; //新增申请主表 Department dept = UserProvider.Departments.FirstOrDefault(temp => temp.DeptId == deptId); if (dept == null || dept.DeptId < 0) { result.ResultStatus = -1; result.Message = "申请部门不存在"; return result; } int applyId = 0; Apply apply = new Apply(); apply.ApplyDept = dept.DeptId; apply.ApplyCorp = corpId; apply.ApplyDesc = memo; apply.ApplyTime = DateTime.Now; apply.ApplyType = ApplyType.付款申请; apply.EmpId = user.EmpId; result = applyDAL.Insert(user, apply); if (result.ResultStatus != 0) return result; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out applyId)) { result.ResultStatus = -1; result.Message = "申请主表新增失败"; return result; } //新增付款申请表 payApply.ApplyId = applyId; payApply.PayApplySource = (int)FundsStyleEnum.ContractPayApply; result = payapplyDAL.Insert(user, payApply); if (result.ResultStatus != 0) return result; int payApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out payApplyId)) { result.ResultStatus = -1; result.Message = "付款申请新增失败"; return result; } //新增Fun_ContractPayApply_Ref合约付款申请 ContractPayApply contractPayApply = new ContractPayApply(); contractPayApply.ContractId = sub.ContractId; contractPayApply.ContractSubId = sub.SubId; contractPayApply.PayApplyId = payApplyId; contractPayApply.ApplyBala = payApply.ApplyBala; result = contractPayApplyDAL.Insert(user, contractPayApply); if (result.ResultStatus != 0) return result; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }