public CalculateInstallmentsStrategy(CalculateInstallmentsOptions pCio, int pStartInstallment, OCurrency pStartAmount, int pNumberOfInstallments, ApplicationSettings pGeneralSettings) { _generalSettings = pGeneralSettings; OCurrency initialOLBOfContractBeforeRescheduling = Loan.InitialOlbOfContractBeforeRescheduling; if (pCio.IsExotic) { if (pCio.LoanType == OLoanTypes.Flat) _iCi = new Flat.ExoticStrategy(pCio.StartDate, pCio.Contract, _generalSettings); else _iCi = new Declining.ExoticStrategy(pCio.StartDate, pCio.Contract, _generalSettings); } else { if (pCio.LoanType == OLoanTypes.Flat) _iCi = new FlatStrategy(pCio.StartDate, pCio.Contract, _generalSettings, initialOLBOfContractBeforeRescheduling); else if (pCio.LoanType == OLoanTypes.DecliningFixedInstallments) { if (pCio.Contract.InterestRate == 0) _iCi = new FlatStrategy(pCio.StartDate, pCio.Contract, _generalSettings, initialOLBOfContractBeforeRescheduling); else _iCi = new FixedInstallmentStrategy(pCio.StartDate, pCio.Contract, pStartInstallment, pStartAmount, pNumberOfInstallments, _generalSettings); } else { if (pCio.Contract.InterestRate == 0) _iCi = new FlatStrategy(pCio.StartDate, pCio.Contract, _generalSettings, initialOLBOfContractBeforeRescheduling); else _iCi = new FixedPrincipalStrategy(pCio.StartDate, pCio.Contract, _generalSettings); } } }
public CalculateInstallmentsStrategy(CalculateInstallmentsOptions pCio, OCurrency pStartAmount, int pNumberOfInstallments, ApplicationSettings pGeneralSettings) { _generalSettings = pGeneralSettings; OCurrency initialOlbOfContractBeforeRescheduling = Loan.InitialOlbOfContractBeforeRescheduling; if (pCio.IsExotic) { if (pCio.LoanType == OLoanTypes.Flat) { _iCi = new Flat.ExoticStrategy(pCio.Contract, _generalSettings); } else { _iCi = new Declining.ExoticStrategy(pCio.Contract, _generalSettings); } } else { if (pCio.Contract.InterestRate == 0) { _iCi = new FlatStrategy(pCio.Contract, _generalSettings, initialOlbOfContractBeforeRescheduling); } else { switch (pCio.LoanType) { case OLoanTypes.Flat: _iCi = new FlatStrategy(pCio.Contract, _generalSettings, initialOlbOfContractBeforeRescheduling); break; case OLoanTypes.DecliningFixedInstallments: _iCi = new FixedInstallmentStrategy(pCio.Contract, pStartAmount, pNumberOfInstallments, _generalSettings); break; case OLoanTypes.DecliningFixedPrincipal: _iCi = new FixedPrincipalStrategy(pCio.Contract, _generalSettings); break; case OLoanTypes.DecliningFixedPrincipalWithRealInterest: _iCi = new FixedPrincipalWithRealInterest(pCio.Contract, _generalSettings); break; } } } }