作为x-cart的结构,orderid是在提供者的基础上创建的。有三种情况
- 如果客户从一个供应商处购买2种不同的商品,则订单ID为1,商品ID为2。
- 如果客户从一个供应商处购买两个相同的商品,订单ID和商品ID都将为1,商品ID的金额字段将计为2。
- 当客户从两个不同的供应商处购买两个项目时,订单ID和项目ID都将不同
我坚持第三种情况。折扣券有两个范围,可以作为percentage
或flat discount
提供。
- 当我试图给予统一折扣时,这两种产品都在计算,比方说我对价格为500+RS的产品给予200RS的折扣
现在的问题是,有一个循环在计算产品的折扣。因此,当有两个供应商时,两种产品的折扣都将被计算在内,因为将有两个订单ID。
当我试图打破有折扣的循环时。网站崩溃了。没有办法停止循环。因为如果我们要停止一个循环,那么排序数组所需的数据将不在那里,脚本将崩溃。有人面临同样的问题吗?或者有人对此有任何解决方案吗?
我需要的是折扣应该计入购物车小计,而不是产品。我尝试了太多的方法,但还没有找到任何解决方案。如果你们对此有任何想法,请告诉我。
谢谢。
问题的一个自定义解决方案"我需要的是折扣应该计入购物车小计,而不是产品。"可能是辅助隐藏优惠券。
- 应将新的'main_coon'标志添加到xcart_discompt_coupons表中
- 客户将使用一张"主"优惠券total_discount=$10
- X-Cart将在计算中使用2张或更多的"儿童"优惠券。例如couponA=$5和couponB=$5
这是函数_calculate_discloses函数的一段示例代码
//$discount_coupon_data = func_query_first("SELECT * FROM $sql_tbl[discount_coupons] WHERE coupon='" . addslashes($discount_coupon) . "' $provider_condition");
//find related child coupons instead of main coupon
$discount_coupon_data = MultiCoupon::getChildCouponByMainCouponCode($discount_coupon, $provider_condition);
其中MultiCoupon::getChildCouponByMainCouponCode类似于
class MultiCoupon {
public static function getChildCouponByMainCouponCode($main_coupon_code, $provider_condition) {
global $sql_tbl;
$child_discount_coupon_data = func_query_first("SELECT child_coupons.* FROM $sql_tbl[discount_coupons] as child_coupons INNER JOIN $sql_tbl[discount_coupons_links] as main_coupons ON child_coupons.main_code = main_coupons.code AND main_coupons.code='" . addslashes($main_coupon_code) . "' $provider_condition");
return $child_discount_coupon_data;
}
}
也就是说,您应该将基于一个优惠券代码的优惠券数据替换为基于提供商的多个优惠券。