@vigilio/numeros-a-letras
Version:
Convert numbers a letters customizable - spanish
200 lines • 6.71 kB
JavaScript
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) {
var decena = Math.floor(num / 10);
var 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()
function DecenasY(strSin, numUnidades) {
if (numUnidades > 0)
return strSin + " Y " + Unidades(numUnidades);
return strSin;
} //DecenasY()
function Centenas(num) {
var centenas = Math.floor(num / 100);
var 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 "NOVECIENTO " + Decenas(decenas);
}
return Decenas(decenas);
} //Centenas()
function Seccion(num, divisor, strSingular, strPlural) {
var cientos = Math.floor(num / divisor);
var resto = num - cientos * divisor;
var letras = "";
if (cientos > 0)
if (cientos > 1)
letras = Centenas(cientos) + " " + strPlural;
else
letras = strSingular;
if (resto > 0)
letras += "";
return letras;
} //Seccion()
function Miles(num) {
var divisor = 1000;
var cientos = Math.floor(num / divisor);
var resto = num - cientos * divisor;
var strMiles = Seccion(num, divisor, "UN MIL", "MIL");
var strCentenas = Centenas(resto);
if (strMiles == "")
return strCentenas;
return strMiles + " " + strCentenas;
} //Miles()
function Millones(num) {
var divisor = 1000000;
var cientos = Math.floor(num / divisor);
var resto = num - cientos * divisor;
var strMillones = Seccion(num, divisor, "UN MILLON DE", "MILLONES DE");
var strMiles = Miles(resto);
if (strMillones == "")
return strMiles;
return strMillones + " " + strMiles;
} //Millones()
/**
*
* @param num
* @param moneda - {singural: sol, plural: soles,centSingular:CENTIMOS,centPlural:CENTIMO}
* @param isFactura -boolean true: 20/100
* @returns
*/
function numeroALetras(num, isMoney, moneda) {
if (isMoney === void 0) { isMoney = false; }
var _a = moneda || {
Monedasingular: "SOLES",
Monedaplural: "SOL",
centSingular: "CENTIMO",
centPlural: "CENTIMOS",
isInvoice: false,
}, _b = _a.Monedaplural, Monedaplural = _b === void 0 ? "SOLES" : _b, _c = _a.Monedasingular, Monedasingular = _c === void 0 ? "SOL" : _c, _d = _a.centPlural, centPlural = _d === void 0 ? "CENTIMOS" : _d, _e = _a.centSingular, centSingular = _e === void 0 ? "CENTIMO" : _e, _f = _a.isInvoice, isInvoice = _f === void 0 ? false : _f;
var data = {
numero: num,
enteros: Math.floor(num),
centavos: Math.round(num * 100) - Math.floor(num) * 100,
letrasCentavos: "",
letrasMonedaPlural: isMoney ? Monedaplural : "", //"PESOS", 'Dólares', 'Bolívares', 'etcs'
letrasMonedaSingular: isMoney ? Monedasingular : "", //"PESO", 'Dólar', 'Bolivar', 'etc'
letrasMonedaCentavoPlural: isMoney ? centPlural : "",
letrasMonedaCentavoSingular: isMoney ? centSingular : "",
};
if (data.centavos > 0)
data.letrasCentavos = "".concat(isInvoice ? " " : "CON ").concat((function () {
if (data.centavos > 9)
return isInvoice
? data.centavos + "/100 " + data.letrasMonedaPlural
: Millones(data.centavos) +
" " +
data.letrasMonedaCentavoSingular;
else
return isInvoice
? "0" + data.centavos + "/100 " + data.letrasMonedaPlural
: Millones(data.centavos) +
" " +
data.letrasMonedaCentavoPlural;
})());
var resultado;
if (data.enteros == 0)
resultado = isInvoice
? "CERO" + data.letrasCentavos
: "CERO " + data.letrasMonedaPlural + " " + data.letrasCentavos;
if (data.enteros == 1)
resultado = isInvoice
? Millones(data.enteros) + data.letrasCentavos
: Millones(data.enteros) +
" " +
data.letrasMonedaSingular +
" " +
data.letrasCentavos;
else
resultado = isInvoice
? Millones(data.enteros) + data.letrasCentavos
: Millones(data.enteros) +
" " +
data.letrasMonedaPlural +
" " +
data.letrasCentavos;
return resultado.replaceAll(" ", " ");
}
export default numeroALetras;
//# sourceMappingURL=index.js.map