/**
  * Validate clearing number check digit
  *
  * If no clearing check digit exists number is considered valid.
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidCheckDigitException If check digit is not valid
  */
 public function validate(AccountNumber $number)
 {
     if ($checkDigit = $number->getClearingCheckDigit()) {
         if (!$this->checksum->isValid($number->getClearingNumber() . $checkDigit)) {
             throw new InvalidCheckDigitException("Invalid clearing number check digit in {$number}");
         }
     }
 }
 /**
  * Validate clearing number
  *
  * Clearing must be in one of the specified ranges to be considered valid.
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidClearingNumberException If clearing number is not valid
  */
 public function validate(AccountNumber $number)
 {
     $clearing = intval($number->getClearingNumber());
     foreach ($this->clearingRanges as $clearingRange) {
         if ($clearing >= $clearingRange[0] && $clearing <= $clearingRange[1]) {
             return;
         }
     }
     throw new InvalidClearingNumberException("Invalid clearing number {$clearing} in {$number}");
 }
 protected function processNumber(AccountNumber $number)
 {
     return substr($number->getClearingNumber(), 1) . $number->getSerialNumber() . $number->getCheckDigit();
 }