JavaScript - APOYO PARA FORMULA CONVERTIR PORCENTAJE A LETRA

 
Vista:

APOYO PARA FORMULA CONVERTIR PORCENTAJE A LETRA

Publicado por LUIS JULIAN CHAVEZ MEZA (1 intervención) el 12/03/2019 17:21:24
Estoy trabajando en la función de convertir porcentaje a letra ejemplo: 3.60% (TRES PUNTO SESENTA) pero al momento de teclear: 4.60% no me da la letra exacta (CUATRO PUNTO CINCUENTA Y NUEVE) solo me pasa con esa cantidad, esta es la funcion que estoy utilizando

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
function convierte_porcentaje(campo) {
  // variables que participan
  var flg0 = eval('this.getField("PorcentajeOpera'+campo+'");');
  var flg1 = eval('this.getField("Desc_PorcentajeOpera'+campo+'");');
  var flag = flg0;
 
  // identifica que la captura
  if((flg0.value.length==0)||(flg0.value==null)||(flg0.value=="")){
    flg1.value ="-- -- --";
    return false;
  }
  if(isNaN(flg0.value)){
    flg1.value ="NO APLICA";
  }else{
    if(flg0.value==0){
      flg1.value="CERO";
    }else{
      if(flg0.value<100.01){
        // verificar si tiene fracciones
        var e = parseInt(flg0.value);
        var f = parseInt(flg0.value*100)-e*100;
        e = sub_conv(e);
        if((f>0)){
          var f2 = f;
          f = sub_conv(f);
          f = (f2<10)? "CERO "+f:f;
          e = e+" PUNTO "+f;
        }
        flg1.value=e;
      }else{
        app.alert("El porcentaje no puede ser" + flg0.value);
        flg1.setFocus();
        flg1.value = "ERROR !!!";
      }
    }
  }
 
  return false;
}
 
function sub_conv(Porcentaje){
  var d = Porcentaje/100;
  if (d<0) var d=0;
  var d_3 = util.printx("9", d);
  var Porcentaje = Porcentaje - (d_3+100);
 
  var d = Porcentaje/10;
  if (d<0) var d=0;
  var d_2 = util.printx("9", d);
  var Porcentaje = Porcentaje - (d_2+10);
 
  var d = Porcentaje/1;
  if (d<0) var d=0;
  var d_1 = util.printx("9", d);
  var Porcentaje = Porcentaje - (d_1+1);
 
  var x_x = d_2 + d_1;
  var xxx = d_3 + d_2 + d_1;
 
  var x_d_1 = "";
  var x_x = x_x/1;
  if (d_1==0) x_d_1 = "CERO ";
  if (d_1==1) x_d_1 = "UN ";
  if (d_1==2) x_d_1 = "DOS";
  if (d_1==3) x_d_1 = "TRES";
  if (d_1==4) x_d_1 = "CUATRO";
  if (d_1==5) x_d_1 = "CINCO";
  if (d_1==6) x_d_1 = "SEIS";
  if (d_1==7) x_d_1 = "SIETE";
  if (d_1==8) x_d_1 = "OCHO";
  if (d_1==9) x_d_1 = "NUEVE";
  if (x_x==10) x_d_1 = "DIEZ";
  if (x_x==11) x_d_1 = "ONCE";
  if (x_x==12) x_d_1 = "DOCE";
  if (x_x==13) x_d_1 = "TRECE";
  if (x_x==14) x_d_1 = "CATORCE";
  if (x_x==15) x_d_1 = "QUINCE";
 
  var x_d_2 = "";
  if ((x_x>15) && (x_x<20)) x_d_2 = "DIECI";
  if ((x_x>19) && (x_x<30)) {
    x_d_2 = "VEINT";
    if (x_x==20){
      x_d_2 = x_d_2 +"E";
      x_d_1 = "";
    }else{
      x_d_2 = x_d_2 +"I";
    }
  }
  if ((x_x>29) && (x_x<40))  x_d_2 = "TREINTA";
  if (x_x==30) x_d_1 = "";
  if ((x_x>39) && (x_x<50))  x_d_2 = "CUARENTA";
  if (x_x==40) x_d_1 = "";
  if ((x_x>49) && (x_x<60))  x_d_2 = "CINCUENTA";
  if (x_x==50) x_d_1 = "";
  if ((x_x>59) && (x_x<70))  x_d_2 = "SESENTA";
  if (x_x==60) x_d_1 = "";
  if ((x_x>69) && (x_x<80))  x_d_2 = "SETENTA";
  if (x_x==70) x_d_1 = "";
  if ((x_x>79) && (x_x<90))  x_d_2 = "OCHENTA";
  if (x_x==80) x_d_1 = "";
  if ((x_x>89) && (x_x<100)) x_d_2 = "NOVENTA";
  if (x_x==90) x_d_1 = "";
  if (x_x==100) x_d_1 = "";
 
  if ((d_1>0) && ((x_x>29) && (x_x<100))) x_d_2 = x_d_2 + " Y ";
 
  var x_d_3 = "";
  // Correcciones
  if (xxx==100) var x_d_3 = "CIEN";
  xxx = x_d_3 + x_d_2 + x_d_1;
  // Parche para el manejo de 1%
  if(xxx=="UNO ") xxx = "UNO ";
 
  return xxx;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder