ddaproduction / evocms-commerce-coupons
商业模块的优惠券组件
dev-master
2021-10-12 14:16 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
This package is auto-updated.
Last update: 2024-09-12 20:36:23 UTC
README
用于创建和使用商业模块优惠券的包,在很大程度上受到webber12/CommerceCoupons扩展的启发。
安装
- php artisan package:install require ddaproduction/evocms-commerce-coupons "*"
- php artisan vendor:publish --provider="EvolutionCMS\EvocmsCommerceCoupons\EvocmsCommerceCouponsServiceProvider"
- php artisan migrate
- 在订单表单中添加优惠券添加块
@include('CommerceCoupons::form')
功能
- 自动生成优惠券
- 手动创建优惠券
- 限制优惠券的有效期和可以使用的用户
- 活动和无效优惠券
- 使用限制(如果设置为0,则为无限使用)
处理多语言
在相应的语言文件夹中创建文件,并可以覆盖所需的值(core/lang/vendor/CommerceCoupons/ru/main.php)。
计算折扣
В плагин OnCollectSubtotals добавляем следующий код:
Event::listen('evolution.OnCollectSubtotals', function ($params) use ($deliveries) {
...
if(isset($_SESSION['CommerceCoupon'])){
$coupon = $_SESSION['CommerceCoupon'];
$discountValue = floatval($coupon['discount_value']);
// если скидка задана числом
if($coupon['discount_type'] == 'amount'){
$discount = $discountValue;
}
//если скидка задана в процентах
elseif($coupon['discount_type'] == 'percent'){
$discount = round(($params['total']) * $discountValue / 100);
}
// пересчитываем результат с учетом скидки
$params['total'] -= $discount;
// фомируем массив с данными необходимыми нам для отображения
$params['rows']['coupons'] = [
'main_title' => \Lang::get('CommerceCoupons::main.subtotal_title',['coupon'=>$coupon['coupon']]),
'price' => -$discount
];
}
...
})
В зависимости от того что должна включать в себя скидка, вы вставляеете этот код или до, или после того как вы посчитаете свои subtotals (доставку например). То есть вы можете посчитать все что вам необходимо без учета скидки разместив этот код в начале плагина, или же наоборот, посчитать скидку в самом конце и тогда она будет включать в себя все что вы добавити в subtotals (включая например доставку).
限制
- 需要MySQL版本 >=5.6
- 需要PHP版本 >=7.4