//保存当期资产池本金与利息 private void SaveCurrPeriodInterestPricipal(int projectId, DateTime paymentDay, double firstCollectionInterest, double firstCollectionPrincipal, bool enableOverride) { var obj = m_dbAdapter.AssetCashflowVariable.GetByProjectIdPaymentDay(projectId, paymentDay); if (obj != null) { obj.InterestCollection = firstCollectionInterest; obj.PricipalCollection = firstCollectionPrincipal; obj.EnableOverride = enableOverride; m_dbAdapter.AssetCashflowVariable.Update(obj); } else { var newObj = new AssetCashflowVariable(); newObj.ProjectId = projectId; newObj.PaymentDate = paymentDay; newObj.InterestCollection = firstCollectionInterest; newObj.PricipalCollection = firstCollectionPrincipal; newObj.EnableOverride = enableOverride; m_dbAdapter.AssetCashflowVariable.New(newObj); } }
public AssetOverrideSetting(AssetCashflowVariable acfVariable = null) { if (acfVariable != null && acfVariable.EnableOverride) { IsOverride = true; Interest = acfVariable.InterestCollection; Principal = acfVariable.PricipalCollection; PaymentDate = acfVariable.PaymentDate; } else { IsOverride = false; Principal = 0.0; Interest = 0.0; } }
public static DataTable GetCashflowDt(DatasetScheduleLogicModel datasetSchedule, AssetCashflowVariable assetCashflowVariable, double sysPredictInterest, double sysPredictPrincipal, out double currInterestCollection, out double currPrincipalCollection) { currInterestCollection = sysPredictInterest; currPrincipalCollection = sysPredictPrincipal; var assetOverrideSetting = new AssetOverrideSetting(assetCashflowVariable); DataTable cashflowDt = new DataTable(); var project = datasetSchedule.ProjectLogicModel.Instance; var dataset = datasetSchedule.Dataset.Instance; var paymentDate = datasetSchedule.PaymentDate; var hasOsa = false; var osa = datasetSchedule.Dataset.DealModel.OverrideSingleAsset; foreach (var asset in datasetSchedule.Dataset.Assets) { var overridePrincipal = osa.GetPrincipal(asset.AssetId); var overrideInterest = osa.GetInterest(asset.AssetId); if (overridePrincipal != null || overrideInterest != null) { hasOsa = true; break; } } //测算优先级: //1、覆盖现金流测算 //2、单笔资产覆盖的方式测算 //3、系统测算 //未填写覆盖现金流值,或填写值和系统测算值一致,认为是不使用本息覆盖现金流测算 var hasOverrideCashflow = assetCashflowVariable != null && assetCashflowVariable.EnableOverride; if (hasOverrideCashflow) { //使用覆盖现金流的方式测算 cashflowDt = NancyUtils.GetStaticAnalyticsResult(project.ProjectId, null, dataset.AsOfDate, assetOverrideSetting).CashflowDt; currInterestCollection = assetOverrideSetting.Interest; currPrincipalCollection = assetOverrideSetting.Principal; } else { if (hasOsa) { //未填写覆盖现金流参数,已填写单笔资产覆盖 //重新计算本息,使用覆盖现金流的方式测算 var dealModel = datasetSchedule.Dataset.DealModel; var absDeal = new ABSDeal(dealModel.YmlFolder, dealModel.DsFolder); var acfResult = absDeal.Result.AcfResult; var acfDataset = acfResult.Dataset.SingleOrDefault(x => x.PaymentDay == paymentDate); acfResult.MergeOsa(osa); acfResult.ReCalcSum(); var sumPrincipal = double.Parse(acfDataset.Sum.Principal.ToString("n2")); var sumInterest = double.Parse(acfDataset.Sum.Interest.ToString("n2")); assetOverrideSetting.IsOverride = true; assetOverrideSetting.Principal = sumPrincipal; assetOverrideSetting.Interest = sumInterest; assetOverrideSetting.PaymentDate = paymentDate; cashflowDt = NancyUtils.GetStaticAnalyticsResult(project.ProjectId, null, dataset.AsOfDate, assetOverrideSetting).CashflowDt; currInterestCollection = assetOverrideSetting.Interest; currPrincipalCollection = assetOverrideSetting.Principal; } else { //未填写覆盖现金流参数,且未填写单笔资产覆盖 //使用非覆盖现金流的方式测算 cashflowDt = NancyUtils.GetStaticAnalyticsResult(project.ProjectId, null, dataset.AsOfDate).CashflowDt; } } return(cashflowDt); }