在Opencart

时间:2017-11-10 14:16:00

标签: php opencart conditional-statements product price

嘿我想禁用Opencart中的促销产品优惠券。

我找到了优惠券代码,这里是" if-s"当优惠券不起作用时...我必须在这里添加产品打折时的条件$status = false;

但我不知道如何检查产品是否有特价......

if ($coupon_query->row['total'] > $this->cart->getSubTotal()) {
    $status = false;
}
$coupon_history_query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "coupon_history` ch WHERE ch.coupon_id = '" . (int)$coupon_query->row['coupon_id'] . "'");

if ($coupon_query->row['uses_total'] > 0 && ($coupon_history_query->row['total'] >= $coupon_query->row['uses_total'])) {
    $status = false;
}

if ($coupon_query->row['logged'] && !$this->customer->getId()) {
    $status = false;
}

3 个答案:

答案 0 :(得分:2)

这适用于版本2.3.0.2

在您的文件catalog/model/extension/total/coupon.php中查找函数public function getTotal($total)

旁边的

$this->load->language('extension/total/coupon');

添加

$this->load->model('catalog/product');

接下来在同一个功能中搜索$discount = 0;。在$discount = 0;添加

之前
$product_details = $this->model_catalog_product->getProduct($product['product_id']);
if($product_details['special']) {
    continue;
}

这将跳过对具有特殊价格的产品应用折扣,并将在购物车中申请其他产品。

答案 1 :(得分:0)

感谢代码,它可以很好地工作,但是当我添加代码时,我注意到出现了另一个错误。当我添加非促销产品和促销产品时,折扣值不正确。优惠券价值的类型设置为固定价格。 范例: 优惠券-20USD 商品1-10USD-促销中 商品2-20USD-促销中 商品3-100USD-不在销售中

折扣优惠券价值出现在结帐中,如-17,65之类。 这是我在coupon.php中所做的支票

if ($status) {
  if ($coupon_info['type'] == 'F') {
    $discount = $coupon_info['discount'] * ($product['total'] / $sub_total);
  } elseif ($coupon_info['type'] == 'P') {
    $discount = $product['total'] / 100 * $coupon_info['discount'];
}

答案 2 :(得分:0)

如果您寻找foreach ($this->cart->getProducts() as $product) {,则需要再次在if (in_array($product['product_id'], $coupon_info['product'])) {之后添加上面相同的代码。