Foros del Web » Programando para Internet » PHP »

Calculadora precios

Estas en el tema de Calculadora precios en el foro de PHP en Foros del Web. Buenas a todos, os cuento lo que necesito. Estoy montando una pagina de envios y lo que necesito basicamente es una calculadora que con unas ...
  #1 (permalink)  
Antiguo 21/03/2013, 14:48
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Calculadora precios

Buenas a todos,

os cuento lo que necesito. Estoy montando una pagina de envios y lo que necesito basicamente es una calculadora que con unas variables te de un precio.

Estas variables son peso y tamaño. Dentro del tamaño, serian 3: alto, largo y ancho.

El problema viene en que el tamaño tiene un valor maximo de por ejemplo 150 cm en total. Por encima del cual habria que calcular un incremento en el peso de x*y*z/6000 por ejemplo, lo que haria un incremento en peso. De esta manera el peso obtenido seria el peso real + el peso en exceso, y este daria un precio.

Basicamente seria asi, segun el tipo de envio que elijas: rapido, economico (en envios nacionales)
o el pais (en envios internacionales). Al meterle las variables te de un precio.

A ver si podeis echarme una mano a programarlo.

Un saludo y muchas gracias
  #2 (permalink)  
Antiguo 21/03/2013, 16:55
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Calculadora precios

umm... no es que me de flojera ayudarte o pensar, a veces tratamos de ayudar con cosas que están a la mano y que ya tenemos resueltas en la mente o ya la hicimos o conocemos.. esto implica sentarse y pensarlo un buen tiempo, por ende te propongo que uses una especie de pseudocodigo básico como para ir comprendiendo mejor el problema, así despues será mas facil desarrollar el script y optimizarlo...

que tal si empezas con algo como

DATOS:

Alto
Ancho
Profundidad

area maxima 150cm

Precios
1cm = $0,5
1cm excedente = $0,3

Formula de área de cubo
6*arista al cuadrado

formula de area de un prisma rectangula
2*profundidad + 2*largo + 2*ancho

conocer excedente

total area - total area permitida o vice versa...


TOdo esto sería bueno que lo desarrolles y asi ir creando el script..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 22/03/2013, 04:40
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

Buenas, gracias por contestar. Me pongo manos a la obra.

Voy a dejar de lado del paquete de 150cm máximo porque de por sí, es bastante grande 50x50x50, y si excede en 10 o 15 centimetros apenas se va a notar en el precio.

El problema me viene con otra compañía que usa un máximo de 100cm (por ejemplo 30x30x30) y un cálculo de "peso extra" con altoxanchoxlargo / 4000

se podrían usar por cada 5cm de más, añadirle un precio de 0,1 € por ejemplo creo que sería una solución más fácil no?

tal como me has puesto:

5cm excedentes = 0,1€

(total área - total área permitida ) x 0,1€ = precio final

creo que es una idea fantástica y mucho más cómoda.

El problema viene en cómo traduzco esto a php, podriais ayudarme??
  #4 (permalink)  
Antiguo 22/03/2013, 05:12
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

He saco en claro esto, lo único que necesito es traducirlo a idioma php, lo siento pero soy bastante novato en ésto:

- PESO ---------------- X
- TAMAÑO ------------ ato + largo + ancho <= 100

if Tamaño > 100 entonces (Tamaño-100) x 0,1 = Y

if X <= 2 = 3,96
if 3<=X<=5 = 4,11
if 6<=X<=10 = 4,72
if 11<=X<=15 = 5,41

Precio = X + Y

Muchas gracias por ayudarme
  #5 (permalink)  
Antiguo 22/03/2013, 05:19
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Calculadora precios

Antes que nada... podrías explicar porque usas esa lógica de que el tamaño es ato + largo + ancho?? De qué estamos hablando? de Containers? de paquetes? de cajas fuertes? de cajas de pizza? Porque imagino que se trata de un objeto tridimensional, por ende queda aplicarle una formula de área total y eso sale en cm2 (centimetros cuadrados).

Podrías aclararnos esa duda?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 22/03/2013, 07:15
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

Son paquetes, cajas, para una empresa de envíos.

Las dimensiones de un paquete, se medirían así: alto, largo y ancho. Donde el total del paquete no puede exceder de 100 cm, se entiende la suma de las medidas.

El paquete más grande permitido sería: 33.3 + 33.3 + 33.3 o sus variables.



Estoy realizando una página para servicios de paquetería y al igual que en los comparadores de precios que hay por ahí (paclink, genei, etc) necesito que cuando se ponga el peso y el tamaño me de un precio.
  #7 (permalink)  
Antiguo 22/03/2013, 07:32
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Calculadora precios

Cita:
Iniciado por katoncin Ver Mensaje
Son paquetes, cajas, para una empresa de envíos.

Las dimensiones de un paquete, se medirían así: alto, largo y ancho. Donde el total del paquete no puede exceder de 100 cm, se entiende la suma de las medidas.

El paquete más grande permitido sería: 33.3 + 33.3 + 33.3 o sus variables.



Estoy realizando una página para servicios de paquetería y al igual que en los comparadores de precios que hay por ahí (paclink, genei, etc) necesito que cuando se ponga el peso y el tamaño me de un precio.
¿ Estas seguro que "150 cm en total" se refiere literalmente a cm?

Porque si es una empresa de transporte, lo que le interesará es el espacio cúbico para determinar cuanta carga puede almacenar en un camión por ejemplo. También está la variable del peso, pero ya es otra cosa.
  #8 (permalink)  
Antiguo 22/03/2013, 07:34
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Calculadora precios

Disculpa la insistencia y la vuelta en este punto, no es que no se avance, pero me parece un error de concepto que después puede resultar fatal porque alto+ancho+largo no se obtiene una medición exacta de un prisma 3D rectangular o cuadrangular... es lo mismo que me preguntes cuantos litros de agua caben en una piscina, y yo haga una medición del perímetro y te diga que entran 20 litros porque me salio un perimetro de 20 metros...

A menos que la empresa sea la que estipule el cobro de esa manera... Incluso para un cartel publicitario se cobra por cm2 (centimetro cuadrado) que es una manera estandar de dimensionar los objetos.

Comenta al respecto por favor. Asi me quito la duda.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 22/03/2013, 07:59
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Calculadora precios

Si es solo asi como me dices puede resultar una formula básica como esta, aunque seguro que se puede optimizar mejor con la ayuda de la BD y otro tipos de calculos complejos.. esto es un esquema, no es PHP

Código PHP:
$avariable get;
$lvariable get;
$hvariable get;

$pesovariable get;

$precio_normal0.2;

precio_excedente0.1;

$precio_x_peso0.1;

$precio_peso_excedido0.05;

$limite500;


##############################

$paquete_size= ($a $l $h);


if(
$paquete_size $limite){
  
          
$excedente = ($paquete_size $limite);
 
          
$precio_sin_recargo = ($limite*$precio_normal);

          
$precio_excedido= ($excedente*precio_excedente);

          
$total_paquete = ($precio_sin_recargo $precio_excedido)

}else{

          
$total_paquete = ($paquete_size $precio_normal)


}

//IDEM PARA PESO


$total_a_pagar= ($total_paquete $total_peso); 
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #10 (permalink)  
Antiguo 22/03/2013, 11:23
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

Buenas de nuevo, no te preocupes por la insistencia. Sé que puede resultar extraño pero es específicamente así como la empresa de transporte me ha dicho que lo hacen,

que sumando el largo+alto+ancho no superen los 100 cm. El exceso a este tamaño se calcula con la formula:

x*y*z/4000

(los valores varían según la empresa, pero todas lo hacen igual).

- No entiendo el valor $limite= 500 (supongo lo habrás puesto por probar, igual que el 0.2)

Muchas gracias
  #11 (permalink)  
Antiguo 22/03/2013, 12:00
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Calculadora precios

$limite es la medida máxima que puede tener el paquete, antes que se le cobre el excedente... tu habias propuesto un numero de 150cm por ejemplo.. bueno, mi ejemplo es de 500cm, eso ya varía dependiendo de la medida real...

lo de 0.1 0.2 y asi, son los precios en euros, es decir, los cambias a la cotizacion real del servicio o item... espero que sea un avance... ni lo he probado.. pero si te resulta la logica, esperemos que se puede crear lo que necesitas.

y si esa es la formula, pues sería:

$paquete_size/4000
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #12 (permalink)  
Antiguo 22/03/2013, 12:26
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

me parece perfecto,

como lo traduzco ahora en php para que al rellenar el formulario en el html y pulsar precio me salga el resultado del calculo?

He trabajado un poco sobre la base que me has dado, a ver que te parece:

Código PHP:
<?php

$alt
'alto';
$lar'largo';
$anc'ancho';

$peso'peso';

$precio_normal4.50;

$precio_excedente0.01;

$precio_x_peso0.01;

$precio_peso_excedido0.05;

$limite100;


##############################

$tamaño= ($alt $lar $anc);


if(
$tamaño $limite){
  
          
$excedente = ($tamaño $limite);

          
$precio_excedido= ($excedente*$precio_excedente);

          
$total_paquete = ($precio_normal $precio_excedido)

}else{

          
$total_paquete = ($tamaño $precio_normal)


}

<?
lo único que me faltaría ahora es todo el tema de los pesos:

if X <= 2 = 3,96
if 3<=X<=5 = 4,11
if 6<=X<=10 = 4,72
if 11<=X<=15 = 5,41

que no tengo ni idea de como hacer para que los calcule

Gracias!

Última edición por katoncin; 22/03/2013 a las 12:50
  #13 (permalink)  
Antiguo 31/03/2013, 14:25
 
Fecha de Ingreso: marzo-2013
Ubicación: cadiz
Mensajes: 30
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Calculadora precios

vuelvo a darle una subida a esto a ver si alguien puede ayudarme.

Código PHP:
<?php

$alto
'alto';
$largo'largo';
$ancho'ancho';

$peso'peso';

//no sé si esto funciona, sino habría que sustituir cada X por $peso
$peso=x

$alto
+$largo+$ancho==y

if ($y<=100)

$precioincremento 0

elseif ($y 100)
{
    
$precioincremento $y-100 0.1;
}
if(
$_POST['tipo']=="sobre"){
          if(
$_POST['distancia']=="provincial"){
          
$precio+="4,50";}
                if(
$_POST['peso']>2){
                        
$_POST['total']="Lo sentimos. En esta opción el paquete no puede ser mayor a 2 kg, escoja la opción de paquetes mayores a 2 kg. Gracias.";}
         elseif(
$_POST['distancia']=="regional"){
             
$precio+="4,80";}
            if(
$_POST['PESO']>2){
                        
$precio="Lo sentimos. En esta opción el paquete no puede ser mayor a 2 kg, escoja la opción de paquetes mayores a 2 kg. Gracias.";}
        elseif(
$_POST['distancia']=="nacional"){
             
$precio+="5,50";}
            if(
$_POST['peso']>2){
                        
$precio="Lo sentimos. En esta opción el paquete no puede ser mayor a 2 kg, escoja la opción de paquetes mayores a 2 kg. Gracias.";}
                        }
                        
                        
$preciofinal $precio $precioincremento
                        
if ($_POST ['tipo']=="economico") {                        

//No tendría sentido el de X menor a 2, pero lo dejo de momento por si cambiaran los precios.
 
if($_POST['distancia']=="provincial"){
 
if (
$x<=2$x=4.50;
if (
$x<=&& $x>=2.1$x=4.60;
if (
$x<=10 && $x>=5.1$x=4.72;
if (
$x<=11 && $x>=10.1$x=5.41;

}

// No sé si habría que poner el $preciofinal en cada uno o sirve poniendolo sólo al final

if($_POST['distancia']=="regional"){
 
if (
$x<=2$x=4.65;
if (
$x<=&& $x>=2.1$x=4.70;
if (
$x<=10 && $x>=5.1$x=4.90;
if (
$x<=11 && $x>=10.1$x=5.61;

}

if(
$_POST['distancia']=="nacional"){
 
if (
$x<=2$x=4.85;
if (
$x<=&& $x>=2.1$x=4.90;
if (
$x<=10 && $x>=5.1$x=5.50;
if (
$x<=11 && $x>=10.1$x=6.20;

}

if (
$_POST ['tipo']=="urgente") {                        


if (
$x<=2$x=5.5;
if (
$x<=&& $x>=2.1$x=6.60;
if (
$x<=10 && $x>=5.1$x=7.72;
if (
$x<=11 && $x>=10.1$x=8.41;

}


$preciofinal $x $precioincremento

<?

Última edición por katoncin; 01/04/2013 a las 03:27

Etiquetas: calculadora, precios, variables
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 19:15.