如果数量超过特定数量,请在结帐时覆盖所有产品价格

时间:2013-05-03 13:45:58

标签: php opencart

我的商店在$ 25销售所有商品。然后我想根据客户结账时的总产品数量做一些折扣。

如果客户购买的总数量超过50,则每种产品的每个产品价格将从$25覆盖到$22

如下所示:

if (total_quantity > 80) {
   price for each product is $19
}

elseif (total_quantity > 50) {
  price for each product is $22
}
else {
  normal price
}

现在我可以在客户结账时使用$this->cart->countProducts()检测总数量,但现在我不确定如何超出价格(我确定这与文件控制器\ checkout \ confirm.php相关 )。

希望有人可以指导我。

更新:

现在我可以根据总数量过滤所有产品价格:

if ($this->cart->countProducts() > 3) {
    $product_price = '24.00';
}
elseif ($this->cart->countProducts() > 2) {
    $product_price = '23.00';
}
else {
    $product_price = $product['price'];
}

$this->data['products'][] = array(
    'product_id' => $product['product_id'],
    'name'       => $product['name'],
    'model'      => $product['model'],
    'option'     => $option_data,
    'quantity'   => $product['quantity'],
    'subtract'   => $product['subtract'],
    'price'      => $this->currency->format($this->tax->calculate($product_price, $product['tax_class_id'], $this->config->get('config_tax'))),
    'total'      => $this->currency->format($this->tax->calculate($product_price, $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']),
    'href'       => $this->url->link('product/product', 'product_id=' . $product['product_id'])
); 

但现在我不知道在哪里覆盖小计和总数。

p / s:所有产品价格固定为25美元

OC版:最新版

2 个答案:

答案 0 :(得分:0)

这更像是寻找用法和方法的答案,而不是直接的具体答案。

如果您不确定如何使用某个对象可用的方法/变量,请尝试使用类似的方法输出它们。

<?php
echo "<pre>";
print_r(get_class_methods($objectName));
print_r(get_object_vars($objectName));
echo "</pre>";
?>

它将显示可用方法的列表。它可能有一个名为setPrice()之类的方法或类似的东西,至少它会让你更深入地了解一些可用的选项?

答案 1 :(得分:0)

这是我的解决方案:

<强>目录/控制器/结帐

$this->data['products'][] = array(之前添加以下代码(第361行)

if ($this->cart->countProducts() > 80) {
    $product_price = '24.00';
}
elseif ($this->cart->countProducts() > 50) {
    $product_price = '23.00';
}
else {
    $product_price = $product['price'];
}

将<{1}}替换为

$this->data['products'][] = array(

<强>系统/文库

$this->data['products'][] = array( 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'option' => $option_data, 'quantity' => $product['quantity'], 'subtract' => $product['subtract'], 'price' => $this->currency->format($this->tax->calculate($product_price, $product['tax_class_id'], $this->config->get('config_tax'))), 'total' => $this->currency->format($this->tax->calculate($product_price, $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']), 'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']) ); 之后添加以下代码(第22行)

if (!$this->data) {

将此//Count how many product in cart $total_quantity = $this->session->data['cart']; $total_product_in_cart = 0; foreach ($total_quantity as $t_q) { $total_product_in_cart += $t_q; } $total_product_in_cart; (第173行)与

重新联系起来
$price = $product_query->row['price'];