You are here

public static function PHPExcel_Calculation_Financial::COUPNUM in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Financial.php \PHPExcel_Calculation_Financial::COUPNUM()

* COUPNUM * * Returns the number of coupons payable between the settlement date and maturity date, * rounded up to the nearest whole coupon. * * Excel Function: * COUPNUM(settlement,maturity,frequency[,basis]) * * @access public * @category Financial Functions *

Parameters

mixed settlement The security's settlement date.: * The security settlement date is the date after the issue * date when the security is traded to the buyer. * @param mixed maturity The security's maturity date. * The maturity date is the date when the security expires. * @param mixed frequency the number of coupon payments per year. * Valid frequency values are: * 1 Annual * 2 Semi-Annual * 4 Quarterly * If working in Gnumeric Mode, the following frequency options are * also available * 6 Bimonthly * 12 Monthly * @param integer basis The type of day count to use. * 0 or omitted US (NASD) 30/360 * 1 Actual/actual * 2 Actual/360 * 3 Actual/365 * 4 European 30/360 * @return integer

1 call to PHPExcel_Calculation_Financial::COUPNUM()
PHPExcel_Calculation_Financial::PRICE in vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Financial.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Financial.php, line 694

Class

PHPExcel_Calculation_Financial
PHPExcel_Calculation_Financial

Code

public static function COUPNUM($settlement, $maturity, $frequency, $basis = 0) {
  $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
  $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
  $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
  $basis = is_null($basis) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
  if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
    return PHPExcel_Calculation_Functions::VALUE();
  }
  if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
    return PHPExcel_Calculation_Functions::VALUE();
  }
  if ($settlement > $maturity || !self::_validFrequency($frequency) || ($basis < 0 || $basis > 4)) {
    return PHPExcel_Calculation_Functions::NaN();
  }
  $settlement = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, True);
  $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis) * 365;
  switch ($frequency) {
    case 1:

      // annual payments
      return ceil($daysBetweenSettlementAndMaturity / 360);
    case 2:

      // half-yearly
      return ceil($daysBetweenSettlementAndMaturity / 180);
    case 4:

      // quarterly
      return ceil($daysBetweenSettlementAndMaturity / 90);
    case 6:

      // bimonthly
      return ceil($daysBetweenSettlementAndMaturity / 60);
    case 12:

      // monthly
      return ceil($daysBetweenSettlementAndMaturity / 30);
  }
  return PHPExcel_Calculation_Functions::VALUE();
}