Autor Tema: Sistema de Calculos  (Leído 682 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado expecimen

  • Usuario Junior
  • **
  • Mensajes: 56
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Asociación Cooperativa Kodama Tecnologia, c.a.
Sistema de Calculos
« : 20 de septiembre de 2010, 02:52:53 pm »
Hola de nuevo a todo continuando lo publicado en el post de Corte de caja he tenido el calculo yo he utilizado este javasript ya que fue lo mas directo que conseguí y utilizaba los text lo único malo de este código que hay que estar apretando un botón llamado calcular para que haga los cálculos sobre todo si los cálculos son largos como aparece en el ejemplo, claro si usas cálculos pequeños te puede servir de mucho pero si usas largas lineas de cálculos se tiende a tardar para que saque los cálculos y de un error faltante de decimales al parecer como para que aparezca un redondeo de dos decimales el redondea pero con falta de decimales como 0.12 o 0.15 etc claro uno dirá eso  no es nada son solo decimales pero para los que trabajan en administración sabe que eso es muy grave, trate de hacer alguna modificaciones pero ahora arroja muchos decimas por ejemplo 70.236251 trate de trabajar con onkeyup para los cálculos fueran mas en tiempo real y le instale otro javascript para que redujera los decimales pero la verdad no se, en el fondo no me convence, ya publico todo el código en otro post para que lo pueda apreciar mejor.

Código: [Seleccionar]
<script>

function dp(price)
{
   string = "" + price;
   number = string.length - string.indexOf('.');
   if (string.indexOf('.') == -1)
      return string + '.00';
   if (number == 1)
      return string + '00';
   if (number == 2)
      return string + '0';
   if (number > 4)
      return string.substring(0,string.length-number+4);
return string;
}

function calculate()
{
document.calculo.trimestre.value = dp((document.calculo.montoanual1.value)*(document.calculo.cantidad.value)/4)
document.calculo.montoanual1.value = dp((document.calculo.Vinmueble.value)*(document.calculo.escala.value)/100)

document.calculo.t1.value = dp((document.calculo.t2.value)-(document.calculo.t2.value)*(document.calculo.Ut1.value)/100-(document.calculo.dt1.value))

document.calculo.t2.value = dp((document.calculo.t3.value)-(document.calculo.t3.value)*(document.calculo.Ut2.value)/100-(document.calculo.dt2.value))
document.calculo.t3.value = dp((document.calculo.t4.value)-(document.calculo.t4.value)*(document.calculo.Ut3.value)/100-(document.calculo.dt3.value))
document.calculo.t4.value = dp((document.calculo.t5.value)-(document.calculo.t5.value)*(document.calculo.Ut4.value)/100-(document.calculo.dt4.value))
document.calculo.t5.value = dp((document.calculo.t6.value)-(document.calculo.t6.value)*(document.calculo.Ut5.value)/100-(document.calculo.dt5.value))
document.calculo.t6.value = dp((document.calculo.montoanual1.value)-(document.calculo.montoanual1.value)*(document.calculo.Ut6.value)/100)
document.calculo.suma1.value = dp(eval(document.calculo.t1.value) + eval (document.calculo.t2.value)+ eval (document.calculo.t3.value)+ eval (document.calculo.t4.value)+ eval (document.calculo.t5.value)+ eval (document.calculo.t6.value))

document.calculo.multa1.value = dp((document.calculo.suma1.value)*(document.calculo.multa.value)/100)
document.calculo.total.value = dp(eval(document.calculo.suma1.value)+ eval (document.calculo.multa1.value)+ eval (document.calculo.trimestre.value))

}

</script>

he utilizado este otro script para poder llevarlo a dos decimales

Código: [Seleccionar]
  <script language="JavaScript">
   function redondea(sVal, nDec){
    var n = parseFloat(sVal);
    var s = "0.00";
    if (!isNaN(n)){
     n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
     s = String(n);
     s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
     s = s.substr(0, s.indexOf(".") + nDec + 1);
    }
    return s;
   }

   function ponDecimales(nDec){
    document.calculo.total.value = redondea(document.calculo.total.value, nDec);
    document.calculo.t1.value = redondea(document.calculo.t1.value, nDec);
    document.calculo.t2.value = redondea(document.calculo.t2.value, nDec);
    document.calculo.t3.value = redondea(document.calculo.t3.value, nDec);
    document.calculo.t4.value = redondea(document.calculo.t4.value, nDec);
    document.calculo.t5.value = redondea(document.calculo.t5.value, nDec);
    document.calculo.t6.value = redondea(document.calculo.t6.value, nDec);
    document.calculo.suma1.value = redondea(document.calculo.suma1.value, nDec);
    document.calculo.montoanual1.value = redondea(document.calculo.montoanual1.value, nDec);
    document.calculo.multa1.value = redondea(document.calculo.multa1.value, nDec);
   }
  </script>

para visualizar mejor el ejemplo pueden verlo aquí: http://animeojeda.com.ve/calcum01.php
si alguien tiene una mejor opción o algo parecido en php, en el ejemplo solo hay que apretar el botón calcular para que genere los cálculos como indique si alguien me pudiese recomendar algún scrip mejor y en tiempo real

Desconectado el_santo

  • Usuario Dedicado
  • ***
  • Mensajes: 192
  • Puntuación: 7
  • Sexo: Masculino
    • Ver Perfil
Re:Sistema de Calculos
« Respuesta #1 : 20 de septiembre de 2010, 03:03:34 pm »
Hola de nuevo a todo continuando lo publicado en el post de Corte de caja he tenido el calculo yo he utilizado este javasript ya que fue lo mas directo que conseguí y utilizaba los text lo único malo de este código que hay que estar apretando un botón llamado calcular para que haga los cálculos sobre todo si los cálculos son largos como aparece en el ejemplo, claro si usas cálculos pequeños te puede servir de mucho pero si usas largas lineas de cálculos se tiende a tardar para que saque los cálculos y de un error faltante de decimales al parecer como para que aparezca un redondeo de dos decimales el redondea pero con falta de decimales como 0.12 o 0.15 etc claro uno dirá eso  no es nada son solo decimales pero para los que trabajan en administración sabe que eso es muy grave, trate de hacer alguna modificaciones pero ahora arroja muchos decimas por ejemplo 70.236251 trate de trabajar con onkeyup para los cálculos fueran mas en tiempo real y le instale otro javascript para que redujera los decimales pero la verdad no se, en el fondo no me convence, ya publico todo el código en otro post para que lo pueda apreciar mejor.

Código: [Seleccionar]
<script>

function dp(price)
{
   string = "" + price;
   number = string.length - string.indexOf('.');
   if (string.indexOf('.') == -1)
      return string + '.00';
   if (number == 1)
      return string + '00';
   if (number == 2)
      return string + '0';
   if (number > 4)
      return string.substring(0,string.length-number+4);
return string;
}

function calculate()
{
document.calculo.trimestre.value = dp((document.calculo.montoanual1.value)*(document.calculo.cantidad.value)/4)
document.calculo.montoanual1.value = dp((document.calculo.Vinmueble.value)*(document.calculo.escala.value)/100)

document.calculo.t1.value = dp((document.calculo.t2.value)-(document.calculo.t2.value)*(document.calculo.Ut1.value)/100-(document.calculo.dt1.value))

document.calculo.t2.value = dp((document.calculo.t3.value)-(document.calculo.t3.value)*(document.calculo.Ut2.value)/100-(document.calculo.dt2.value))
document.calculo.t3.value = dp((document.calculo.t4.value)-(document.calculo.t4.value)*(document.calculo.Ut3.value)/100-(document.calculo.dt3.value))
document.calculo.t4.value = dp((document.calculo.t5.value)-(document.calculo.t5.value)*(document.calculo.Ut4.value)/100-(document.calculo.dt4.value))
document.calculo.t5.value = dp((document.calculo.t6.value)-(document.calculo.t6.value)*(document.calculo.Ut5.value)/100-(document.calculo.dt5.value))
document.calculo.t6.value = dp((document.calculo.montoanual1.value)-(document.calculo.montoanual1.value)*(document.calculo.Ut6.value)/100)
document.calculo.suma1.value = dp(eval(document.calculo.t1.value) + eval (document.calculo.t2.value)+ eval (document.calculo.t3.value)+ eval (document.calculo.t4.value)+ eval (document.calculo.t5.value)+ eval (document.calculo.t6.value))

document.calculo.multa1.value = dp((document.calculo.suma1.value)*(document.calculo.multa.value)/100)
document.calculo.total.value = dp(eval(document.calculo.suma1.value)+ eval (document.calculo.multa1.value)+ eval (document.calculo.trimestre.value))

}

</script>

he utilizado este otro script para poder llevarlo a dos decimales

Código: [Seleccionar]
  <script language="JavaScript">
   function redondea(sVal, nDec){
    var n = parseFloat(sVal);
    var s = "0.00";
    if (!isNaN(n)){
     n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
     s = String(n);
     s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
     s = s.substr(0, s.indexOf(".") + nDec + 1);
    }
    return s;
   }

   function ponDecimales(nDec){
    document.calculo.total.value = redondea(document.calculo.total.value, nDec);
    document.calculo.t1.value = redondea(document.calculo.t1.value, nDec);
    document.calculo.t2.value = redondea(document.calculo.t2.value, nDec);
    document.calculo.t3.value = redondea(document.calculo.t3.value, nDec);
    document.calculo.t4.value = redondea(document.calculo.t4.value, nDec);
    document.calculo.t5.value = redondea(document.calculo.t5.value, nDec);
    document.calculo.t6.value = redondea(document.calculo.t6.value, nDec);
    document.calculo.suma1.value = redondea(document.calculo.suma1.value, nDec);
    document.calculo.montoanual1.value = redondea(document.calculo.montoanual1.value, nDec);
    document.calculo.multa1.value = redondea(document.calculo.multa1.value, nDec);
   }
  </script>

para visualizar mejor el ejemplo pueden verlo aquí: http://animeojeda.com.ve/calcum01.php
si alguien tiene una mejor opción o algo parecido en php, en el ejemplo solo hay que apretar el botón calcular para que genere los cálculos como indique si alguien me pudiese recomendar algún scrip mejor y en tiempo real

Es importante aclarar,

¿que hace tu formulario?

hehehehe


Explica en cristiano el procedimiento.
Yo hablo php........!!!

Desconectado Carlos Belisario

  • Usuario Dedicado
  • ***
  • Mensajes: 152
  • Puntuación: 9
  • Sexo: Masculino
    • Ver Perfil
    • Carlosbelisario.com
Re:Sistema de Calculos
« Respuesta #2 : 20 de septiembre de 2010, 03:07:47 pm »
Es importante aclarar,

¿que hace tu formulario?

hehehehe


Explica en cristiano el procedimiento.
totalmente de acuerdo no te podemos ayudar si no nos dices que haces xq en si la aplicacion esta confusa

Desconectado expecimen

  • Usuario Junior
  • **
  • Mensajes: 56
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Asociación Cooperativa Kodama Tecnologia, c.a.
Re:Sistema de Calculos
« Respuesta #3 : 20 de septiembre de 2010, 04:49:08 pm »
totalmente de acuerdo no te podemos ayudar si no nos dices que haces xq en si la aplicacion esta confusa

Bueno pues es un a serie de cálculos para el pago de impuesto de inmueble, el hecho es que el usuario ingrese los datos y el valla calculando, en este caso los datos ya están integrados de solo apretar el botón calcular, pero el hecho es para hagan un idea y pudiesen recomendar algún código parecido a este javascript ya sea en otro javascript o php y que pueda sacar los cálculos en tiempo real sin estar apretando el botón calcular no se si ya me doy a entender, el inconveniente con este código es que hay que estar apretando el botón calcular para que saque todo los cálculos y que me de el total con dos decimales, luego de estos resultados son registrados en un BD para que al final se pueda emitir una planilla.

Si se preguntan por lo text de color azul eso utilizan para ingresar el numero de que tiene alado y restar el valor que tiene alado.

espero haberme dado a entender
« Última Modificación: 20 de septiembre de 2010, 04:53:30 pm por expecimen »

Desconectado ashrey

  • Fanático
  • ****
  • Mensajes: 431
  • Puntuación: 7
  • Sexo: Masculino
  • Wombat Team
    • Ver Perfil
    • Blog de ABerroteran
Re:Sistema de Calculos
« Respuesta #4 : 20 de septiembre de 2010, 09:57:10 pm »
Lo que tienes es que cambiar el evente de js al que reacciona, es decir en vez de que sea el click de ratón se cada  vez que presiones una tecla.

Desconectado expecimen

  • Usuario Junior
  • **
  • Mensajes: 56
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Asociación Cooperativa Kodama Tecnologia, c.a.
Re:Sistema de Calculos
« Respuesta #5 : 20 de septiembre de 2010, 10:50:50 pm »
Lo que tienes es que cambiar el evente de js al que reacciona, es decir en vez de que sea el click de ratón se cada  vez que presiones una tecla.

Te refieres a onkeyup y onclick??

Desconectado ashrey

  • Fanático
  • ****
  • Mensajes: 431
  • Puntuación: 7
  • Sexo: Masculino
  • Wombat Team
    • Ver Perfil
    • Blog de ABerroteran
Re:Sistema de Calculos
« Respuesta #6 : 20 de septiembre de 2010, 11:54:37 pm »
Onkeypress

Desconectado el_santo

  • Usuario Dedicado
  • ***
  • Mensajes: 192
  • Puntuación: 7
  • Sexo: Masculino
    • Ver Perfil
Re:Sistema de Calculos
« Respuesta #7 : 21 de septiembre de 2010, 07:46:53 am »
Onkeypress

Te recomendaria un Onkeyup. ya ke hay un accept-text implicito en el.
Yo hablo php........!!!

Conroy001

  • Visitante
Re:Sistema de Calculos
« Respuesta #8 : 22 de septiembre de 2010, 05:18:10 am »
Es importante aclarar,

¿que hace tu formulario?

hehehehe


Explica en cristiano el procedimiento.

Desconectado expecimen

  • Usuario Junior
  • **
  • Mensajes: 56
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Asociación Cooperativa Kodama Tecnologia, c.a.
Re:Sistema de Calculos
« Respuesta #9 : 23 de septiembre de 2010, 02:40:55 pm »
Utilizando Onkeyup ya los cálculos se han mas en tiempo real  :D

Desconectado expecimen

  • Usuario Junior
  • **
  • Mensajes: 56
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Asociación Cooperativa Kodama Tecnologia, c.a.
Re:Sistema de Calculos
« Respuesta #10 : 23 de septiembre de 2010, 03:10:49 pm »
Aquí hay otro código para sacar cálculos solo tienen que adaptarlo a sus necesidades y requerimientos.

Citar
<html>
<head>
<title>Compra de frutas</title>
<script>

function calculo(cantidad,precio,inputtext,totaltext){
   
   /* Parametros:
   cantidad - entero con la cantidad
   precio - entero con el precio
   inputtotal - nombre del elemento del formulario donde ira el total
   */
   
   // Calculo del subtotal
   subtotal = precio*cantidad;
   inputtext.value=subtotal;
   
   //Actualizar el total
   // Utilizamos el eval. Ya que el valor es un texto y si lo tratamos como tal
   // es como si estuviesemos manipulando una cadena.
   total = eval(totaltext.value);
   totaltext.value = total + subtotal;
}
</script>
<body>

<h1>Compra de Frutas</h1>

<form>

<table>
<tr>
<td></td>
<td>Cantidad</td>

<td>Precio/Ud</td>
<td>Total</td>
</tr>
<tr>
<td>Platanos</td>
<td><input type="text" size="3" id="platanos" value="0" onChange="calculo(this.value,precioplatanos.value,totalplatanos,total);">uds</td>
<td><input type="hidden" id="precioplatanos" value="7"/> 7€</td>
<td><input type="text" size="8" id="totalplatanos" value="0">€</td>
</tr>
<tr>

<td>Manzanas</td>
<td><input type="text" size="3" id="manzanas" value="0" onChange="calculo(this.value,preciomanzanas.value,totalmanzanas,total);">uds</td>
<td><input type="hidden" id="preciomanzanas" value="3"/>3€</td>
<td><input type="text" size="8" id="totalmanzanas" value="0">€</td>
</tr>
<tr>
<td>Peras</td>
<td><input type="text" size="3" id="peras" value="0" onChange="calculo(this.value,precioperas.value,totalperas,total);">uds</td>
<td><input type="hidden" id="precioperas" value="2"/>2€</td>
<td><input type="text" size="8" id="totalperas" value="0">€</td>

</tr>
<tr>
<td>Uvas</td>
<td><input type="text" size="3" id="uvas" value="0" onChange="calculo(this.value,preciouvas.value,totaluvas,total);">uds</td>
<td><input type="hidden" id="preciouvas" value="9"/>9€</td>
<td><input type="text" size="8" id="totaluvas" value="0">€</td>
</tr>
<tr>
<td>Melocotones</td>
<td><input type="text" size="3" id="melocotones" value="0" onChange="calculo(this.value,preciomelocotones.value,totalmelocotones,total);">uds</td>
<td><input type="hidden" id="preciomelocotones" value="5"/>5€</td>

<td><input type="text" size="8" id="totalmelocotones" value="0">€</td>
</tr>
<tr>
<td>Total</td>
<td></td><td></td>
<td><input type="text" id="total" size="8" value="0">€</td>
</tr>

</form>
 
</body>
</html>

PHP de Venezuela

Re:Sistema de Calculos
« Respuesta #10 : 23 de septiembre de 2010, 03:10:49 pm »

 

PHP de Venezuela on Facebook