private static void _AssertInstallmentType(InstallmentType selectedInstallmentType,int pId, string pName, int pNbOfDays, int pNbOfMonths)
 {
     Assert.AreEqual(pId, selectedInstallmentType.Id);
     Assert.AreEqual(pName, selectedInstallmentType.Name);
     Assert.AreEqual(pNbOfDays, selectedInstallmentType.NbOfDays);
     Assert.AreEqual(pNbOfMonths, selectedInstallmentType.NbOfMonths);
 }
        public static DateTime GetLastMaturity(DateTime date, InstallmentType periodicity, int numberPeriods)
        {
           for (int i = 0; i < numberPeriods; i++)
            {
                date = date.AddMonths(-periodicity.NbOfMonths).AddDays(-periodicity.NbOfDays);
            }

           return date;
        }
Example #3
0
        public override bool Equals(object obj)
        {
            InstallmentType it = obj as InstallmentType;

            if (null == it)
            {
                return(false);
            }

            return(it.Id == Id);
        }
        public void DeleteInstallmentType(InstallmentType installmentType)
        {
            const string q = @"DELETE FROM [InstallmentTypes] WHERE id = @id";

            using (SqlConnection conn = GetConnection())
            using (OpenCbsCommand c = new OpenCbsCommand(q, conn))
            {
                c.AddParam("@id", installmentType.Id);
                c.ExecuteNonQuery();
            }
        }
        public int AddInstallmentType(InstallmentType installmentType)
        {
            const string q = @"INSERT INTO [InstallmentTypes]([name], [nb_of_days], [nb_of_months])
                                     VALUES(@name, @days, @months) SELECT SCOPE_IDENTITY()";

            using (SqlConnection conn = GetConnection())
            using (OpenCbsCommand c = new OpenCbsCommand(q, conn))
            {
                SetInstallmentType(c, installmentType);
                return int.Parse(c.ExecuteScalar().ToString());
            }
        }
        public void EditInstallmentType(InstallmentType installmentType)
        {
            const string q = @"UPDATE [InstallmentTypes] SET [name] = @name, [nb_of_days] = @days, [nb_of_months] = @months
                                     WHERE id = @id";

            using (SqlConnection conn = GetConnection())
            using (OpenCbsCommand c = new OpenCbsCommand(q, conn))
            {
                SetInstallmentType(c, installmentType);
                c.AddParam("@id", installmentType.Id);
                c.ExecuteNonQuery();
            }
        }
Example #7
0
        public InstallmentType AddBiWeeklyInstallmentType()
        {
            InstallmentType biWeekly = new InstallmentType();
            biWeekly.Name = "Bi-Weekly";
            biWeekly.NbOfDays = 14;
            biWeekly.NbOfMonths = 0;

            string sqlText = "INSERT INTO InstallmentTypes (name,nb_of_days,nb_of_months) VALUES ('" + biWeekly.Name + "'," + biWeekly.NbOfDays + "," + biWeekly.NbOfMonths + ") SELECT SCOPE_IDENTITY()";

            OpenCbsCommand insert = new OpenCbsCommand(sqlText, SqlConnection);

            biWeekly.Id = int.Parse(insert.ExecuteScalar().ToString());
            return biWeekly;
        }
Example #8
0
 private void ModifyInstallmentTypes(Action action, InstallmentType installmentType)
 {
     try
     {
         switch (action)
         {
             case Action.Add:
                 ServicesProvider.GetInstance().GetProductServices().AddInstallmentType(installmentType);
                 break;
             case Action.Edit:
                 ServicesProvider.GetInstance().GetProductServices().EditInstallmentType(installmentType);
                 break;
             case Action.Delete:
                 ServicesProvider.GetInstance().GetProductServices().DeleteInstallmentType(installmentType);
                 break;
         }  
         LoadInstallmentTypes();
     }
     catch (Exception ex)
     {
         new frmShowError(CustomExceptionHandler.ShowExceptionText(ex)).ShowDialog();
     }
 }
        public void SetUp()
        {
            addDataForTesting.DeleteInstallments();
            addDataForTesting.DeleteCreditContract();
            addDataForTesting.DeletedProject();
            addDataForTesting.DeleteInstallmentTypes();
            addDataForTesting.DeleteTiers();
            addDataForTesting.DeleteAllUser();
            addDataForTesting.AddGenericFundingLine();
            collateral = addDataForTesting.AddCollateral();

            biWeekly = addDataForTesting.AddBiWeeklyInstallmentType();
            package.Id = addDataForTesting.AddGenericPackage();
            package.Name = "Package";
            user.Id = addDataForTesting.AddUserWithIntermediaryAttributs();
            //addDataForTesting.AddGenericFundingLine();
            tiers.Id = addDataForTesting.AddGenericTiersIntoDatabase(OClientTypes.Group);
            tiers.LoanCycle = 1;

            _project = new Project();
            _project.ProjectStatus = OProjectStatus.Refused;
            _project.Name = "NotSet";
            _project.Code = "NotSet";
            _project.Aim = "NotSet";

            _project.BeginDate = TimeProvider.Today;
            _project.Id = projectManager.Add(_project, tiers.Id, null);

            //fundingLine = new FundingLine("AFD130",false);

            credit = new Loan(new User(), ApplicationSettings.GetInstance(""), NonWorkingDateSingleton.GetInstance(""), ProvisioningTable.GetInstance(new User()));
            credit.LoanOfficer = user;

            credit.BranchCode = "DU";
            credit.CreationDate = DateTime.Today.AddDays(-1);
            credit.StartDate = DateTime.Today;
            credit.CloseDate = DateTime.Today.AddDays(1);
            credit.Closed = true;
            credit.Rural = true;
            credit.Product = package;
            credit.Amount = 1000m;
            credit.InterestRate = 3;
            credit.InstallmentType = biWeekly;
            credit.NbOfInstallments = 2;
            credit.NonRepaymentPenalties.InitialAmount = 2.5;
            credit.AnticipatedRepaymentPenalties = 1.2;
            credit.Disbursed = false;
            credit.LoanOfficer = user;
            credit.FundingLine = new FundingLine { Name = "AFD130" };
            credit.EntryFees = 2.05;
            credit.WriteOff = false;
            credit.Rescheduled = false;
            credit.BadLoan = false;

            credit.AddInstallment(installment1);
            credit.AddInstallment(installment2);
        }
Example #10
0
 private void buttonAdd_Click(object sender, EventArgs e)
 {
     if (textBoxName.Text.Length > 0 && (numericUpDownMonths.Value > 0 || numericUpDownDays.Value > 0))
     {
         InstallmentType type = new InstallmentType(_name, _nbOfDays, _nbOfMonths);
         ModifyInstallmentTypes(Action.Add, type);
     }
 }
        public void TestUpdateSavingBookProduct()
        {
            Assert.Ignore(); // Ru55
            SavingsBookProduct savingsProduct = new SavingsBookProduct
            {
                Name = "Good savings account",
                Code = "P123",
                ClientType = OClientTypes.All,
                InitialAmountMin = 100,
                InitialAmountMax = 200,
                DepositMin = 250,
                DepositMax = 400,
                WithdrawingMin = 400,
                WithdrawingMax = 450,
                TransferMin = 100,
                TransferMax = 250,
                InterestRateMin = 0.12,
                InterestRateMax = 0.20,
                BalanceMin = 1000,
                BalanceMax = 2000,
                InterestBase = OSavingInterestBase.Daily,
                InterestFrequency = OSavingInterestFrequency.EndOfYear,
                EntryFeesMin = 10,
                EntryFeesMax = 20,
                WithdrawFeesType = OSavingsFeesType.Flat,
                FlatWithdrawFees = 5,
                TransferFeesType = OSavingsFeesType.Flat,
                FlatTransferFees = 5,
                Currency = new Currency { Id = 1 }
            };

            InstallmentType managementFeeFreq = new InstallmentType { Name = "Weekly", NbOfDays = 7, NbOfMonths = 0, Id = 1 };
            savingsProduct.ManagementFeeFreq = managementFeeFreq;

            InstallmentType agioFeeFreq = new InstallmentType { Name = "Daily", NbOfDays = 1, NbOfMonths = 0, Id = 2 };
            savingsProduct.AgioFeesFreq = agioFeeFreq;

            _savingProductManager = (SavingProductManager)container["SavingProductManager"];
            _savingProductManager.Add(savingsProduct);

            SavingsBookProduct loadedProduct = _savingProductManager.SelectSavingsBookProduct(savingsProduct.Id);

            savingsProduct.Name = "Good updating product";
            savingsProduct.ClientType = OClientTypes.Person;
            savingsProduct.Code = "P125";
            savingsProduct.InitialAmountMin = 200;
            savingsProduct.InitialAmountMax = 400;
            savingsProduct.DepositMin = 500;
            savingsProduct.DepositMax = 800;
            savingsProduct.WithdrawingMin = 800;
            savingsProduct.WithdrawingMax = 900;
            savingsProduct.TransferMin = 300;
            savingsProduct.TransferMax = 800;
            savingsProduct.InterestRateMin = 0.24;
            savingsProduct.InterestRateMax = 0.20;
            savingsProduct.BalanceMin = 2000;
            savingsProduct.BalanceMax = 4000;
            savingsProduct.InterestBase = OSavingInterestBase.Monthly;
            savingsProduct.InterestFrequency = OSavingInterestFrequency.EndOfMonth;
            savingsProduct.EntryFees = 15;
            savingsProduct.EntryFeesMax = null;
            savingsProduct.EntryFeesMin = null;
            savingsProduct.CalculAmountBase = OSavingCalculAmountBase.MinimalAmount;
            savingsProduct.WithdrawFeesType = OSavingsFeesType.Rate;
            savingsProduct.RateWithdrawFeesMin = 0.01;
            savingsProduct.RateWithdrawFeesMax = 0.05;
            savingsProduct.TransferFeesType = OSavingsFeesType.Rate;
            savingsProduct.RateTransferFeesMin = 0.01;
            savingsProduct.RateTransferFeesMax = 0.05;
            savingsProduct.Currency = new Currency { Id = 2 };

            _savingProductManager.Update(savingsProduct);

            loadedProduct = _savingProductManager.SelectSavingsBookProduct(savingsProduct.Id);

            Assert.AreEqual(savingsProduct.Id, loadedProduct.Id);
            Assert.AreEqual(savingsProduct.ClientType, loadedProduct.ClientType);
            Assert.AreEqual(savingsProduct.Name, loadedProduct.Name);
            Assert.AreEqual(savingsProduct.Code, loadedProduct.Code);
            Assert.AreEqual(savingsProduct.BalanceMax.Value, loadedProduct.BalanceMax.Value);
            Assert.AreEqual(savingsProduct.BalanceMin.Value, loadedProduct.BalanceMin.Value);
            Assert.AreEqual(savingsProduct.InitialAmountMax.Value, loadedProduct.InitialAmountMax.Value);
            Assert.AreEqual(savingsProduct.InitialAmountMin.Value, loadedProduct.InitialAmountMin.Value);
            Assert.AreEqual(savingsProduct.DepositMax.Value, loadedProduct.DepositMax.Value);
            Assert.AreEqual(savingsProduct.DepositMin.Value, loadedProduct.DepositMin.Value);
            Assert.AreEqual(savingsProduct.WithdrawingMax.Value, loadedProduct.WithdrawingMax.Value);
            Assert.AreEqual(savingsProduct.WithdrawingMin.Value, loadedProduct.WithdrawingMin.Value);
            Assert.AreEqual(savingsProduct.TransferMin.Value, loadedProduct.TransferMin.Value);
            Assert.AreEqual(savingsProduct.TransferMax.Value, loadedProduct.TransferMax.Value);
            Assert.AreEqual(savingsProduct.InterestRate, loadedProduct.InterestRate);
            Assert.AreEqual(savingsProduct.InterestRateMax, loadedProduct.InterestRateMax);
            Assert.AreEqual(savingsProduct.InterestRateMin, loadedProduct.InterestRateMin);
            Assert.AreEqual(savingsProduct.InterestBase, loadedProduct.InterestBase);
            Assert.AreEqual(savingsProduct.InterestFrequency, loadedProduct.InterestFrequency);
            Assert.AreEqual(savingsProduct.CalculAmountBase, loadedProduct.CalculAmountBase);
            Assert.AreEqual(savingsProduct.EntryFees, loadedProduct.EntryFees);
            Assert.AreEqual(savingsProduct.EntryFeesMax.HasValue, loadedProduct.EntryFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.EntryFeesMin.HasValue, loadedProduct.EntryFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.WithdrawFeesType, loadedProduct.WithdrawFeesType);
            Assert.AreEqual(false, loadedProduct.FlatWithdrawFees.HasValue);
            Assert.AreEqual(false, loadedProduct.FlatWithdrawFeesMax.HasValue);
            Assert.AreEqual(false, loadedProduct.FlatWithdrawFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.RateWithdrawFees, loadedProduct.RateWithdrawFees);
            Assert.AreEqual(savingsProduct.RateWithdrawFeesMax, loadedProduct.RateWithdrawFeesMax);
            Assert.AreEqual(savingsProduct.RateWithdrawFeesMin, loadedProduct.RateWithdrawFeesMin);
            Assert.AreEqual(savingsProduct.TransferFeesType, loadedProduct.TransferFeesType);
            Assert.AreEqual(false, loadedProduct.FlatTransferFees.HasValue);
            Assert.AreEqual(false, loadedProduct.FlatTransferFeesMax.HasValue);
            Assert.AreEqual(false, loadedProduct.FlatTransferFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.RateTransferFees, loadedProduct.RateTransferFees);
            Assert.AreEqual(savingsProduct.RateTransferFeesMax, loadedProduct.RateTransferFeesMax);
            Assert.AreEqual(savingsProduct.RateTransferFeesMin, loadedProduct.RateTransferFeesMin);
            Assert.AreEqual(savingsProduct.Currency.Id, loadedProduct.Currency.Id);
        }
Example #12
0
        private void buttonEdit_Click(object sender, EventArgs e)
        {
            if (listViewInstallmentTypes.SelectedItems.Count > 0)
            {
                if (buttonEdit.Text.Equals(GetString("buttonEdit")))
                {
                    InstallmentType type = (InstallmentType)listViewInstallmentTypes.SelectedItems[0].Tag;
                    textBoxName.Text = type.Name;
                    numericUpDownMonths.Value = type.NbOfMonths;
                    numericUpDownDays.Value = type.NbOfDays;

                    listViewInstallmentTypes.Enabled = false;
                    buttonExit.Enabled = false;
                    buttonDelete.Enabled = false;
                    buttonAdd.Enabled = false;
                    buttonEdit.Text = GetString("buttonSave");
                }
                else
                {
                    listViewInstallmentTypes.Enabled = true;
                    buttonExit.Enabled = true;
                    buttonDelete.Enabled = true;
                    buttonAdd.Enabled = true;

                    InstallmentType type = new InstallmentType(((InstallmentType)listViewInstallmentTypes.SelectedItems[0].Tag).Id, _name, _nbOfDays, _nbOfMonths);
                    ModifyInstallmentTypes(Action.Edit, type);

                    textBoxName.Text = numericUpDownMonths.Text = numericUpDownDays.Text = string.Empty;

                    buttonEdit.Text = GetString("buttonEdit");
                }
            }
        }
Example #13
0
 public DateTime GetNextMaturity (DateTime currentMaturityDate, InstallmentType periodicity)
 {
     return DateCalculationStrategy.GetNextMaturity(currentMaturityDate, periodicity, 1);
 }
        public void TestAddSavingBookProduct()
        {
            SavingsBookProduct savingsProduct = new SavingsBookProduct
                                              {
                                                  Name = "Good savings account",
                                                  Code = "P123",
                                                  InitialAmountMin = 100,
                                                  InitialAmountMax = 200,
                                                  DepositMin = 250,
                                                  DepositMax = 400,
                                                  WithdrawingMin = 400,
                                                  WithdrawingMax = 450,
                                                  TransferMin = 100,
                                                  TransferMax = 500,
                                                  InterestRateMin = 0.12,
                                                  InterestRateMax = 0.20,
                                                  BalanceMin = 1000,
                                                  BalanceMax = 2000,
                                                  InterestBase = OSavingInterestBase.Daily,
                                                  InterestFrequency = OSavingInterestFrequency.EndOfYear,
                                                  EntryFeesMin = 10,
                                                  EntryFeesMax = 20,
                                                  WithdrawFeesType = OSavingsFeesType.Flat,
                                                  FlatWithdrawFeesMin = 1,
                                                  FlatWithdrawFeesMax = 5,
                                                  TransferFeesType = OSavingsFeesType.Flat,
                                                  FlatTransferFeesMin = 1,
                                                  FlatTransferFeesMax = 5,
                                                  DepositFeesMin = 1,
                                                  DepositFeesMax = 5,
                                                  CloseFeesMin = 2,
                                                  CloseFeesMax = 7,
                                                  ManagementFeesMin = 4,
                                                  ManagementFeesMax = 16,
                                                  OverdraftFeesMin = 2,
                                                  OverdraftFeesMax = 6,
                                                  AgioFeesMin = 1,
                                                  AgioFeesMax = 4,
                                                  Currency = new Currency {Id = 1}
                                              };

            InstallmentType managementFeeFreq = new InstallmentType{Name = "Weekly", NbOfDays = 7, NbOfMonths = 0};
            savingsProduct.ManagementFeeFreq = managementFeeFreq;

            InstallmentType agioFeeFreq = new InstallmentType { Name = "Daily", NbOfDays = 1, NbOfMonths = 0 };
            savingsProduct.AgioFeesFreq = agioFeeFreq;

            _savingProductManager = (SavingProductManager)container["SavingProductManager"];
            _savingProductManager.Add(savingsProduct);

            Assert.Greater(savingsProduct.Id, 0);
        }
Example #15
0
 private static void SetInstallmentType(OpenCbsCommand c, InstallmentType pInstallmentType)
 {
     c.AddParam("@name", pInstallmentType.Name);
     c.AddParam("@days", pInstallmentType.NbOfDays);
     c.AddParam("@months", pInstallmentType.NbOfMonths);
 }
Example #16
0
 public void TestNbOfMonthsEqualsToZeroWhenNoSpecifiedValue()
 {
     InstallmentType noMonths = new InstallmentType();
     Assert.AreEqual(0,noMonths.NbOfMonths);
 }
Example #17
0
        private static LoanProduct CreatePackage(string name,
            double? anticipatedTotalRepaymentPenalties,
            double? anticipatedTotalRepaymentPenaltiesMin,
            double? anticipatedTotalRepaymentPenaltiesMax,
            int? gracePeriod,int? gracePeriodMin,int? gracePeriodMax,
			decimal? interestRate,decimal? interestRateMin,decimal? interestRateMax,
			int? nbOfinstallments,int? nbOfinstallmentsMin,int? nbOfinstallmentsMax,
            List<EntryFee> entryFees,
            NonRepaymentPenaltiesNullableValues nonRepaymentPenalties, 
            NonRepaymentPenaltiesNullableValues nonRepaymentPenaltiesMin,
            NonRepaymentPenaltiesNullableValues nonRepaymentPenaltiesMax,
			InstallmentType type,
            OCurrency  amount, OCurrency amountMin, OCurrency  amountMax,
            ExoticInstallmentsTable product, 
            int? cycleId,
            List<LoanAmountCycle> amountCycles, List<RateCycle> rateCycles, List<MaturityCycle> maturityCycles,
            string productCode, List<ProductClientType> productClientTypes,
            OCurrency amountUnderLoc, OCurrency amountUnderLocMin, OCurrency amountUnderLocMax, 
            double? anticipatedPartialRepaymentPenalties,
            double? anticipatedPartialRepaymentPenaltiesMin,
            double? anticipatedPartialRepaymentPenaltiesMax,
            int? compulsoryAmount, int? compulsoryAmountMin, int? compulsoryAmountMax,
            Currency currency
            )
        {
            var package = new LoanProduct();

            package.Name = name;
            package.Amount = amount;
            package.AmountMin = amountMin;
            package.AmountMax = amountMax;
            if (nonRepaymentPenalties!=null)
            package.NonRepaymentPenalties = new NonRepaymentPenaltiesNullableValues
                                                {
                                                    InitialAmount = nonRepaymentPenalties.InitialAmount,
                                                    OLB = nonRepaymentPenalties.OLB,
                                                    OverDueInterest = nonRepaymentPenalties.OverDueInterest,
                                                    OverDuePrincipal = nonRepaymentPenalties.OverDuePrincipal
                                                };
            else if (nonRepaymentPenaltiesMin!=null && nonRepaymentPenaltiesMax!=null)
            {
                package.NonRepaymentPenaltiesMin = new NonRepaymentPenaltiesNullableValues
                {
                    InitialAmount = nonRepaymentPenaltiesMin.InitialAmount,
                    OLB = nonRepaymentPenaltiesMin.OLB,
                    OverDueInterest = nonRepaymentPenaltiesMin.OverDueInterest,
                    OverDuePrincipal = nonRepaymentPenaltiesMin.OverDuePrincipal
                };
                package.NonRepaymentPenaltiesMax = new NonRepaymentPenaltiesNullableValues
                {
                    InitialAmount = nonRepaymentPenaltiesMax.InitialAmount,
                    OLB = nonRepaymentPenaltiesMax.OLB,
                    OverDueInterest = nonRepaymentPenaltiesMax.OverDueInterest,
                    OverDuePrincipal = nonRepaymentPenaltiesMax.OverDuePrincipal
                };
            }

            package.AnticipatedTotalRepaymentPenalties = anticipatedTotalRepaymentPenalties;
            package.AnticipatedTotalRepaymentPenaltiesMin = anticipatedTotalRepaymentPenaltiesMin;
            package.AnticipatedTotalRepaymentPenaltiesMax = anticipatedTotalRepaymentPenaltiesMax;
            package.AnticipatedPartialRepaymentPenalties = anticipatedPartialRepaymentPenalties;
            package.AnticipatedPartialRepaymentPenaltiesMin = anticipatedPartialRepaymentPenaltiesMax;
            package.AnticipatedPartialRepaymentPenaltiesMax = anticipatedPartialRepaymentPenaltiesMin;

            package.GracePeriod = gracePeriod;
            package.GracePeriodMin = gracePeriodMin;
            package.GracePeriodMax = gracePeriodMax;
            package.InterestRate = interestRate;
            package.InterestRateMin = interestRateMin;
            package.InterestRateMax = interestRateMax;
            package.InstallmentType = type;
            package.ExoticProduct = product;
            package.CycleId = cycleId;
            package.LoanAmountCycleParams = amountCycles;
            package.MaturityCycleParams = maturityCycles;
            package.RateCycleParams = rateCycles;
            package.Code = productCode;
            package.AmountUnderLoc = amountUnderLoc;
            package.AmountUnderLocMin = amountUnderLocMin;
            package.AmountUnderLocMax = amountUnderLocMax;

            package.Currency = currency;
            package.CompulsoryAmount = compulsoryAmount;
            package.CompulsoryAmountMin = compulsoryAmountMin;
            package.CompulsoryAmountMax = compulsoryAmountMax;
            package.FundingLine = null;
            package.NbOfInstallments = nbOfinstallments;
            package.NbOfInstallmentsMin = nbOfinstallmentsMin;
            package.NbOfInstallmentsMax = nbOfinstallmentsMax;
            package.ProductClientTypes = productClientTypes;
            package.EntryFees = entryFees;

            return package;
        }
Example #18
0
        public void SetUp()
        {
            _monthly = new InstallmentType();
            _monthly.Id = 1;
            _monthly.Name = "Monthly";
            _monthly.NbOfMonths = 1;

            _biWeekly = new InstallmentType();
            _biWeekly.Id = 2;
            _biWeekly.Name = "bi-weekly";
            _biWeekly.NbOfDays = 14;

            mockPackageManagement = new DynamicMock(typeof(LoanProductManager));
            mockInstallmentTypeManagement = new DynamicMock(typeof(InstallmentTypeManager));
            //mockFundingLineService = new DynamicMock(typeof(FundingLineManager));
            InitScript();
        }
Example #19
0
        public Loan(LoanProduct pAckage, OCurrency pAmount, decimal pInterestRate, int pNbOfInstallments, int pGracePeriod,
                      DateTime pStartDate, DayOfWeek? meetingDay, User pUser, ApplicationSettings pGeneralSettings,
                        NonWorkingDateSingleton pNwds, ProvisionTable pPt, ChartOfAccounts pChartOfAccounts)
        {
            _user = pUser;
            _generalSettings = pGeneralSettings;
            _nwdS = pNwds;
            Product = pAckage;

            NonRepaymentPenalties = new NonRepaymentPenalties();
            _events = new EventStock();
            _guarantors = new List<Guarantor>();
            _collaterals = new List<ContractCollateral>();
            _installmentType = pAckage.InstallmentType;
            _amount = pAmount;
            _interestRate = pInterestRate;
            _nbOfInstallments = pNbOfInstallments;
            GracePeriod = pGracePeriod;
            CreationDate = pStartDate;
            _startDate = pStartDate;

            _firstInstallmentDate = CalculateInstallmentDate(pStartDate, 1);
            if (meetingDay.HasValue)
                _firstInstallmentDate = GetMeetingDate(_firstInstallmentDate, meetingDay);

            _alignAlignDisbursementDate = CalculateAlignDisbursementDate(_firstInstallmentDate);

            //with this constructor, installment are directly calculated when a new CreditContract is instanciated
            _installmentList = CalculateInstallments(true);
            CalculateStartDates();
        }
Example #20
0
 private void InitializeComboBoxInstallmentType()
 {
     comboBoxInstallmentType.Items.Clear();
     List<InstallmentType> installmentTypeList = ServicesProvider.GetInstance().GetProductServices().FindAllInstallmentTypes();
     if (installmentTypeList != null)
     {
         foreach (InstallmentType installmentType in installmentTypeList)
         {
             comboBoxInstallmentType.Items.Add(installmentType);
         }
     }
     _selectInstallmentType = new InstallmentType
     {
         Name = MultiLanguageStrings.GetString(
            Ressource.FrmAddLoanProduct, "messageBoxDefaultInstallmentType.Text")
     };
     comboBoxInstallmentType.Items.Add(_selectInstallmentType);
     comboBoxInstallmentType.SelectedItem = _selectInstallmentType;
 }
Example #21
0
 private void InitializeComboBoxInstallmentType()
 {
     comboBoxInstallmentType.Items.Clear();
     var allTypes = new InstallmentType { Id = 0, Name = GetString("allInstallmentTypes") };
     comboBoxInstallmentType.Items.Add(allTypes);
     var installmentTypeList = ServicesProvider.GetInstance().GetProductServices().FindAllInstallmentTypes();
     if (installmentTypeList != null)
     {
         foreach (InstallmentType installmentType in installmentTypeList)
         {
             comboBoxInstallmentType.Items.Add(installmentType);
         }
     }
     comboBoxInstallmentType.SelectedIndex = 0;
 }
        public void TestSearchContractInDatabaseWithClientNameSetWhenClientIsPerson()
        {
            ApplicationSettings dataParam = ApplicationSettings.GetInstance("");
            dataParam.DeleteAllParameters();
            dataParam.AddParameter(OGeneralSettings.LOANOFFICERPORTFOLIOFILTER, false);
            dataParam.AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            dataParam.AddParameter(OGeneralSettings.USECENTS, true);

            addDataForTesting.DeleteInstallments();
            addDataForTesting.DeleteCreditContract();
            addDataForTesting.DeletedProject();
            addDataForTesting.DeleteInstallmentTypes();
            addDataForTesting.DeleteTiers();
            addDataForTesting.DeleteAllUser();

            biWeekly = addDataForTesting.AddBiWeeklyInstallmentType();
            package.Id = addDataForTesting.AddGenericPackage();
            user.Id = addDataForTesting.AddUserWithIntermediaryAttributs();
            addDataForTesting.AddGenericFundingLine();

            credit.InstallmentType = biWeekly;
            credit.Product = package;
            credit.LoanOfficer = user;

            Person person = new Person();
            person.Id = addDataForTesting.AddGenericTiersIntoDatabase(OClientTypes.Person);
            _project.Id = projectManager.Add(_project, person.Id, null);
            FundingLine fund = new FundingLine();
            fund.Purpose = "Microsoft financement";
            fund.Name = "AFD130";
            fund.Deleted = false;
            fund.StartDate = DateTime.Now;
            fund.EndDate = DateTime.Now;
            fund.Currency = new Currency { Id = 1 };
            fundingLineManager.AddFundingLine(fund, null);
            credit.FundingLine = fund;
            creditManagement.AddCredit(credit, _project.Id, null);
            List<CreditSearchResult> ds = creditManagement.SearchCreditInDatabase(1, "Nico");
            Assert.AreEqual(1, ds.Count);
            Assert.AreEqual("Nicolas BARON", ds[0].ClientName);
        }
Example #23
0
        public void DeleteInstallmentType(InstallmentType pInstallmentType)
        {
            if (_installmentTypeManager.NumberOfLinksToInstallmentType(pInstallmentType) > 0)
                throw new OpenCbsPackageSaveException(OpenCbsPackageSaveExceptionEnum.InstallmentTypeValuesAreUsed);

            _installmentTypeManager.DeleteInstallmentType(pInstallmentType);
        }
Example #24
0
 public void PackageinstallmentTypeCorrectlySetAndRetrieved()
 {
     InstallmentType installmentType = new InstallmentType();
     installmentType.Name = "Monthly";
     package.InstallmentType = installmentType;
     Assert.IsTrue(package.InstallmentType.Equals(installmentType));
 }
Example #25
0
        private static void CheckValueForPackageInstallmentType(InstallmentType pInstallmentType)
        {
            if (pInstallmentType == null)
                throw new OpenCbsPackageSaveException(OpenCbsPackageSaveExceptionEnum.InstallmentTypeIsNull);

            if (pInstallmentType.Id == 0)
                throw new OpenCbsPackageSaveException(OpenCbsPackageSaveExceptionEnum.InstallmentTypeIsBad);
        }
Example #26
0
 public int AddInstallmentType(InstallmentType pInstallmentType)
 {
     List<InstallmentType> list = _installmentTypeManager.SelectAllInstallmentTypes();
     foreach (InstallmentType type in list)
     {
         if(type.Name.ToLower() == pInstallmentType.Name.ToLower())
             throw new OpenCbsPackageSaveException(OpenCbsPackageSaveExceptionEnum.InstallmentTypeNameAlreadyExist);
         if(type.NbOfDays == pInstallmentType.NbOfDays && type.NbOfMonths == pInstallmentType.NbOfMonths)
             throw new OpenCbsPackageSaveException(OpenCbsPackageSaveExceptionEnum.InstallmentTypeValuesAlreadyExist);
     }
     return _installmentTypeManager.AddInstallmentType(pInstallmentType);
 }
        public void TestUpdateUsedSavingBookProduct()
        {
            Assert.Ignore(); // Ru55
            SavingsBookProduct savingsProduct = new SavingsBookProduct
            {
                Name = "Good savings account",
                Code = "P123",
                ClientType = OClientTypes.All,
                InitialAmountMin = 100,
                InitialAmountMax = 200,
                DepositMin = 250,
                DepositMax = 400,
                WithdrawingMin = 400,
                WithdrawingMax = 450,
                TransferMin = 100,
                TransferMax = 300,
                InterestRateMin = 0.12,
                InterestRateMax = 0.20,
                BalanceMin = 1000,
                BalanceMax = 2000,
                InterestBase = OSavingInterestBase.Daily,
                InterestFrequency = OSavingInterestFrequency.EndOfYear,
                EntryFeesMin = 10,
                EntryFeesMax = 20,
                WithdrawFeesType = OSavingsFeesType.Rate,
                RateWithdrawFeesMin = 0.01,
                RateWithdrawFeesMax = 0.05,
                TransferFeesType = OSavingsFeesType.Rate,
                RateTransferFeesMin = 0.01,
                RateTransferFeesMax = 0.05,
                Currency = new Currency { Id = 1 }
            };

            InstallmentType managementFeeFreq = new InstallmentType { Name = "Weekly", NbOfDays = 7, NbOfMonths = 0, Id = 1};
            savingsProduct.ManagementFeeFreq = managementFeeFreq;

            InstallmentType agioFeeFreq = new InstallmentType { Name = "Daily", NbOfDays = 1, NbOfMonths = 0, Id = 2 };
            savingsProduct.AgioFeesFreq = agioFeeFreq;

            _savingProductManager = (SavingProductManager)container["SavingProductManager"];
            _savingProductManager.Add(savingsProduct);

            SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""),
                                                               new User() {Id = 1}, new DateTime(2009, 01, 01),
                                                               savingsProduct, null)
                                            {
                                                Code = "S/CR/2009/P123/BAR-1",
                                                Status = OSavingsStatus.Active,
                                                InterestRate = 0.01
                                            };

            _savingManager = (SavingManager)container["SavingManager"];
            _savingManager.Add(saving, new Person { Id = 6 });

            SavingsBookProduct loadedProduct = _savingProductManager.SelectSavingsBookProduct(savingsProduct.Id);

            savingsProduct.Name = "Good updating product";
            savingsProduct.ClientType = OClientTypes.Person;
            savingsProduct.Code = "P125";
            savingsProduct.InitialAmountMin = 200;
            savingsProduct.InitialAmountMax = 400;
            savingsProduct.DepositMin = 500;
            savingsProduct.DepositMax = 800;
            savingsProduct.WithdrawingMin = 800;
            savingsProduct.WithdrawingMax = 900;
            savingsProduct.TransferMin = 500;
            savingsProduct.TransferMax = 1000;
            savingsProduct.InterestRateMin = 0.24;
            savingsProduct.InterestRateMax = 0.20;
            savingsProduct.BalanceMin = 2000;
            savingsProduct.BalanceMax = 4000;
            savingsProduct.InterestBase = OSavingInterestBase.Monthly;
            savingsProduct.InterestFrequency = OSavingInterestFrequency.EndOfMonth;
            savingsProduct.EntryFees = 15;
            savingsProduct.EntryFeesMax = null;
            savingsProduct.EntryFeesMin = null;
            savingsProduct.WithdrawFeesType = OSavingsFeesType.Rate;
            savingsProduct.RateWithdrawFees = 0.03;
            savingsProduct.RateWithdrawFeesMin = null;
            savingsProduct.RateWithdrawFeesMax = null;
            savingsProduct.FlatWithdrawFeesMin = null;
            savingsProduct.FlatWithdrawFeesMax = null;
            savingsProduct.TransferFeesType = OSavingsFeesType.Rate;
            savingsProduct.RateTransferFees = 0.03;
            savingsProduct.RateTransferFeesMin = null;
            savingsProduct.RateTransferFeesMax = null;
            savingsProduct.FlatTransferFeesMin = null;
            savingsProduct.FlatTransferFeesMax = null;
            savingsProduct.Currency = new Currency { Id = 2 };

            _savingProductManager.Update(savingsProduct);

            loadedProduct = _savingProductManager.SelectSavingsBookProduct(savingsProduct.Id);

            Assert.AreEqual(savingsProduct.Id, loadedProduct.Id);
            Assert.AreEqual(OClientTypes.All, loadedProduct.ClientType);
            Assert.AreEqual("Good savings account", loadedProduct.Name);
            Assert.AreEqual("P123", loadedProduct.Code);
            Assert.AreEqual(savingsProduct.BalanceMax.Value, loadedProduct.BalanceMax.Value);
            Assert.AreEqual(savingsProduct.BalanceMin.Value, loadedProduct.BalanceMin.Value);
            Assert.AreEqual(savingsProduct.InitialAmountMax.Value, loadedProduct.InitialAmountMax.Value);
            Assert.AreEqual(savingsProduct.InitialAmountMin.Value, loadedProduct.InitialAmountMin.Value);
            Assert.AreEqual(savingsProduct.DepositMax.Value, loadedProduct.DepositMax.Value);
            Assert.AreEqual(savingsProduct.DepositMin.Value, loadedProduct.DepositMin.Value);
            Assert.AreEqual(savingsProduct.WithdrawingMax.Value, loadedProduct.WithdrawingMax.Value);
            Assert.AreEqual(savingsProduct.WithdrawingMin.Value, loadedProduct.WithdrawingMin.Value);
            Assert.AreEqual(savingsProduct.TransferMin.Value, loadedProduct.TransferMin.Value);
            Assert.AreEqual(savingsProduct.TransferMax.Value, loadedProduct.TransferMax.Value);
            Assert.AreEqual(savingsProduct.InterestRate, loadedProduct.InterestRate);
            Assert.AreEqual(savingsProduct.InterestRateMax, loadedProduct.InterestRateMax);
            Assert.AreEqual(savingsProduct.InterestRateMin, loadedProduct.InterestRateMin);
            Assert.AreEqual(OSavingInterestBase.Daily, loadedProduct.InterestBase);
            Assert.AreEqual(OSavingInterestFrequency.EndOfYear, loadedProduct.InterestFrequency);
            Assert.AreEqual(savingsProduct.EntryFees, loadedProduct.EntryFees);
            Assert.AreEqual(savingsProduct.EntryFeesMax.HasValue, loadedProduct.EntryFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.EntryFeesMin.HasValue, loadedProduct.EntryFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.WithdrawFeesType, loadedProduct.WithdrawFeesType);
            Assert.AreEqual(savingsProduct.FlatWithdrawFees.HasValue, loadedProduct.FlatWithdrawFees.HasValue);
            Assert.AreEqual(savingsProduct.FlatWithdrawFeesMax.HasValue, loadedProduct.FlatWithdrawFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.FlatWithdrawFeesMin.HasValue, loadedProduct.FlatWithdrawFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.RateWithdrawFees, loadedProduct.RateWithdrawFees);
            Assert.AreEqual(savingsProduct.RateWithdrawFeesMax.HasValue, loadedProduct.RateWithdrawFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.RateWithdrawFeesMin.HasValue, loadedProduct.RateWithdrawFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.TransferFeesType, loadedProduct.TransferFeesType);
            Assert.AreEqual(savingsProduct.FlatTransferFees.HasValue, loadedProduct.FlatTransferFees.HasValue);
            Assert.AreEqual(savingsProduct.FlatTransferFeesMax.HasValue, loadedProduct.FlatTransferFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.FlatTransferFeesMin.HasValue, loadedProduct.FlatTransferFeesMin.HasValue);
            Assert.AreEqual(savingsProduct.RateTransferFees, loadedProduct.RateTransferFees);
            Assert.AreEqual(savingsProduct.RateTransferFeesMax.HasValue, loadedProduct.RateTransferFeesMax.HasValue);
            Assert.AreEqual(savingsProduct.RateTransferFeesMin.HasValue, loadedProduct.RateTransferFeesMin.HasValue);
            Assert.AreEqual(1, loadedProduct.Currency.Id);
        }
Example #28
0
 public void EditInstallmentType(InstallmentType pInstallmentType)
 {
     _installmentTypeManager.EditInstallmentType(pInstallmentType);
 }
Example #29
0
        public int NumberOfLinksToInstallmentType(InstallmentType installmentType)
        {
            const string q = @"SELECT COUNT(installment_type) FROM
                                    (
                                    SELECT installment_type FROM Credit
                                    UNION ALL
                                    SELECT installment_type FROM dbo.Packages
                                    UNION ALL
                                    SELECT installment_types_id AS [installment_type] FROM dbo.TermDepositProducts
                                    UNION ALL
                                    SELECT agio_fees_freq AS [installment_type] FROM dbo.SavingBookProducts
                                    UNION ALL
                                    SELECT management_fees_freq AS [installment_type] FROM dbo.SavingBookProducts
                                    ) AS T
                                    WHERE T.installment_type = @id";

            using (SqlConnection conn = GetConnection())
            using (OpenCbsCommand c = new OpenCbsCommand(q, conn))
            {
                c.AddParam("@id", installmentType.Id);
                return int.Parse(c.ExecuteScalar().ToString());
            }
        }
Example #30
0
        private void InitInstallmentType(InstallmentType installmentType)
        {
            _installmentTypeComboBox.Items.Clear();
            var items = ServicesProvider.GetInstance().GetProductServices().FindAllInstallmentTypes();
            var selectedIndex = 0;
            var i = 0;
            foreach (var item in items)
            {
                _installmentTypeComboBox.Items.Add(item);
                if (item.Id == installmentType.Id)
                {
                    selectedIndex = i;
                }
                i++;
            }
            _installmentTypeComboBox.SelectedIndex = selectedIndex;
            _installmentTypeComboBox.Enabled = installmentType.Id == 0;

            if (_credit.InstallmentType == null)
            {
                _credit.InstallmentType = (InstallmentType) _installmentTypeComboBox.SelectedItem;
            }
        }
        public void TestIsThisProductNameAlreadyExist()
        {
            SavingsBookProduct savingsProduct = new SavingsBookProduct
                                              {
                                                  Name = "Good savings account",
                                                  Code = "P123",
                                                  ClientType = OClientTypes.All,
                                                  InitialAmountMin = 100,
                                                  InitialAmountMax = 200,
                                                  DepositMin = 250,
                                                  DepositMax = 400,
                                                  WithdrawingMin = 400,
                                                  WithdrawingMax = 450,
                                                  TransferMin = 100,
                                                  TransferMax = 500,
                                                  InterestRateMin = 0.12,
                                                  InterestRateMax = 0.20,
                                                  BalanceMin = 1000,
                                                  BalanceMax = 2000,
                                                  Currency = new Currency { Id = 1 },
                                                  InterestBase = OSavingInterestBase.Daily,
                                                  InterestFrequency = OSavingInterestFrequency.EndOfWeek
                                              };
            InstallmentType managementFeeFreq = new InstallmentType { Name = "Weekly", NbOfDays = 7, NbOfMonths = 0, Id = 1 };
            savingsProduct.ManagementFeeFreq = managementFeeFreq;

            InstallmentType agioFeeFreq = new InstallmentType { Name = "Daily", NbOfDays = 1, NbOfMonths = 0 };
            savingsProduct.AgioFeesFreq = agioFeeFreq;

            _savingProductManager = (SavingProductManager)container["SavingProductManager"];

            Assert.IsTrue(_savingProductManager.IsThisProductNameAlreadyExist("SavingProduct1"));
            Assert.IsFalse(_savingProductManager.IsThisProductNameAlreadyExist(savingsProduct.Name));

            _savingProductManager.Add(savingsProduct);

            Assert.IsTrue(_savingProductManager.IsThisProductNameAlreadyExist(savingsProduct.Name));
        }