示例#1
0
 public function testDayCountConventionInvalid()
 {
     $this->setExpectedException('Exception', ErrorMessages::getDayCountConventionNotDefinedMessage());
     $availableDayCountConventions = Config::getConfigField('available_day_count_conventions');
     $dayCountConvention = Config::getConfigField('day_count_convention');
     Config::setConfigField('available_day_count_conventions', ['faulty']);
     Config::setConfigField('day_count_convention', 'faulty');
     TimeUtils::getCurrentDayCountConvention();
     Config::setConfigField('available_day_count_conventions', $availableDayCountConventions);
     Config::setConfigField('day_count_convention', $dayCountConvention);
 }
 /**
  * @return string
  * @throws Exception
  */
 public function getInterestDivisor()
 {
     return MathFuncs::div(TimeUtils::getCurrentDayCountConvention()['days_in_a_year'], MathFuncs::mul($this->annualInterestRate, 100));
 }
示例#3
0
 /**
  * @return string [Length of the debt in months as a string]
  */
 public function getDebtLengthInMonths()
 {
     return MathFuncs::div($this->getDebtLengthInDays(), TimeUtils::getCurrentDayCountConvention()['days_in_a_month']);
 }
示例#4
0
 /**
  * @param array $resultArray
  */
 private function processArray(array $resultArray)
 {
     $this->assertEquals("40000", $resultArray["debtPrincipal"]);
     $this->assertEquals("6", $resultArray["debtNoOfCompoundingPeriods"]);
     $this->assertEquals(MathFuncs::div($resultArray["debtPeriodLength"]["days"], TimeUtils::getDaysFromYears(1)), $resultArray["debtPeriodLength"]["years"]);
     $this->assertEquals(MathFuncs::div($resultArray["debtPeriodLength"]["days"], TimeUtils::getDaysFromMonths(1)), $resultArray["debtPeriodLength"]["months"]);
     $this->assertEquals(MathFuncs::div($resultArray["debtLength"]["days"], TimeUtils::getDaysFromYears(1)), $resultArray["debtLength"]["years"]);
     $this->assertEquals(MathFuncs::div($resultArray["debtLength"]["days"], TimeUtils::getDaysFromMonths(1)), $resultArray["debtLength"]["months"]);
     $this->assertEquals("0.12", $resultArray["debtInterest"]);
     $repayments = $resultArray["debtRepayments"];
     $INDIVIDUAL_REPAYMENT = "9729.03";
     $this->assertEquals("4929.03", round($repayments[1]["principalAmount"], 2));
     $this->assertEquals("4800.00", round($repayments[1]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[1]["totalAmount"], 2));
     $this->assertEquals("5520.51", round($repayments[2]["principalAmount"], 2));
     $this->assertEquals("4208.52", round($repayments[2]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[2]["totalAmount"], 2));
     $this->assertEquals("6182.97", round($repayments[3]["principalAmount"], 2));
     $this->assertEquals("3546.06", round($repayments[3]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[3]["totalAmount"], 2));
     $this->assertEquals("6924.93", round($repayments[4]["principalAmount"], 2));
     $this->assertEquals("2804.10", round($repayments[4]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[4]["totalAmount"], 2));
     $this->assertEquals("7755.92", round($repayments[5]["principalAmount"], 2));
     $this->assertEquals("1973.11", round($repayments[5]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[5]["totalAmount"], 2));
     $this->assertEquals("8686.63", round($repayments[6]["principalAmount"], 2));
     $this->assertEquals("1042.4", round($repayments[6]["interestAmount"], 2));
     $this->assertEquals($INDIVIDUAL_REPAYMENT, round($repayments[6]["totalAmount"], 2));
 }
示例#5
0
 /**
  * @return string
  * @throws Exception
  */
 public function toDays()
 {
     $yearsComponent = TimeUtils::getDaysFromYears($this->getYearsComponent());
     $monthsComponent = TimeUtils::getDaysFromMonths($this->getMonthsComponent());
     return MathFuncs::add(MathFuncs::add($yearsComponent, $monthsComponent), $this->getDaysComponent());
 }