$orderId = $data['order_id'] ?? null;
$phone = $data['phone'] ?? null;
$pointsToUse = $data['points_to_use'] ?? null;
+ $date = $data['date'] ?? null;
+ $price = $data['price'] ?? null;
if (!$orderId || !$phone) {
return $this->asJson(['error' => ['code' => 400, 'message' => 'Недостаточно параметров']]);
return $this->asJson(['error' => ['code' => 403, 'message' => 'Недостаточно бонусов для списания']]);
}
- $sale = Sales::find()
- ->andWhere(['number' => $orderId])
- ->andWhere(['phone' => $phone])
- ->andWhere(['operation' => 'Продажа'])
- ->one();
-
- if (!$sale) {
- return $this->asJson(['error' => ['code' => 404, 'message' => 'Продажа не найдена']]);
- }
-
if (UsersBonus::find()
->andFilterWhere(['phone' => $phone])
->andFilterWhere(['user_id' => $clientId])
->leftJoin('bonus_levels bl', 'bl.alias = ubl.bonus_level')
->andFilterWhere(['user_id' => $clientId])
->andFilterWhere(['phone' => $phone])
- ->andFilterWhere(['check_id' => $sale->id])
->andFilterWhere(['ubl.active' => 1])
->select('cashback_rate')
->scalar();
$userBonus->name = $comment ?? sprintf(
'Спиcание бонусов %s%% по чеку %s от %s. Сумма чека %s',
$salePercent,
- $sale->number,
- date('d.m.Y H:i:s', strtotime($sale->date)),
- $sale->summ
+ $orderId,
+ date('d.m.Y H:i:s', strtotime($date)),
+ $price
);
$userBonus->date = date('Y-m-d H:i:s');
$userBonus->site_id = 1;
$userBonus->tip = 'minus';
$userBonus->tip_sale = 'sale';
$userBonus->user_id = $clientId;
- $userBonus->check_id = $sale->id;
- $userBonus->price = $sale->summ;
- $userBonus->store_id = $sale->store_id;
+ $userBonus->check_id = $orderId;
+ $userBonus->price = $price;
$userBonus->bonus = $pointsToUse;
- $userBonus->date_start = $sale->date;
- $userBonus->date_end = date('Y-m-d H:i:s', strtotime('+365 day', strtotime($sale->date)));
+ $userBonus->date_start = $date;
+ $userBonus->date_end = date('Y-m-d H:i:s', strtotime('+365 day', strtotime($date)));
try {
if (!$userBonus->save()) {