优惠券发行在x-cart
Discount Coupon issue In x-cart
作为x-cart的结构,orderid是在供应商的基础上创建的。有 3 种情况。:
- 如果客户从一家供应商处购买 2 件不同的商品,则 orderid 将为 1,itemid 将为 2。
- 如果客户从一个供应商处购买 2 件相同的商品,则 orderid 和 itemid 均为 1,itemid 的金额字段将被计为 2。
- 当客户从 2 个不同的供应商处购买 2 件商品时,orderid 和 itemid 将不同。
我卡在了第三种情况。折扣券有2个范围,你可以给它percentage
或flat discount
。
- 当我尝试提供固定折扣时,它对两种产品都有效,假设 我对价格超过 500 卢比的产品提供 200 卢比的折扣。
现在的问题是有一个计算产品折扣的循环。所以当有 2 个供应商时,两种产品都会计算折扣,因为会有 2 个 orderids。
当我试图在有折扣时打破循环。该网站正在崩溃。没有办法停止循环。因为如果我们停止循环,那么排序数组所需的数据将不存在,脚本将崩溃。有人遇到同样的问题吗?或者有人对此有任何解决方案吗?
我需要的是折扣应该计入购物车小计,而不是产品。尝试了太多东西,但还没有找到任何解决方案。如果你们有什么想法,请告诉我。
谢谢。
问题的一个自定义解决方案
"what I need is discount should be counted on cart subtotal, not on products."可能是辅助隐藏券。
- 应将新的 'main_coupon' 标志添加到 xcart_discount_coupons table
- 客户将使用一张 'main' 优惠券 total_discount=$10
- X-Cart 将在计算中使用 2 张或更多 'child' 优惠券。例如优惠券 A=$5 和优惠券 B=$5
这是func_calculate_discounts函数的一段示例代码
//$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;
}
}
即您应该将基于一个优惠券代码的优惠券数据替换为基于供应商的多个优惠券。
作为x-cart的结构,orderid是在供应商的基础上创建的。有 3 种情况。:
- 如果客户从一家供应商处购买 2 件不同的商品,则 orderid 将为 1,itemid 将为 2。
- 如果客户从一个供应商处购买 2 件相同的商品,则 orderid 和 itemid 均为 1,itemid 的金额字段将被计为 2。
- 当客户从 2 个不同的供应商处购买 2 件商品时,orderid 和 itemid 将不同。
我卡在了第三种情况。折扣券有2个范围,你可以给它percentage
或flat discount
。
- 当我尝试提供固定折扣时,它对两种产品都有效,假设 我对价格超过 500 卢比的产品提供 200 卢比的折扣。
现在的问题是有一个计算产品折扣的循环。所以当有 2 个供应商时,两种产品都会计算折扣,因为会有 2 个 orderids。
当我试图在有折扣时打破循环。该网站正在崩溃。没有办法停止循环。因为如果我们停止循环,那么排序数组所需的数据将不存在,脚本将崩溃。有人遇到同样的问题吗?或者有人对此有任何解决方案吗?
我需要的是折扣应该计入购物车小计,而不是产品。尝试了太多东西,但还没有找到任何解决方案。如果你们有什么想法,请告诉我。
谢谢。
问题的一个自定义解决方案 "what I need is discount should be counted on cart subtotal, not on products."可能是辅助隐藏券。
- 应将新的 'main_coupon' 标志添加到 xcart_discount_coupons table
- 客户将使用一张 'main' 优惠券 total_discount=$10
- X-Cart 将在计算中使用 2 张或更多 'child' 优惠券。例如优惠券 A=$5 和优惠券 B=$5
这是func_calculate_discounts函数的一段示例代码
//$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;
}
}
即您应该将基于一个优惠券代码的优惠券数据替换为基于供应商的多个优惠券。