public override IModel CreateModel(DataRow dr) { CashInCorp cashincorp = new CashInCorp(); cashincorp.RefId = Convert.ToInt32(dr["RefId"]); if (dr["AllotId"] != DBNull.Value) { cashincorp.AllotId = Convert.ToInt32(dr["AllotId"]); } if (dr["BlocId"] != DBNull.Value) { cashincorp.BlocId = Convert.ToInt32(dr["BlocId"]); } if (dr["CorpId"] != DBNull.Value) { cashincorp.CorpId = Convert.ToInt32(dr["CorpId"]); } if (dr["CashInId"] != DBNull.Value) { cashincorp.CashInId = Convert.ToInt32(dr["CashInId"]); } if (dr["IsShare"] != DBNull.Value) { cashincorp.IsShare = Convert.ToBoolean(dr["IsShare"]); } if (dr["AllotBala"] != DBNull.Value) { cashincorp.AllotBala = Convert.ToDecimal(dr["AllotBala"]); } if (dr["DetailStatus"] != DBNull.Value) { cashincorp.DetailStatus = (Common.StatusEnum)Convert.ToInt32(dr["DetailStatus"]); } if (dr["FundsLogId"] != DBNull.Value) { cashincorp.FundsLogId = Convert.ToInt32(dr["FundsLogId"]); } return cashincorp; }
public override IModel CreateModel(SqlDataReader dr) { CashInCorp cashincorp = new CashInCorp(); int indexRefId = dr.GetOrdinal("RefId"); cashincorp.RefId = Convert.ToInt32(dr[indexRefId]); int indexAllotId = dr.GetOrdinal("AllotId"); if (dr["AllotId"] != DBNull.Value) { cashincorp.AllotId = Convert.ToInt32(dr[indexAllotId]); } int indexBlocId = dr.GetOrdinal("BlocId"); if (dr["BlocId"] != DBNull.Value) { cashincorp.BlocId = Convert.ToInt32(dr[indexBlocId]); } int indexCorpId = dr.GetOrdinal("CorpId"); if (dr["CorpId"] != DBNull.Value) { cashincorp.CorpId = Convert.ToInt32(dr[indexCorpId]); } int indexCashInId = dr.GetOrdinal("CashInId"); if (dr["CashInId"] != DBNull.Value) { cashincorp.CashInId = Convert.ToInt32(dr[indexCashInId]); } int indexIsShare = dr.GetOrdinal("IsShare"); if (dr["IsShare"] != DBNull.Value) { cashincorp.IsShare = Convert.ToBoolean(dr[indexIsShare]); } int indexAllotBala = dr.GetOrdinal("AllotBala"); if (dr["AllotBala"] != DBNull.Value) { cashincorp.AllotBala = Convert.ToDecimal(dr[indexAllotBala]); } int indexDetailStatus = dr.GetOrdinal("DetailStatus"); if (dr["DetailStatus"] != DBNull.Value) { cashincorp.DetailStatus = (Common.StatusEnum)Convert.ToInt32(dr[indexDetailStatus]); } int indexFundsLogId = dr.GetOrdinal("FundsLogId"); if (dr["FundsLogId"] != DBNull.Value) { cashincorp.FundsLogId = Convert.ToInt32(dr[indexFundsLogId]); } return cashincorp; }
public ResultModel CreateDirectContract(UserModel user, CashInAllot allot, List<CashInContractDirect> directs, int subId) { ResultModel result = new ResultModel(); try { NFMT.Contract.DAL.ContractSubDAL subDAL = new Contract.DAL.ContractSubDAL(); DAL.CashInDAL cashInDAL = new CashInDAL(); DAL.CashInAllotDAL cashInAllotDAL = new CashInAllotDAL(); DAL.CashInCorpDAL cashInCorpDAL = new CashInCorpDAL(); using (System.Transactions.TransactionScope scope = new TransactionScope()) { //获取子合约 result = subDAL.Get(user, subId); 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; } //判断合约状态 //获取合约对方抬头 result = subDAL.GetContractOutCorp(user, sub.SubId); if (result.ResultStatus != 0) return result; DataTable outCorpTable = result.ReturnValue as DataTable; if (outCorpTable == null || outCorpTable.Rows.Count == 0) { result.ResultStatus = -1; result.Message = "合约对方抬头不存在,收款分配失败"; return result; } List<int> outCorpIds = new List<int>(); foreach (DataRow dr in outCorpTable.Rows) { int outCorpId = 0; if (dr["CorpId"] == DBNull.Value || !int.TryParse(dr["CorpId"].ToString(), out outCorpId) || outCorpId <= 0) { result.ResultStatus = -1; result.Message = "合约对方抬头获取失败"; return result; } outCorpIds.Add(outCorpId); } List<Model.CashInCorp> cashCorps = new List<CashInCorp>(); foreach (CashInContractDirect direct in directs) { //判断收款分配到的对方抬头是否包含在合约抬头中 if (!outCorpIds.Contains(direct.AllotCorpId)) { result.ResultStatus = -1; result.Message = "收款分配选择的分配公司不在该合约对方抬头中,收款分配失败"; return result; } //判断收款登记的币种是否和合约币种相同 result = cashInDAL.Get(user, direct.CashInId); if (result.ResultStatus != 0) return result; Model.CashIn cashIn = result.ReturnValue as Model.CashIn; if (cashIn == null || cashIn.CashInId <= 0) { result.ResultStatus = -1; result.Message = "收款登记不存在"; return result; } if (cashIn.CashInStatus != StatusEnum.已生效) { result.ResultStatus = -1; result.Message = "收款登记状态错误,不能进行分配"; return result; } if (cashIn.CurrencyId != sub.SettleCurrency) { result.ResultStatus = -1; result.Message = "收款登记币种与合约币种不相同,分配错误"; return result; } CashInCorp cashCorp = new CashInCorp(); NFMT.User.Model.Corporation corp = NFMT.User.UserProvider.Corporations.FirstOrDefault(temp => temp.CorpId == direct.AllotCorpId); if (corp == null || corp.CorpId <= 0) { result.ResultStatus = -1; result.Message = "收款分配选择的分配公司不存在,分配失败"; return result; } cashCorp.AllotBala = direct.AllotBala; cashCorp.BlocId = corp.ParentId; cashCorp.CashInId = direct.CashInId; cashCorp.CorpId = corp.CorpId; cashCorp.DetailStatus = StatusEnum.已生效; cashCorp.IsShare = false; cashCorp.AllotId = 0; cashCorps.Add(cashCorp); } decimal sumBala = directs.Sum(temp => temp.AllotBala); allot.AllotBala = sumBala; allot.Alloter = user.EmpId; allot.AllotStatus = StatusEnum.已录入; allot.AllotTime = DateTime.Now; allot.AllotType = (int)NFMT.Funds.CashInAllotTypeEnum.Contract; allot.CurrencyId = sub.SettleCurrency; //新增主分配 result = cashInAllotDAL.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.ResultStatus = -1; result.Message = "收款分配新增失败"; return result; } //新增公司收款分配 foreach (Model.CashInCorp cd in cashCorps) { cd.AllotId = allotId; result = cashInCorpDAL.Insert(user, cd); if (result.ResultStatus != 0) return result; int refId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out refId) || refId <= 0) { result.ResultStatus = -1; result.Message = "公司收款分配新增失败"; return result; } CashInContract cashContract = new CashInContract(); cashContract.AllotBala = cd.AllotBala; cashContract.AllotId = cd.AllotId; cashContract.CashInId = cd.CashInId; cashContract.ContractId = sub.ContractId; cashContract.CorpRefId = refId; cashContract.DetailStatus = StatusEnum.已生效; cashContract.SubContractId = sub.SubId; result = this.cashincontractDAL.Insert(user, cashContract); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }