UNPKG

numeros_to_words

Version:

numeros_to_words es una libreria Javascript para convertir numeros a letras .

218 lines (183 loc) 6.79 kB
/*************************************************************/ // NumeroALetras // The MIT License (MIT) // // Copyright (c) 2015 Luis Alfredo Chee // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // @author Rodolfo Carmona // @contributor Jean (jpbadoino@gmail.com) // @Modified by Richard Jesus Aguirre Perez (richardjap@gmail.com) /*************************************************************/ var config = { letrasMonedaPlural: '',//"PESOS", 'Dólares', 'Bolívares', 'etcs' letrasMonedaSingular: '', //"PESO", 'Dólar', 'Bolivar', 'etc' letrasMonedaCentavoPlural: "", letrasMonedaCentavoSingular: "" } var haveMillions function Unidades(num){ switch(num) { case 1: return "UN"; case 2: return "DOS"; case 3: return "TRES"; case 4: return "CUATRO"; case 5: return "CINCO"; case 6: return "SEIS"; case 7: return "SIETE"; case 8: return "OCHO"; case 9: return "NUEVE"; } return ""; }//Unidades() function Decenas(num){ let decena = Math.floor(num/10); let unidad = num - (decena * 10); switch(decena) { case 1: switch(unidad) { case 0: return "DIEZ"; case 1: return "ONCE"; case 2: return "DOCE"; case 3: return "TRECE"; case 4: return "CATORCE"; case 5: return "QUINCE"; default: return "DIECI" + Unidades(unidad); } case 2: switch(unidad) { case 0: return "VEINTE"; default: return "VEINTI" + Unidades(unidad); } case 3: return DecenasY("TREINTA", unidad); case 4: return DecenasY("CUARENTA", unidad); case 5: return DecenasY("CINCUENTA", unidad); case 6: return DecenasY("SESENTA", unidad); case 7: return DecenasY("SETENTA", unidad); case 8: return DecenasY("OCHENTA", unidad); case 9: return DecenasY("NOVENTA", unidad); case 0: return Unidades(unidad); } }//Unidades() export function setSingular(singular){ config.letrasMonedaSingular=singular; } export function setPlural(plural){ config.letrasMonedaPlural=plural; } export function setCentsSingular(singular){ config.letrasMonedaCentavoPlural=singular; } export function setCentsPlural(plural){ config.letrasMonedaCentavoPlural=plural; } export function getSingular(){ return config.letrasMonedaSingular; } export function getPlural(){ return config.letrasMonedaPlural; } function DecenasY(strSin, numUnidades) { if (numUnidades > 0) return strSin + " Y " + Unidades(numUnidades) return strSin; }//DecenasY() function Centenas(num) { let centenas = Math.floor(num / 100); let decenas = num - (centenas * 100); switch(centenas) { case 1: if (decenas > 0) return "CIENTO " + Decenas(decenas); return "CIEN"; case 2: return "DOSCIENTOS " + Decenas(decenas); case 3: return "TRESCIENTOS " + Decenas(decenas); case 4: return "CUATROCIENTOS " + Decenas(decenas); case 5: return "QUINIENTOS " + Decenas(decenas); case 6: return "SEISCIENTOS " + Decenas(decenas); case 7: return "SETECIENTOS " + Decenas(decenas); case 8: return "OCHOCIENTOS " + Decenas(decenas); case 9: return "NOVECIENTOS " + Decenas(decenas); } return Decenas(decenas); }//Centenas() function Seccion(num, divisor, strSingular, strPlural) { let cientos = Math.floor(num / divisor) let resto = num - (cientos * divisor) let letras = ""; if (cientos > 0) if (cientos > 1) letras = Centenas(cientos) + strPlural; else letras = strSingular; if (resto > 0) letras += ""; return letras; }//Seccion() function Miles(num) { let divisor = 1000; let cientos = Math.floor(num / divisor) let resto = num - (cientos * divisor) let strMiles = Seccion(num, divisor, "MIL", "MIL"); let strCentenas = Centenas(resto); if(strMiles == "") return strCentenas; return strMiles + " " + strCentenas; }//Miles() function Millones(num) { let divisor = 1000000; let cientos = Math.floor(num / divisor); let resto = num - (cientos * divisor); let de=""; let strMillones = Seccion(num, divisor, "UN MILLON", "MILLONES"); let strMiles = Miles(resto); if(strMillones == "") return strMiles; if(strMiles == "") strMiles = "de"; return strMillones + " " + strMiles; }//Millones() export function NumeroALetras(num) { var data = { numero: num, enteros: Math.floor(num), centavos: (((Math.round(num * 100)) - (Math.floor(num) * 100))), letrasCentavos: "" }; if (data.centavos > 0) { data.letrasCentavos = "CON " + (function (){ if (data.centavos == 1) return Millones(data.centavos) + " " + config.letrasMonedaCentavoSingular ; else return Millones(data.centavos) + " " + config.letrasMonedaCentavoPlural; ; })(); }; if(data.enteros == 0) return "CERO " if (data.enteros == 1) return Millones(data.enteros) + " " + config.letrasMonedaSingular + " " + data.letrasCentavos ; else return Millones(data.enteros) + " " + config.letrasMonedaPlural +" " + data.letrasCentavos ; }//NumeroALetras()