嘿我想禁用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;
}
答案 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'])) {
之后添加上面相同的代码。