// // // JavaScript Functions // // // ////////////////////////////////////// // Función para convertir un nro. en letra // // La llamada a esta función es del modo siguiente: // // nro_letra(nro, cod_len, cod_gen, cod_mon, car_pad, lon_l1, lon_l2) // return num_let // // (*) nro es el float que contiene el nro. a transcribir. // (*) cod_len es el código de la lengua en la que se transcribe nro // (3 dígitos) ej: "spa" para nuestra lengua. // (*) cod_gen es el género "m" masculino o "f" femenino. // cod_mon es el código de la moneda ( 4 dígitos). [ej: "pts"] // car_pad es el caracter que se usa para relleno ( caso de cheques) // lon_l1 es la longitud de la primera cadena de caracteres que se // concatena con la segunda en una para el return // lon_l2 es la longitud de la segunda cadena que se prepara para // el programa que llama a este módulo // num_let es la cadena que se manipula y devuelve con el texto del // nro transcrito y las manipulaciones solicitadas por el // resto de los argumentos. // function nro_letra(nro_i, cod_len, cod_gen, cod_mon, car_pad, lon_l1, lon_l2) { // var nro_i=0; // Nro. a escribir // var cod_len=""; // Código de lengua // var cod_gen=""; // Código ( m / f) género para cientos // var cod_mon=""; // Código de moneda // var car_pad=""; // Caracter para usar de relleno // var lon_l1=0; // Long de la línea uno // var lon_l2=0; // Long de la línea dos var nro_let=""; var nro=parseFloat(nro_i); //car_pad="*" //lon_l1=80 //cod_len="spa" //cod_gen="m" tx_cent=""; tx_dece=""; tx_und=""; tx_mll=""; txletmll=""; txletmil=""; if ( nro+0 == 0 ) { return false; } var s_nro=nro+""; var lonNro=s_nro.length; var pos=s_nro.indexOf(car_dec); // if (pos == -1) { // var s_entera=s_nro; // var s_decimal="0"; // } else { // var s_entera = s_nro.substring(0,pos); // var s_decimal = s_nro.substring(pos+1,longNro); // } //debug(s_entera); // if ( parseInt(s_entera) > 0 ) analiza_num(s_nro,cod_mon,car_pad, lon_l1, lon_l2); // Análisis nro y trad. // if ( parseInt(s_decimal) > 0 && pos > 0 ) { // nro_let=num_let; // analiza_num(s_decimal); // Análisis del nro y trad. // num_let=nro_let+" con "+num_let; // } if (num_let.length == 0 ) { return "" } // num_let=num_let+cod_mon; // pone moneda y mayuscula return true } function analiza_num(s_num,cod_mon,car_pad, lon_l1, lon_l2) { var nro_let=""; var s_nro=""; var s_numero=s_num+""; var lonNro=s_numero.length; if ( lonNro < 3 ) { parseCent(s_numero,1,1); num_let=tx_cent+" "+tx_dece+tx_und+" "; return; } var n_centenas=parseInt(lonNro/3); var n_ope=n_centenas*3; var n_ini=0; if (n_centenas == 0 ) n_centenas=1; if ( n_ope < lonNro ) { n_centenas++; n_fin=lonNro-n_ope; } else n_fin=n_ini+3; for ( var i=0; i < n_centenas ; i++ ) { s_nro=s_numero.substring(n_ini,n_fin); parseCent(s_nro,n_centenas,n_centenas-i); if ( n_centenas-i == 2 && s_nro != "000") txletmil=" "+let_mil; else txletmil=""; nro_let=nro_let+" "+tx_cent+" "+tx_dece+tx_und+txletmil; if (parseInt(s_nro) > 0 ) { parseMil(n_centenas-i,s_nro) if (s_nro == "1" ) nro_let=let_un+" "+txletmll; else { nro_let=nro_let+" "+txletmll; } } n_ini=n_fin; n_fin=n_ini+3; } num_let=nro_let+" "; num_let=num_let+" "+cod_mon; nro_let=num_let; num_let=num_let+linPad; num_let2=linPad; lonNro=nro_let.length; if ( lonNro > LongLine) { var pos=LongLine; while (pos > 0) { var s_char=nro_let.substring(pos-1,pos) if ( s_char == " " ) break; pos--; } if ( pos > 0 ) { num_let=nro_let.substring(0,pos)+linPad; num_let2=nro_let.substring(pos,lonNro)+linPad; } } num_let=num_let.substring(0,lon_l1); num_let2=num_let2.substring(0,lon_l2); return; } function parseCent(s_nro,n_cents,p_cents) { var nro_flt=parseFloat(s_nro); var cad_nro = nro_flt+""; var lon = cad_nro.length; var cadena=""; var n_c=0; tx_cent=""; tx_dece=""; tx_und=""; if (cad_nro == "000" ) return if (cad_nro == "100" ) { tx_cent = mat_ce_1; return } if ( lon == 3 ) { // Centenas var n_c=cad_nro.substring(0,1); var n_d=cad_nro.substring(1,2); var n_u=cad_nro.substring(2,3); } if ( lon == 2 ) { // Decenas var n_c="0"; var n_d=cad_nro.substring(0,1); var n_u=cad_nro.substring(1,2); } if ( lon == 1 ) { // Unidades var n_c="0"; var n_d="0"; var n_u=cad_nro.substring(0,1); } if ( n_c > 0 ) { eval("tx_cent = mat_ce_"+n_c); if ( n_c > 1 && n_c != 5 ) tx_cent= tx_cent+let_ciens } if ( n_c == 1 ) { tx_cent = tx_cent+let_plus100; }; if ( n_d > 0 ) { if ( n_d == 1 && n_u > 0 ) eval("tx_dece=mat_ud_"+n_u); if ( n_d == 1 && n_u == 0 ) eval("tx_dece=mat_de_"+1); if ( n_d == 2 ) { eval("tx_dece=mat_de_"+n_d); if ( n_u > 0 ) tx_dece=tx_dece+"I"; } if ( n_d > 2 ) { eval("tx_dece=mat_de_"+n_d); if ( n_u > 0 ) tx_dece=tx_dece+" Y "; } } if ( n_d == 2 && n_u == 0 ) { tx_dece=tx_dece+"E" } if ( s_nro.length == 1 && n_d == 0 ) eval("tx_und=mat_un_"+n_u); if ( parseInt(s_nro) != 1 ) { if ( p_cents%2 != 0 && p_cents != 1 && n_d != 1 && n_u == 1 ) { tx_dece=tx_dece+"UN" } if ( p_cents%2 == 0 && p_cents != 1 && n_d != 1 ) { eval("tx_und=mat_un_"+n_u) } // if ( p_cents == 1 ) { eval("tx_und=mat_un_"+n_u) } if ( s_nro.length > 1 && n_d != 1 ) eval("tx_und=mat_un_"+n_u) } else { if ( p_cents == 1 ) { eval("tx_und=mat_un_"+n_u) } // if ( p_cents > 1 && nd != 1 ) { tx_und=let_un } } // nro_let=num_let+tx_cent+" "+tx_dece+tx_und+txletmil; //lin=" Ce: "+n_c+" De: "+n_d+" Un: "+n_u+" Nro: "+cad_nro //debug(lin) //debug(nro_let) } function parseMil(cen,s_nro) { tx_mll=""; txletmll="" if ( cen < 2 ) { return ""; } if ( cen%2 == 0 ) { if ( s_nro != "000" ) { return ""; // let_mil; } } // Los millones y más ... too much !!! if ( cen == 3 ) tx_mll=mat_mll_1; if ( cen == 5 ) tx_mll=mat_mll_2; if ( cen == 7 ) tx_mll=mat_mll_3; if ( cen == 9 ) tx_mll=mat_mll_4; if ( cen == 11 ) tx_mll=mat_mll_5; if ( cen == 13 ) tx_mll=mat_mll_6; if ( cen == 15 ) tx_mll=mat_mll_7; if ( cen == 17 ) tx_mll=mat_mll_8; if ( cen == 19 ) tx_mll=mat_mll_9; var lonNro=s_nro.length; if ( parseInt(s_nro) == 1 ) { txletmll=tx_mll+let_mill; // return ""; // let_un; // +" "+tx_mll+let_mill; } else { txletmll=tx_mll+let_mills; // return ""; //tx_mll+let_mills; } return ""; } function preparamat(cod_len,cod_gen) { if ( cod_gen == "f" ) let_fin="as" else if ( cod_gen == "m" ) let_fin="os" else if (cod_gen != "f" || cod_gen != "m") { alert (" Genero : "+cod_gen+" de la lengua : "+cod_len+" Desconocido"); return false; } if ( cod_len == "spa" ) { mat_un_0=""; if (cod_gen=="m") mat_un_1="UNO"; else mat_un_1="UNA"; mat_un_2="DOS"; mat_un_3="TRES"; mat_un_4="CUATRO"; mat_un_5="CINCO"; mat_un_6="SEIS"; mat_un_7="SIETE"; mat_un_8="OCHO"; mat_un_9="NUEVE"; mat_ud_0=""; mat_ud_1="ONCE"; mat_ud_2="DOCE"; mat_ud_3="TRECE"; mat_ud_4="CATORCE"; mat_ud_5="QUINCE"; mat_ud_6="DIECISEIS"; mat_ud_7="DIECISIETE"; mat_ud_8="DIECIOCHO"; mat_ud_9="DIECINUEVE"; mat_de_1="DIEZ"; mat_de_2="VEINT"; mat_de_3="TREINTA"; mat_de_4="CUARENTA"; mat_de_5="CINCUENTA"; mat_de_6="SESENTA"; mat_de_7="SETENTA"; mat_de_8="OCHENTA"; mat_de_9="NOVENTA"; if (cod_gen=="m") let_ciens="CENTOS"; else let_ciens="CIENTAS"; let_plus100="TO"; mat_ce_1="CIEN"; mat_ce_2="DOS"; mat_ce_3="TRES"; mat_ce_4="CUATRO"; if (cod_gen=="m") mat_ce_5="QUINIENTOS"; else mat_ce_5="QUINIENTAS"; mat_ce_6="SEIS"; mat_ce_7="SETE"; mat_ce_8="OCHO"; mat_ce_9="NOVE"; let_un="UN"; let_cien="CIEN"; let_cient="CIENTO"; let_mil ="MIL"; let_mills="LLONES"; let_mill="LLON"; let_con="CON"; car_dec=","; mat_mll_1="MI"; mat_mll_2="BI"; mat_mll_3="TRI"; mat_mll_4="CUATRI"; mat_mll_5="QUINTI"; mat_mll_6="SESTI"; mat_mll_7="SEPTI"; mat_mll_8="OCTI"; mat_mll_9="NOVI"; for ( var i=1; i < LongLine; i++ ) linPad=linPad+CarPad; } else { alert(" Código de Lengua "+cod_len+" No definido !!"); return false; } return true }