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); }
private void InitSchecule(DatasetScheduleLogicModel datasetSchedule) { AsOfDateBegin = datasetSchedule.AsOfDateBegin; AsOfDateEnd = datasetSchedule.AsOfDateEnd; PaymentDate = datasetSchedule.PaymentDate; }
public PrepayRecordListViewModel(DatasetScheduleLogicModel datasetSchedule, IEnumerable <AmortizationScheduleRecord> records) { InitSchecule(datasetSchedule); AddRange(records); }
public PrepayRecordListViewModel(DatasetScheduleLogicModel datasetSchedule, IEnumerable <NancyBasicAssetCashflowItem> records) { InitSchecule(datasetSchedule); AddRange(records); }
public PrepayRecordListViewModel(DatasetScheduleLogicModel datasetSchedule) { InitSchecule(datasetSchedule); }