public void TestModulus11(string value, string expected) { var sut = Modulus11.GetChecksum(value); Assert.AreEqual(expected, sut); }
private void Validate() { _accountConfiguration = Configuration .Configuration.GetConfigForClearingNumber(_clearingNumber); if (_accountConfiguration == null) { _validationResult = ValidationResult.UnknownClearingNumber; _isValid = false; return; } _bank = _accountConfiguration.BankName; if (_accountConfiguration.BankAccountType == BankAccountType.Type1) { if (_clearingNumber.Length != 4) { _validationResult = ValidationResult.InvalidClearingNumberLength; _isValid = false; return; } if (_accountNumber.Length != 7) { _validationResult = ValidationResult.InvalidAccountNumberLength; _isValid = false; return; } if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type1) { var number = _clearingNumber.Substring(1) + _accountNumber; _isValid = Modulus11.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; return; } if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type2) { var number = _clearingNumber + _accountNumber; _isValid = Modulus11.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; return; } } if (_accountConfiguration.BankAccountType == BankAccountType.Type2) { if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type1) { if (_accountNumber.Length != 10) { _isValid = false; _validationResult = ValidationResult.InvalidAccountNumberLength; return; } var number = _accountNumber; _isValid = Modulus10.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; // Nordea personkonto if (_clearingNumber == "3300") { var validPn = _accountNumber.IsValidPersonnummerSamordningsnummer(); _isValid = _isValid && validPn; _validationResult = validPn ? _validationResult : ValidationResult.InvalidFormat; } return; } if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type2) { var number = _accountNumber; while (number.Length > 9) { number = number.Substring(1); } _isValid = Modulus11.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; return; } // Swedbank & Sparbankerna if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type3 && _clearingNumber.StartsWith("8", StringComparison.Ordinal)) { if (!string.IsNullOrEmpty(_clearingCheckDigit)) { _isValid = Modulus10.ValidateChecksum(_clearingNumber + _clearingCheckDigit); if (!_isValid) { _validationResult = ValidationResult.InvalidClearingNumber; return; } } if (_accountNumber.Length < 1 || _accountNumber.Length > 10) { _isValid = false; _validationResult = ValidationResult.InvalidAccountNumberLength; return; } var number = _accountNumber; _isValid = Modulus10.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; return; } if (_accountConfiguration.BankAccountTypeComment == BankAccountTypeComment.Type3 && !_clearingNumber.StartsWith("8", StringComparison.Ordinal)) { if (_accountNumber.Length < 1 || _accountNumber.Length > 10) { _isValid = false; _validationResult = ValidationResult.InvalidAccountNumberLength; return; } var number = _accountNumber; _isValid = Modulus10.ValidateChecksum(number); _validationResult = _isValid ? ValidationResult.ChecksumValidated : ValidationResult.InvalidChecksum; return; } } }