DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`accountNumberToIban`(
	vAccount VARCHAR(20)
)
	RETURNS varchar(4) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
	DETERMINISTIC
BEGIN
/**
* Calcula y genera el código IBAN correspondiente
* a un número de cuenta bancaria español.
*
* @param vAccount Número de cuenta bancaria
* @return vIban Código IBAN de 4 caracteres.
*/
	DECLARE vIban VARCHAR(4);

	SELECT
		CONCAT('ES',
			RIGHT(
				CONCAT(0,
					98-MOD(
						CONCAT(
							MOD(
								CONCAT(
									MOD(
										CONCAT(
											MOD(
												SUBSTRING(vAccount, 1, 8),
												97
											),
											SUBSTRING(vAccount,9,8)
										),
										97
									),
									SUBSTRING(
										CONCAT(vAccount, 142800),
										17,
										8
									)
								),
								97
							),
							SUBSTRING(
								CONCAT(vAccount, 142800),
								25,
								2
							)
						),
						97
					)
				),
				2
			)
		) INTO vIban;

	RETURN vIban;
END$$
DELIMITER ;