private List <InstalmentResult> GetAllDebitInstalmentOrders() { List <InstalmentResult> result = new List <InstalmentResult>(); var accountCurrency = Settings.Setting.Default.GetCurrency(this.Account.Setting(this.TradeDay).CurrencyId, this.TradeDay); var instrumentCurrency = Settings.Setting.Default.GetCurrency(this.Instrument.CurrencyId, this.TradeDay); foreach (var eachOrder in this.Orders) { if (eachOrder.IsOpen && eachOrder.Instalment != null && eachOrder.Instalment.InstalmentType != InstalmentType.FullAmount) { foreach (var eachInstalment in eachOrder.Instalment.InstalmentDetails) { if (eachInstalment.PaymentDateTimeOnPlan <= this.TradeDay && eachInstalment.PaidDateTime == null) { InstalmentResult item = this.CreateInstalmentResult(this.TradeDay, eachInstalment, eachOrder, this.Account, this.Instrument, accountCurrency, instrumentCurrency); result.Add(item); } } } } return(result); }
private InstalmentResult CreateInstalmentResult(DateTime tradeDay, InstalmentDetail instalment, PhysicalOrder order, Account account, Settings.Instrument instrument, Settings.Currency accountCurrency, Settings.Currency instrumentCurrency) { InstalmentResult result = new InstalmentResult(); result.OrderId = instalment.OrderId; result.Code = order.Code; result.ExecuteTime = order.ExecuteTime.Value; result.Lot = order.Lot; result.LotBalance = order.LotBalance; result.CurrencyId = account.IsMultiCurrency ? instrumentCurrency.Id : accountCurrency.Id; result.Code = account.IsMultiCurrency ? instrumentCurrency.Code : accountCurrency.Code; result.CurrencyDecimals = account.IsMultiCurrency ? instrumentCurrency.Decimals : accountCurrency.Decimals; result.PaidPledge = order.PaidPledgeBalance; result.Sequence = instalment.Period; result.InterestRate = instalment.InterestRate; result.Principal = instalment.Principal; result.Interest = instalment.Interest; var instalmentPolicyDetail = order.Instalment.InstalmentPolicyDetail(null); result.DebitInterest = InstalmentManager.CalculateDebitInterest(instalment.Principal, instalment.Interest, tradeDay.GetDateDiff(instalment.PaymentDateTimeOnPlan.Value), instalmentPolicyDetail.InterestRate, instalmentPolicyDetail.DebitInterestType, instalmentPolicyDetail.DebitInterestRatio, instalmentPolicyDetail.DebitFreeDays, instrument.InterestYearDays, result.CurrencyDecimals); result.PaymentDateTimeOnPlan = instalment.PaymentDateTimeOnPlan; return(result); }