Hola cakew,
He creado un array con los precios, supongo que tu debes tener algo similar pero con otros precios.
Y la función de abajo le has de pasar, el articulo y descripcion de inicio y los de fin y te debuelve la suma o un false si no se cumple la condición.
Código Javascript
:
Ver original<script>
var precios=new Array();
precios['Articulo5']=new Array();
precios['Articulo5']['Categoria5']=1;
precios['Articulo5']['Categoria4']=2;
precios['Articulo5']['Categoria3']=3;
precios['Articulo5']['Categoria2']=4;
precios['Articulo5']['Categoria1']=5;
precios['Articulo4']=new Array();
precios['Articulo4']['Categoria5']=10;
precios['Articulo4']['Categoria4']=20;
precios['Articulo4']['Categoria3']=30;
precios['Articulo4']['Categoria2']=40;
precios['Articulo4']['Categoria1']=50;
precios['Articulo3']=new Array();
precios['Articulo3']['Categoria5']=100;
precios['Articulo3']['Categoria4']=200;
precios['Articulo3']['Categoria3']=300;
precios['Articulo3']['Categoria2']=400;
precios['Articulo3']['Categoria1']=500;
precios['Articulo2']=new Array();
precios['Articulo2']['Categoria5']=1000;
precios['Articulo2']['Categoria4']=2000;
precios['Articulo2']['Categoria3']=3000;
precios['Articulo2']['Categoria2']=4000;
precios['Articulo2']['Categoria1']=5000;
precios['Articulo1']=new Array();
precios['Articulo1']['Categoria5']=10000;
precios['Articulo1']['Categoria4']=20000;
precios['Articulo1']['Categoria3']=30000;
precios['Articulo1']['Categoria2']=40000;
precios['Articulo1']['Categoria1']=50000;
function getPrecioArt(desdeArticulo, desdeCat, hastaArticulo, hastaCat){
//Validacion
if(desdeArticulo>=hastaArticulo){
if(desdeArticulo==hastaArticulo && desdeCat<hastaCat){
return false;
}
//suma
var total=0;
for(var i=desdeArticulo; i>=hastaArticulo; i--){
var desde=(i==desdeArticulo)?desdeCat:5;
var hasta=(i==hastaArticulo)?hastaCat:1;
for(var j=desde; j>=hasta; j--){
total+=precios['Articulo'+i]['Categoria'+j];
}
}
return total;
}else{
return false;
}
}
alert(getPrecioArt(2,4,2,4)); //2000
alert(getPrecioArt(3,3,2,4)); //4200
alert(getPrecioArt(3,3,3,4)); //false
</script>