Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }