validacion del Iban
This commit is contained in:
parent
9b76d3d004
commit
bf0bd37773
|
@ -45,11 +45,12 @@ module.exports = function(Client) {
|
|||
allowBlank: true,
|
||||
min: 3, max: 10
|
||||
});
|
||||
Client.validatesLengthOf('iban', {
|
||||
allowNull: true,
|
||||
allowBlank: true,
|
||||
max: 23
|
||||
|
||||
var validateIban = require('../validations/validateIban');
|
||||
Client.validateBinded('iban',validateIban,{
|
||||
message:'El iban no tiene el formato correcto'
|
||||
});
|
||||
|
||||
Client.validate('payMethod', hasSalesMan, {
|
||||
message: 'No se puede cambiar la forma de pago si no hay comercial asignado'
|
||||
});
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
module.exports = function (iban){
|
||||
|
||||
if (iban == null) return true;
|
||||
if (typeof iban != 'string') return false;
|
||||
|
||||
//Se pasa a Mayusculas
|
||||
iban = iban.toUpperCase();
|
||||
//Se quita los blancos de principio y final.
|
||||
iban = trim(iban);
|
||||
iban = iban.replace(/\s/g, ""); //Y se quita los espacios en blanco dentro de la cadena
|
||||
|
||||
//La longitud debe ser siempre de 24 caracteres
|
||||
if (iban.length != 24) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Se coge las primeras dos letras y se pasan a números
|
||||
var letter1 = iban.substring(0, 1);
|
||||
var letter2 = iban.substring(1, 2);
|
||||
var num1 = getIbanNumber(letter1);
|
||||
var num2 = getIbanNumber(letter2);
|
||||
//Se sustituye las letras por números.
|
||||
var isbanaux = String(num1) + String(num2) + iban.substring(2);
|
||||
// Se mueve los 6 primeros caracteres al final de la cadena.
|
||||
isbanaux = isbanaux.substring(6) + isbanaux.substring(0,6);
|
||||
|
||||
//Se calcula el resto, llamando a la función module97, definida más abajo
|
||||
var resto = module97(isbanaux);
|
||||
if (resto == 1){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
||||
function module97(iban) {
|
||||
var parts = Math.ceil(iban.length/7);
|
||||
var remainer = "";
|
||||
|
||||
for (var i = 1; i <= parts; i++) {
|
||||
remainer = String(parseFloat(remainer+iban.substr((i-1)*7, 7))%97);
|
||||
}
|
||||
|
||||
return remainer;
|
||||
}
|
||||
|
||||
function getIbanNumber(letra) {
|
||||
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
return letters.search(letra) + 10;
|
||||
}
|
||||
|
||||
function trim (text) {
|
||||
return (text || "").replace( /^(\s|\u00A0)+|(\s|\u00A0)+$/g, "" );
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue