Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cálculos en sistema de pedido

Estas en el tema de Cálculos en sistema de pedido en el foro de Javascript en Foros del Web. Hola a tod@s, Tengo un sistema de pedidos que me calcula los precios en base a unas características. Una de ellas es un cálculo de ...
  #1 (permalink)  
Antiguo 27/03/2014, 02:40
 
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 46
Antigüedad: 12 años, 4 meses
Puntos: 1
Cálculos en sistema de pedido

Hola a tod@s,

Tengo un sistema de pedidos que me calcula los precios en base a unas características. Una de ellas es un cálculo de precio en base a unas medidas.

Fabricamos productos de 2, 3 y 4 paradas, de tal forma que necesitamos calcular el coste de los tramos intermedios entre estas paradas, por lo que a priori,

Si es un 2 paradas tiene un tramo intermedio
Si es un 3 paradas tiene dos tramos intermedios
Si es un 4 paradsa tiene tres tramos intermedios

El precio del tramo intermedio está compuesto por dos costes diferentes:
Coste por la ejecución de los primeros 14cm
Coste por cm adicional a esos 14cm

Hasta aquí todo está correctamente funcionando.

El problema viene cuando por ejemplo, un cliente pide un 2 paradas, pero con un tramo intermedio superior a 2000mm, ya que solo nos es posible fabricar tramos de esta medida como máximo, de tal forma que necesitamos fabricar dos tramos intermedios a pesar de que es un 2 paradas (normalmente lleva uno).

Por lo tanto necesitamos cobrar 2 veces el coste de ejecución de los primeros 14cm, y despues los cm adicionales para cada intermedio.

Para más inri las medidas que nos dan los clientes siempre son de suelo a suelo, y nosotros restamos siempre 2340mm. Ejemplo: Dos paradas con distancia de suelo a suelo de 3300 --> el tramo intermedio a fabricar será 3300 - 2340 = 960mm, lo pasamos a cm 960/10 = 96cm

De estos 96cm restamos 14cm y cobramos 200 euros por esa ejecución.
96-14 = 82 cm , estos 82 cm los multiplicamos por el coste por cm 82 * 2 = 164 euros

De tal forma que el coste de este tramo sería 200 + 164 =364 euros.

En el caso de que fuese 3 o 4 paradas aplicaríamos la misma operación para los otros tramos y sumaríamos los importes.

En el caso que se nos plantea, imaginad un 2 parada con distancia 6690mm

Cómo solo podemos fabricar tramos de 2000, sucede lo siguiente:

6690 - 2340 = 4350 de tramo intermedio que estará compuesto por:

un tramo de 2000mm
otro tramo de 2000mm
otro tramo de 350mm

De tal forma que para un dos paradas, que normalmente tiene un intermedio, en este caso tenemos tres.

El primer tramo de 2000mm tendría un coste de: (pasamos a cm 2000/10=200)
Ejecución de los primeros 14cm = 200 euros
200 -14= 186cm * coste por cm 2 euros = 372 euros
Total del primer tramo = 572 euros

El segundo tramo como es de 2000mm tendría el mismo coste 572 euros

El tercer tramo de 350mm / 10 = 35 cm
Ejecución de los primeros los primeros 14cm = 200 euros
35 - 14 = 24cm * coste por cm 2 euros = 48 euros

Total del tercer tramo 248 euros

De tal forma que el precio de los intermedios sería 1392 euros.

Tengo este código para el caso de un 4 paradas.

Código PHP:
break;
      case '4':
        precio_total += <?=(@mysql_result(@mysql_query("SELECT precio_coste FROM productos WHERE (id='8')",$conexion),0,'precio_coste'));?>;
        document.getElementById('capa-desglose').innerHTML += '<div align="left" class="mt10 menu-izq-enlace-activo">PVE UB52 de 4 paradas</div>';

        var total_intermedios=474.60*3;
        if(como_son_medidas=="aproximadas")
        {
            if(p0_medida_aproximada!="" && p1_medida_aproximada!=""  && p2_medida_aproximada!="" && p3_medida_aproximada!="")
            {
                var total_ejecucion=((((p0_medida_aproximada-2340)/10) + ((p1_medida_aproximada-2340)/10) + ((p2_medida_aproximada-2340)/10))-42) * 4.27;

        if (total_ejecucion > 4340 && total_ejecucion < 6340 ){
          total_ejecucion += (474.60*2);
        }
        else if (total_ejecucion >= 6340 && total_ejecucion < 8340){
          total_ejecucion += (474.60*3);
        }
        else if (total_ejecucion >= 8340 && total_ejecucion < 10340){
          total_ejecucion += (474.60*4);
        }
        else if (total_ejecucion >= 10340){
          total_ejecucion += (474.60*5);
        }
                precio_total +=(total_intermedios+total_ejecucion);
  #2 (permalink)  
Antiguo 27/03/2014, 12:50
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Cálculos en sistema de pedido

Si lo entendí bien el cálculo que se me ocurrió de primer momento es este:
Código Javascript:
Ver original
  1. window.onload = function() {
  2.  
  3.         function foo(tramo) {
  4.  
  5.           var costo = 0;
  6.           var costo2 = 0;
  7.           var parcial = 0;
  8.           tramo /= 10;
  9.  
  10.           if (tramo < 14) {
  11.             test.innerHTML = 'Menos de 14 = ?€';
  12.             exit;
  13.           }
  14.  
  15.           // mientras sea mayor 2000
  16.           while (tramo > 200) {
  17.             costo += 200;
  18.             parcial = 200 - 14;
  19.             costo += parseFloat((parcial) * 2);
  20.             tramo -= 200;
  21.           }
  22.           // menos de 2000
  23.           if (tramo <= 200) {
  24.             costo2 += 200;
  25.             tramo -= 14;
  26.             costo2 += parseFloat((tramo) * 2);
  27.           }
  28.           return  costo + costo2 + '€';
  29.         }
  30.  
  31.         var test = document.getElementById('test');
  32.         var boton = document.getElementById('boton');
  33.         var tramo = document.getElementById('tramo');
  34.  
  35.         boton.addEventListener("click", function(e) {
  36.           e.preventDefault();
  37.           var total = foo(tramo.value);
  38.           test.innerHTML = total;
  39.         }, false);
  40.  
  41.       };
Código HTML:
Ver original
  1. <fieldset id="fiel">
  2.       <legend>formulario</legend>
  3.       <form id="form1" name="form1">
  4.         <input type="text" id="tramo" name="tramo" value="2000" />
  5.       </form>
  6.     </fieldset>  
  7.     <button id="boton">Boton</button>
  8.     <div id="test"></div>
  #3 (permalink)  
Antiguo 31/03/2014, 04:45
 
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 46
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Cálculos en sistema de pedido

Muchas gracias!! Probaré!

Etiquetas: funcion, pedido, select, sistema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:52.