let database = require('../database.js'); let strftime = require('strftime'); module.exports = { /** * Devuelve el iban * @param {String} addressNumber - Dirección de cuenta bancaria * @param {Object} cb - Callback */ accountAddressIban: function(addressNumber, cb) { database.pool.query('SELECT vn2008.cc_to_iban(?) AS iban', [addressNumber], function(error, result) { cb(result[0].iban); }); }, /** * Obtiene el numero de cuenta completo incluyendo iban * @param {String} addressNumber - Dirección de cuenta bancaria * @return {String} Cuenta bancaria formateada */ accountAddress: function(addressNumber) { var formattedAccountAddress = addressNumber.replace(/(.{4})/g, '$1-'); return formattedAccountAddress.substring(0, formattedAccountAddress.length - 1); }, /** * Devuelve el numero de cuenta mostrando únicamente los últimos 4 dígitos. * @param {String} addressNumber - Dirección de cuenta bancaria * @return {String} Cuenta bancaria formateada */ partialAccountAddress: function(addressNumber) { let address = this.accountAddress(addressNumber); return address.substring(0, 19).replace(/[0-9]/g, 'X') + address.substring(19, 24); }, phone: function(number) { return number; }, /** * Format number * @param {Integer} number Input number * @return {Integer} Formatted number */ number: function(number, minDigits = 0, maxDigits = 2) { let options = { style: 'decimal', minimumFractionDigits: minDigits, maximumFractionDigits: maxDigits }; return new Intl.NumberFormat('es-ES', options).format(number); }, /** * Format currency * @param {Integer} ammount Input ammount * @param {String} type Currency type [EUR, USD, ...] * @return {Integer} Formatted currency */ currency: function(ammount, type = 'EUR', minDigits = 2, maxDigits = 2) { let options = { style: 'currency', currency: type, minimumFractionDigits: minDigits, maximumFractionDigits: maxDigits }; return new Intl.NumberFormat('es-ES', options).format(ammount); }, percent: function(number, minDigits = 2, maxDigits = 2) { let options = { style: 'percent', minimumFractionDigits: minDigits, maximumFractionDigits: maxDigits }; return new Intl.NumberFormat('es-ES', options).format(number); }, /** * Format date dd-mm-yyyy * @param {Object} date - Date object * @param {String} delimiter - Date delimiter * @return {String} Formatted date */ date: function(date, format = '%d-%m-%Y') { return strftime(format, date); }, code: function(code, pad) { code = String(code); pad = String(pad); return pad.substring(0, (pad.length - code.length)) + code; } };