Cómo agregar el costo de envío por encontrar el tamaño más grande con PHP?

StackOverflow https://stackoverflow.com/questions/2036578

  •  19-09-2019
  •  | 
  •  

Pregunta

En el momento que añadir los gastos de envío 65Kr.

Hay sólo cuatro precios de la tienda.

Es necesario cambiar los gastos de envío de la siguiente manera.

Producto que costó 198Kr y 268Kr necesita 25Kr y más de ese precio (418 y 498Kr) necesita 65Kr.

Si un cliente compra 198Kr y 418kr, entonces ella tiene que pagar 65Kr. Esto significa que si hay un elemento que necesita 65Kr, a continuación, el envío será 65Kr.

Si un cliente compra 198Kr y 268Kr, entonces ella tiene que pagar 25Kr.

No estoy seguro de cómo añadir este envío al costo total.

Yo uso el siguiente código para actualizar el precio total.

Y agrego 65Kr en la caja.

function updateCart($productid,$fullproduct){
    $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();

$productid = id_clean($productid);
$totalprice = 0;
if (count($fullproduct)){
    if (isset($cart[$productid])){
        $prevct = $cart[$productid]['count'];
        $prevname = $cart[$productid]['name'];
        $prevprice = $cart[$productid]['price'];
        $cart[$productid] = array(
                'name' => $prevname,
                'price' => $prevprice,
                'count' => $prevct + 1
                );
    }else{
        $cart[$productid] = array(
                'name' => $fullproduct['name'],

'price' => $fullproduct['price'],
'count' => 1
                );          
    }

foreach ($cart as $id => $product){
    $totalprice += $product['price'] * $product['count'];
    }       

    $_SESSION['totalprice'] = $totalprice;
    $_SESSION['cart'] = $cart;
    $msg = $this->lang->line('orders_added_cart');
    $this->session->set_flashdata('conf_msg', $msg); 
}
}

en la caja

...
$shipping= 65;
$grandtotal = (int)$totalprice + $shipping;
...

Como se puede ver que puedo utilizar la sesión para realizar un seguimiento de su tamaño o precio. Así que creo que puedo usarlos para encontrar el precio final del envío.

apreciaré ninguna mano de ayuda.

Gracias de antemano.

¿Fue útil?

Solución

En el carrito iteración que calcula el precio total

foreach ($cart as $id => $product){
   $totalprice += $product['price'] * $product['count'];
} 

también calcular el precio de envío y colocarlo en la sesión también.

$shippingprice = 25.0;
foreach ($cart as $id => $product){
   $totalprice += $product['price'] * $product['count'];
   if ( $product['price'] > 268 ){
       $shippingprice = 65.0;
   }
} 

Otros consejos

Me gustaría utilizar algo como:

function updateCart($productid,$fullproduct)
{ 
  $cart       = isset($_SESSION['cart']) ? $_SESSION['cart'] : array(); 
  $productid  = id_clean($productid); 
  $totalprice = 0;
  if (count($fullproduct))
  { 
    if (isset($cart[$productid]))
    { 
      $prevct = $cart[$productid]['count']; 
      $prevname = $cart[$productid]['name']; 
      $prevprice = $cart[$productid]['price']; 
      $cart[$productid] = array( 
            'name' => $prevname, 
            'price' => $prevprice, 
            'count' => $prevct + 1 
            ); 
    }
    else
    { 
      $cart[$productid] = array( 
            'name' => $fullproduct['name'], 
            'price' => $fullproduct['price'], 
            'shipping' => $fullproduct['shipping']
            'count' => 1 
            );           
    } 

    $shipping = 0;
    foreach ($cart as $id => $product)
    { 
      $shipping = $shipping < $product['shipping'] ? $product['shipping'] : $shipping;
      $totalprice += $product['price'] * $product['count']; 
    }        

    $_SESSION['totalprice'] = $totalprice; 
    $_SESSION['cart']       = $cart; 
    $_SESSION['shipping']   = $shipping;

    $msg = $this->lang->line('orders_added_cart'); 
    $this->session->set_flashdata('conf_msg', $msg);  
  } 
} 

De esta manera usted puede tener cualquier precio del envío y se le cobrará solamente la más alta.

Sin embargo esta manera sólo se tiene en cuenta el precio de envío para un artículo. Me gustaría tener en cuenta el número o artículos también. Debido a que el costo de envío del cambio al enviar un producto y al enviar cien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top