@Luchifer

Скидка пользователя + скидка товара не могу разобраться? (?

Привет у мне такое не стандартное проблема уже неделя не могу решать его добрые люди помогите пожалуйста ?(
Онлайн магазин : так у мне есть пользователи с категориями ( А , В , С , Д, Е ) и без категории . которые А есть 5 % . В 4 % и тогда ли , скидка эту сделал все работает . Есть и еще товары с скидкой допустим есть товар которого 50 % скидка . заказчик хочет что если у товора есть скидка ползователски скидка не работал дело в том что я сделал скидку на обшую сумму когда ползователь покупет чтота . так допустим человек с категорией А (5% скидка ) 2 машину + 3 квартиру + шоколад (50 % скидкой ) 5 % сработал на машину и квартиру а для шоколад нет
  • Вопрос задан
  • 278 просмотров
Пригласить эксперта
Ответы на вопрос 4
Во-первых, приучите себя писать чуть медленнее и это время отправить на формирование мысли, потому что половину текста приходится ванговать.

Идем дальше, вам достаточно каким-то образом помечать товар, на который уже есть скидка. И если товар уже со скидкой, то пользовательскую не учитываем. Помечать товары можно многими способами, будь то запись бд или исходя из вашей структуры.
Ответ написан
zoozag
@zoozag
Opencart
В чем собственно проблема то?
я сделал скидку на обшую сумму

Сделайте начисление скидки на каждый товар с проверкой, подходит ли он для скдидки. В будущем у вас могут появится и другие условия, при которых скидка не начисляется.
Ответ написан
erniesto77
@erniesto77
oop, rb, py, php, js
идея складывать скидки, если их больше 1, то просто прибавляем
очень примерно:
$percent = $product->getDiscount();
if ($user->hasDiscount()) {
    $percent = $percent + $user->getDiscount();
}


UPDATE:
# $order это общий заказ, в котором может быть несколько покупок $product

$totalOrderPrice = 0;

foreach ($order->products as $product) {
	$totalOrderPrice = $totalOrderPrice + $product->getTotalPrice(); // getTotalPrice надо создать в модели Product. Эта функция должна возвращать сумму товара с учетом всех скидок
}
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Надо прежде определиться с:
  • порядком начисления скидок
  • действуют ли скидки пользователя при наличии скидки товара
  • возможно выбирается большая из них

Это все бизнес вопросы, а не вопросы программирования, Вы у заказчика уточните это, а потом уже реализовывайте
2. У Вас заказ скорее всего имеет сущность "order" и связанные сущности "order_item". Если это не так, то еще раз задумайтесь, почему Вы так не сделали. Поэтому расчет должен идти для каждой "order_item" получая в результате некую стоимость, допустим перед сохранением
public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
            $this->item_cost = $this->product->base_price * $this->item_count * $this->getDiscount($user_id);
            return true;
        } else {
            return false;
        }
    }

getDiscount содержит логику просчета скидки зависимо от пользователя и скидки товара и логики расчета выданной Вам заказчиком.
А для сущности "order" просто считаете сумму стоимости всех "order_item"
3. Возможно нужно реализовать несколько механизмов и выбор одного из них вынести в настройки или давать возможность указывать для каждого товара, которому назначается скидка. Будет сложнее, но более гибко и удобнее пользователю. Тогда в getDiscount будет switch case зависимый от какого-нибудь Yii::$app->setting->get('discount-type') или $this->product->discountType
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы