Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas,
Tengo el siguiente problema....
Me dan una tarifa de precios por rango kilos para un cálculo.
kilos | tarifa que aplicaria | € por kilo | a pagar | |
CASO 1 | 125 | 101 a 200 kg | 0,5 € | 62,5 € |
CASO 2 | 270 | 201 a 500 kg | 0,4 € | 108,0 € |
Los rangos de kilos son de la siguiente forma....
rango kg | € por kilo |
0 a 50 | 1 € |
51 a 100 | 0,8 € |
101 a 200 | 0,5 € |
201 a 500 | 0,4 € |
Además me comentan una cosa,, el total a pagar debe ser el MÁXIMO de 2 cálculos:
€ por kilo * kilos (primer cáulculo que he recreado arriba)
ó
máximo del rango anterior, es decir:
kilos | rango anterior | maximo del rango kg anterior | tarifa ese rango | a pagar | |
CASO 1 | 125 | 51 a 100 kg | 100 | 0,8 € | 80,0 |
CASO 2 | 270 | 101 a 200 kg | 200 | 0,5 € | 100 |
Es decir, el total final serian los valores de más abajo: max de 62,5 y de 80 es 80 (primer resultado) y max de 108 y 100 es 108(segundo resultado).
resultado final | |||||
CASO 1 | 62,5 | 80,0 | ------ | VALOR MAXIMO | 80 |
CASO 2 | 108 | 100 | ------ | VALOR MAXIMO | 108 |
No se si alguien me puedes ayudar o si al menos me he expliado un poco. Gracias por anticipado....
Hola Carlos:
Te paso un documento con la solución, lógicamente era una combinación de ambas soluciones.
Por un lado es necesario usar la función Previous() en lugar del Above() y también has de usar el IntervalMatch para localizar el tramo del peso.
Si te queda alguna duda, intentaré aclarala.
Saludos
Joaquín
Hola Carlos:
Eres capaz de calcular ambos resultados para caso 1 y caso 2 ?
Joaquín
Querías escribir algo ?
En esta parte es en la que me atasco:
máximo del rango anterior, es decir:
kilos | rango anterior | maximo del rango kg anterior | tarifa ese rango | a pagar | |
CASO 1 | 125 | 51 a 100 kg | 100 | 0,8 € | 80,0 |
CASO 2 | 270 | 101 a 200 kg | 200 | 0,5 € | 100 |
Hola Carlos:
Se me ocurre que adaptes la tarifa para facilitarte el cálculo
rango kg | € por kilo | Tramo anterior |
0 a 50 | 1 € | 0 € |
51 a 100 | 0,80 € | 50 € |
101 a 200 | 0,50 € | 80 € |
201 a 500 | 0,40 € | 100 € |
Con la función Above() en el load puedes multiplicar el peso máximo del tramo anterior por su valor para obtener el precio del tramo anterior.
En el load de la tasación tendrás tres campos Tasación por Peso, Tasación Tramo Anterior y un tercero que calcularás con un IF (Tasación por Peso < Tasación Tramo Anterior, Tasación Tramo Anterior, Tasación por Peso) as Tasación.
Espero haber desbloqueado tu atasco.
Saludos,
Joaquín
Hola Carlos,
Conforme lo comentas, lo que te hace falta es utilizar la instrucción IntervalMatch en el script.
Te he montado un ejemplo con los datos que nos has pasado para que veas como se utiliza.
Un saludo y espero haberte ayudado.
Buenos dias y gracias antes de nada a los dos.
Emilio me parece muy interesante el ejemplo que me has pasado pero esta parte no me convence .
El cálculo real deberia ser:
kilos | rango anterior | maximo del rango kg anterior | tarifa ese rango | a pagar | |
CASO 1 | 125 | 51 a 100 kg | 100 | 0,8 € | 80,0 |
CASO 2 | 270 | 101 a 200 kg | 200 | 0,5 € | 100 |
y como verás no sale lo mismo.....
Debe coger el máximo del rango anterior :en el CASO 1, el rango anterior es 51 a 100 kg y el máximo es 100 y multiplicarlo por la tarifa de ese rango anteior, es decir 0.8 €, por lo que para el CASO 1 es 100kg *0.8 €= 80 €.
Para el CASO 2, el rango anterior es 101 a 200 kg y el máximo es 200 y multiplicarlo por la tarifa de ese rango anteior, es decir 0.5 €, por lo que para el CASO 2 es 200kg *0.5 €= 100 €.
Carlos,
Copia la parte del script donde haces el load de la tarifa, si puede ser con los campos peso desde y peso hasta en dos columnas.
Hola Carlos:
Te paso un documento con la solución, lógicamente era una combinación de ambas soluciones.
Por un lado es necesario usar la función Previous() en lugar del Above() y también has de usar el IntervalMatch para localizar el tramo del peso.
Si te queda alguna duda, intentaré aclarala.
Saludos
Joaquín