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);