public void LoadDisbursementInfoAmount(TermLoanRequest termLoanRequest) { if (termLoanRequest.DisbursementsInfo != null && termLoanRequest.DisbursementsInfo.Count > 0) { decimal totalInvoiceAmount = 0; CurrencyConverter currencyConverter = new CurrencyConverter(); var conversionMethod = _configurationService.GetEffective("offer/fee-currency-conversion-method", "Buy to middle").Result; var domesticCurrency = _configurationService.GetEffective("domestic-currency", "RSD").Result; foreach (var loanPurpose in termLoanRequest.DisbursementsInfo) { var amount = currencyConverter.CurrencyConvert(loanPurpose.Amount.Amount, loanPurpose.Amount.Code, domesticCurrency, DateTime.Today.ToString("o", CultureInfo.InvariantCulture), conversionMethod); totalInvoiceAmount += amount; } termLoanRequest.TotalDisbursementAmount = totalInvoiceAmount; } }
public static PriceCalculationParameters GetPriceCalculationParameterFromTermLoanRequest(TermLoanRequest request) { return(new PriceCalculationParameters { Amount = request.Amount, Currency = request.Currency, Fees = request.Conditions?.Fees, InterestRates = request.Conditions?.InterestRates, Term = request.Term, RequestDate = DateTime.Today, // Check how are rest of the parameters mapped }); }
public ArrangementRequest GetForArrangementKind(ArrangementRequestInitializationParameters parameters, ArrangementKind?arrangementKind, ProductSnapshot productData = null) { var arrangementRequest = new ArrangementRequest(); switch (arrangementKind) { case ArrangementKind.TermLoan: var termLoanRequest = new TermLoanRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Term = parameters.Term, Annuity = parameters.Annuity ?? 0, DownpaymentAmount = parameters.DownpaymentAmount ?? 0, Napr = parameters.InterestRate ?? 0, RepaymentPeriod = parameters.RepaymentPeriod, RepaymentPeriodStartDate = parameters.RepaymentPeriodStartDate, GracePeriod = parameters.GracePeriod, GracePeriodStartDate = parameters.GracePeriodStartDate, DrawdownPeriod = parameters.DrawdownPeriod, DrawdownPeriodStartDate = parameters.DrawdownPeriodStartDate, MaturityDate = parameters.MaturityDate, DownpaymentPercentage = parameters.DownpaymentPercentage, InvoiceAmount = parameters.InvoiceAmount ?? 0, IsRefinancing = parameters.IsRefinancing ?? false, RepaymentType = parameters.RepaymentType, InstallmentScheduleDayOfMonth = parameters.InstallmentScheduleDayOfMonth }; arrangementRequest = termLoanRequest; break; case ArrangementKind.CardAccessArrangement: arrangementRequest = new CardAccessArrangementRequest(); break; case ArrangementKind.CreditCardFacility: var creditCardFacilityRequest = new CreditCardFacilityRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Napr = parameters.InterestRate ?? 0, Term = Utility.GetMonthsFromPeriod(parameters.Term).ToString(), MaturityDate = parameters.MaturityDate, RevolvingPercentage = parameters.RevolvingPercentage ?? 0, MinimalRepaymentPercentage = productData?.MinimalRepaymentPercentage ?? 0, MinimalRepaymentAmount = new Currency { Amount = productData?.MinimalRepaymentAmount?.Amount ?? 0, Code = productData?.MinimalRepaymentAmount?.Code ?? "EUR" }, RepaymentType = parameters.RepaymentType, InstallmentScheduleDayOfMonth = parameters.InstallmentScheduleDayOfMonth }; arrangementRequest = creditCardFacilityRequest; break; case ArrangementKind.CreditFacility: var creditFacilityRequest = new CreditFacilityRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Napr = parameters.InterestRate ?? 0, MaturityDate = parameters.MaturityDate, MinimalRepaymentAmount = new Currency { Amount = productData?.MinimalRepaymentAmount?.Amount ?? 0, Code = productData?.MinimalRepaymentAmount?.Code ?? "EUR" } }; arrangementRequest = creditFacilityRequest; break; case ArrangementKind.CurrentAccount: var currentAccountRequest = new CurrentAccountRequest { Currency = parameters.Currency, Napr = parameters.InterestRate ?? 0 }; arrangementRequest = currentAccountRequest; break; case ArrangementKind.DemandDeposit: var demandDepositRequest = new DemandDepositRequest { Currency = parameters.Currency, Napr = parameters.InterestRate ?? 0 }; arrangementRequest = demandDepositRequest; break; case ArrangementKind.ElectronicAccessArrangement: arrangementRequest = new ElectronicAccessArrangementRequest(); break; case ArrangementKind.OtherProductArrangement: arrangementRequest = new OtherProductArrangementRequest(); break; case ArrangementKind.OverdraftFacility: var overdraftFacilityRequest = new OverdraftFacilityRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Term = Utility.GetMonthsFromPeriod(parameters.Term).ToString(), Napr = parameters.InterestRate ?? 0, MaturityDate = parameters.MaturityDate, RepaymentType = parameters.RepaymentType, InstallmentScheduleDayOfMonth = parameters.InstallmentScheduleDayOfMonth }; arrangementRequest = overdraftFacilityRequest; break; case ArrangementKind.SecuritiesArrangement: arrangementRequest = new SecuritiesArrangementRequest(); break; case ArrangementKind.TermDeposit: var termDepositRequest = new TermDepositRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Term = parameters.Term, Napr = parameters.InterestRate ?? 0, MaturityDate = parameters.MaturityDate }; arrangementRequest = termDepositRequest; break; case ArrangementKind.Abstract: arrangementRequest = new AbstractArrangementRequest { IsAbstractOrigin = true }; break; case ArrangementKind.CreditLine: var creditLineRequest = new CreditLineRequest { Amount = parameters.Amount ?? 0, Currency = parameters.Currency, Term = parameters.Term }; arrangementRequest = creditLineRequest; break; default: arrangementRequest = new ArrangementRequest(); break; } arrangementRequest.Conditions = parameters.Conditions; arrangementRequest.Periods = parameters.ScheduledPeriods; arrangementRequest.CalculationDate = parameters.CalculationDate; return(arrangementRequest); }