Exemplo n.º 1
0
        //保存当期资产池本金与利息
        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);
            }
        }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
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);
        }