嘿,我想在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;
}发布于 2017-11-11 15:02:40
这是针对版本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;
}这将跳过对有特价的产品应用折扣,而将适用于购物车中的其他产品。
发布于 2018-12-17 17:58:33
感谢你的代码,它工作得很好,但当我添加这段代码时,我注意到出现了另一个bug。当我添加未销售的产品和正在销售的产品时,折扣值不正确。优惠券价值类型设置为固定价格。示例:折扣券-20美元产品1-10美元-特价产品2-20美元-特价产品3-100美元-非特价产品
折扣券价值在结账时显示为:-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'];
}发布于 2020-04-04 22:08:09
如果你寻找foreach ($this->cart->getProducts() as $product) {,你需要在if (in_array($product['product_id'], $coupon_info['product'])) {之后再次添加上面相同的代码。
https://stackoverflow.com/questions/47224770
复制相似问题