private static $CREDIT_HIGH_PROCENT = 0.3;
private static $CREDIT_HIGH_PROCENT_PART20 = 0.2;
+ const OUT_DIR =
+ "/var/www/erp24/api2/json";
+
public function actionGetBonuses()
{
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$data = file_get_contents('php://input');
$result = json_decode($data, true);
+ $fl = date('_Y_m_d__H_i_s_');
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
$__API_PARAMS = ['store_id', 'seller_id', 'phone']; // check_amount, items
foreach ($__API_PARAMS as $paramName) {
return $this->asJson(["error_id" => 0, "error" => "$paramName is required"]);
}
}
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$phone = ClientHelper::phoneClear($result['phone']);
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!ClientHelper::phoneVerify($phone)) {
return $this->asJson(["error_id" => 0.2, "error" => "phone is required"]);
}
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$result['phone'] = $phone;
$check_amount = intval($result['check_amount'] ?? 0);
$mess = [];
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
// массив с id товарыми не участвующих в бонусной
$items_arr_no = array_values(ArrayHelper::map(
UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
// $items_arr_no = [];
// $items_arr_no[] = "a3d4e24f-3373-11e9-babd-408d5cd22d1e";
// $items_arr_no[] = "40148db7-f9b2-11eb-af2b-98eecb8ceff8";
$all_amount += $item["price"] * $item["quantity"];
}
}
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$baza = $all_amount - $summa_no;
$check_amount = $check_amount - $summa_no;
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$cnt = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])->count());
$max_procent = $cnt == 0 ? self::$FIRST_SALE_PROCENT : ($cnt == 1 ? self::$SECOND_SALE_PROCENT : self::$MAX_PROCENT);
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$percent = ($result['phone'] == "79049031399") ? 0.9 : $max_procent;
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userFound = Users::find()->where(['phone' => $result['phone']])->one();
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
/** @var $userFound Users */
$salesCount = 0;
if ($userFound && $userFound->telegram_created_at) {
$salesCount = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])
->andWhere(['>=', 'date', $userFound->telegram_created_at])->count());
}
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$credit_procent = $userFound && $userFound->source > 0 && $salesCount == 0 ? self::$CREDIT_HIGH_PROCENT : self::$CREDIT_PROCENT;
$will_be_credited_bonuses = $credit_procent * $baza;
$will_be_credited_bonuses = round($will_be_credited_bonuses);
$mess["will_be_credited_bonuses"] = $will_be_credited_bonuses;
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$store_id = ClientHelper::getExportId($result['store_id'], "city_store", 1);
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
// Логи введённых номеров телефонов кассирами
$userPhone = UsersPhones::find()->where(['phone' => $result['phone']])->andWhere(['store_id' => $store_id])
->andWhere(['seller_id' => $result['seller_id']])->one();
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!$userPhone) {
$userPhone = new UsersPhones;
$userPhone->phone = $result['phone'];
if (!$userPhone->store_guid) {
$userPhone->store_guid = $result['store_id'];
}
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userPhone->date = date('Y-m-d H:i:s');
$userPhone->save();
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($userPhone->getErrors()) {
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 1, "error" => $userPhone->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 1, "error" => $userPhone->getErrors()]);
}
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->one();
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!$user) {
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '-нет в бонусной программе-' . __LINE__, FILE_APPEND);
$mess["new_client"] = true;
$mess["message_cashier"] = "Заполните данные клиента";
$mess["error"] = "Покупателя " . $result['phone'] . " нет в бонусной программе!";
return $this->asJson($mess);
}
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$keycode = $user->keycode;
$black_list = $user->black_list;
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!$black_list) {
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$stop = UsersStopList::find()->select(['phone'])->where(['phone' => $result['phone']])->one();
if ($stop) {
$black_list = 1;
$user->black_list = 1;
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user->save();
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($user->getErrors()) {
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 3, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 3, "error" => $user->getErrors()]);
}
}
}
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$name = $user->name;
$user_balans = ClientHelper::getBonusBalance($result['phone']);
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($baza < 0) {
$baza = 0;
}
// $baza = $check_amount - $bonus;
$mess["message_cashier"] = "Клиент $name найден"; // Код: $keycode
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($black_list) {
$mess['error'] = 'Этот номер в черном списке';
$mess["total_bonuses"] = $user_balans;
$mess["available_bonuses"] = $available_bonus;
$mess["message_cashier"] = $txt . " Спросите последние 4 цифры телефона который позвонит клиенту $user_balans";
-
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
+ file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
return $this->asJson($mess);
}
$data = file_get_contents('php://input');
$result = json_decode($data, true);
+ $fl = date('_Y_m_d__H_i_s_');
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
+
$__API_PARAMS = ['store_id', 'seller_id', 'phone']; // first_name, second_name, sex, birth_day, referral_id, comment, events
foreach ($__API_PARAMS as $paramName) {
return $this->asJson(["error_id" => 1, "error" => "$paramName is required"]);
}
}
-
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$phone = ClientHelper::phoneClear($result['phone']);
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!ClientHelper::phoneVerify($phone)) {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
return $this->asJson(["error_id" => 1.2, "error" => "phone is required"]);
}
$result['phone'] = $phone;
// }
$mess = [];
-
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
/* @var $user Users */
$user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->andWhere(['black_list' => '0'])->one();
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($user) {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user->referral_id = $referral_id != $user->id ? $referral_id : null;
$user->pol = $sex;
$user->bdate = $birth_day;
$user->keycode = '' . rand(1000, 9999);
$user->source = $source == 2 ? 1 : 0;
$user->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($user->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 2, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 2, "error" => $user->getErrors()]);
}
-
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userEventOld = UsersEvents::find()->where(['phone' => $phone])->orderBy(['date_add' => SORT_ASC])->one();
if ($userEventOld && $userEventOld->date_add < date('Y-m-d H:i:s', time() - 2 * 86400)) { // Дата добавление последнего события не старше двух дней
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$mess["result"] = true;
$mess["message_cashier"] = "Возможность внесения памятных дат ограничена";
return $this->asJson($mess);
}
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$nomer_event = 1;
$dates = [];
+
foreach ($events as $k => $mass) {
$date = $mass["date"] ?? '';
$event_id = intval($mass['event_id'] ?? 0);
$datea = explode("-", $date);
$date_end = date("Y", time() + self::$YEAR_PERIOD * 86400) . "-" . $datea[1] . "-" . $datea[2];
$userEvent2 = UsersEvents::find()->where(['phone' => $phone])->andWhere(['date_day' => $datea[2]])->andWhere(['date_month' => $datea[1]])->one();
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($userEvent2) {
$userEvent2->delete();
}
$userEvent3->date_day = $datea[2];
$userEvent3->date_month = $datea[1];
$userEvent3->date_add = date('Y-m-d H:i:s');
- $userEvent3->tip = '???';
+ $userEvent3->tip = strval('???');
$userEvent3->name = 'М';
$userEvent3->sex = 'm';
$userEvent3->date_edit = date("Y-m-d H:i:s");
- $userEvent3->date_edit_info = '???';
+ $userEvent3->date_edit_info = date("Y-m-d H:i:s");
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userEvent3->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
if ($userEvent3->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 3, "error" => $userEvent3->getErrors()], JSON_UNESCAPED_UNICODE));
$nomer_event++;
}
} else {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$created_name = $seller_id;
$rand = rand(1000, 9999);
$name = "$first_name $second_name";
if ($seller_id_new) {
$seller_id_int = $seller_id_new->entity_id;
}
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
Users::deleteAll(['phone' => $phone, 'phone_true' => '0']);
-
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user2 = new Users;
$user2->source = $source;
$user2->pol = $sex;
- $user2->keycode = '' . $rand;
+ $user2->keycode = strval($rand);
$user2->phone = $phone;
$user2->name = $name;
$user2->name_name = $first_name;
$user2->name_last = $second_name;
$user2->password = $pass;
- $user2->phone_true = '1';
+ $user2->phone_true = strval(1);
$user2->bdate = $birth_day;
$user2->referral_id = $referral_id;
$user2->comment = $comment;
$user2->created_id = $seller_id_int ?? 0;
$user2->created_name = $created_name;
- $user2->seller_id = '' . $seller_id;
+ $user2->seller_id = strval($seller_id);
$user2->store_id = $store_id_guid;
$user2->created_store_id = $store_id_int ?? 0;
$user2->created_store = $created_store;
$user2->setka_id = $setka_id;
$user2->card = "" . ($phone * 2 + 1608 + $setka_id); // генерируем номер карты который зависит от номера сетки + ДР Тимура
$user2->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($user2->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 4, "error" => $user2->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 4, "error" => $user2->getErrors()]);
}
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($store_id == '56524cb1-4763-11ea-8cce-b42e991aff6c') {
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$admin_id = ClientHelper::getExportId($seller_id, "admin", 1);
$usersBonus = new UsersBonus;
$usersBonus->date_start = date('Y-m-d 08:00:00', strtotime('+1 day', strtotime($usersBonus->date)));
$usersBonus->date_end = date('Y-m-d H:i:s', strtotime('+1 week', strtotime($usersBonus->date_start)));
$usersBonus->save();
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($usersBonus->getErrors()) {
-
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 5, "error" => $usersBonus->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 5, "error" => $usersBonus->getErrors()]);
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
+ file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
return $this->asJson($mess);
}
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$data = file_get_contents('php://input');
$result = json_decode($data, true);
+ $resultTest = $result;
+ $fl = date('_Y_m_d__H_i_s_');
+ $json=json_encode($resultTest,JSON_UNESCAPED_UNICODE);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '_info.json', PHP_EOL . '--' . $result['phone']);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '_info.json', ' '.date("d.m.Y H:i:s",time()).' JSON: '.$json.' ', FILE_APPEND);
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$__API_PARAMS = ['store_id', 'seller_id', 'phone', 'check_amount', 'check_id', 'check_name']; // items, auth_code, write_off_bonuses
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
foreach ($__API_PARAMS as $paramName) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (empty($result[$paramName])) {
if ($paramName != 'phone') {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-error-' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 1, "error" => "$paramName is required"], JSON_UNESCAPED_UNICODE));
}
}
}
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$phone = ClientHelper::phoneClear($result['phone']);
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if (!ClientHelper::phoneVerify($phone)) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-error-' . __LINE__, FILE_APPEND);
return $this->asJson(["error_id" => 1.2, "error" => "phone is required"]);
}
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$result['phone'] = $phone;
$result['items'] = $result['items'] ?? [];
$auth_code = $result['auth_code'] ?? 0;
$write_off_bonuses = intval($result["write_off_bonuses"] ?? 0); // только при продаже
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$amount_real = 0;
$items_arr_no = array_values(ArrayHelper::map(
UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$summa_no = 0; //пробегаемся по массиву с товарами и считаем сумму вычета
$amount_all = 0;
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
foreach ($result['items'] as $item) {
if (in_array($item["product_id"], $items_arr_no)) {
$summa_no = $summa_no + $item["price"] * $item["quantity"];
$amount_all = $amount_all + $item["price"] * $item["quantity"];
}
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
$cnt = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])->count());
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$max_procent = $cnt == 0 ? self::$FIRST_SALE_PROCENT : ($cnt == 1 ? self::$SECOND_SALE_PROCENT : self::$MAX_PROCENT);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
// если списывается в попытке больше бонусов чем может списаться -
$percent = $phone == "79049031399" ? 0.9 : $max_procent;
$write_off_bonuses_theory = round($amount_real * $percent);
$mess = [];
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->one();
if (!$user) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$mess["error"] = "Покупателя " . $result['phone'] . " нет в бонусной программе!";
return $this->asJson($mess);
}
- if ($user->keycode != $auth_code) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+ if ($user->keycode != strval($auth_code)) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-auth_code not valid-' . __LINE__ . ' keycode ' .$user->keycode . '| auth_code ' . strval($auth_code), FILE_APPEND);
return $this->asJson(['error' => 'auth_code not valid']);
}
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user_id = $user->id;
// $keycode = $user->keycode;
// $name = $user->name;
// $referral_id = 0;
// }
$ip = $_SERVER['REMOTE_ADDR'];
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user_balans = ClientHelper::getBonusBalance($phone);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
$store_id_1c = $store_id;
$site_id = 0;
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
// получаем внутренний ID продаца - сотрудника из таблицы admin
$admin_id = ClientHelper::getExportId($seller_id, "admin", 1);
// получаем внутренний ID продаца - сотрудника из таблицы admin
$store_id = ClientHelper::getExportId($store_id_1c, "city_store", 1);
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$writeOffAlready = false;
if (!empty($lid_id)) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$writeOffAlready = UsersBonus::find()->where(['lid_id' => $lid_id, 'phone' => $phone, 'tip_sale' => 'sale', 'tip' => 'minus'])->one() != null;
}
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
$user_balans_new = $user_balans;
if ($write_off_bonuses && !$writeOffAlready) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user_balans_new = $user_balans - $write_off_bonuses;
$name_b = "Спиcание бонусов по чеку $check_name";
$usersBonus = new UsersBonus;
$usersBonus->date_start = $usersBonus->date; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
$usersBonus->date_end = $usersBonus->date; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
$usersBonus->date_dell = $usersBonus->date; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
$usersBonus->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
if ($user->first_minus_balance === null) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user->first_minus_balance = $usersBonus->date;
$user->save();
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
}
if ($usersBonus->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
LogService::apiErrorLog(json_encode(["error_id" => 4, "error" => $usersBonus->getErrors()], JSON_UNESCAPED_UNICODE));
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
return $this->asJson(["error_id" => 4, "error" => $usersBonus->getErrors()]);
}
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
file_put_contents(self::$USERS_AUTH_CALL_LOG2,
"" . date("d.m.Y H:i:s", time()) . " MINUS write_off_bonuses=" . $write_off_bonuses . "\n",
FILE_APPEND | LOCK_EX);
}
//начисляем кэшбек клиенту 10% от покупки - с базы за вычитом бонусов которые он списывает
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userFound = Users::find()->where(['phone' => $result['phone']])->one();
/** @var $userFound Users */
$salesCount = 0;
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($userFound && $userFound->telegram_created_at) {
$salesCount = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])
->andWhere(['>=', 'date', $userFound->telegram_created_at])->count());
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
}
$credit_procent_index = $userFound && $userFound->source > 0 && $salesCount == 0 ? 1 : 0;
$back1 = $back = round($baza_back * self::$CREDIT_PROCENT);
$nm = "Возврат с покупки " . (100 * self::$CREDIT_PROCENT) . "% $check_name сумма чека $check_amount";
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userBonus2 = UsersBonus::find()->where(['phone' => $phone])->andWhere(['check_id' => $check_id])->andWhere(['site_id' => $site_id])
->andWhere(['store_id' => $store_id])->andWhere(['tip' => 'plus'])->andWhere(['bonus' => $back])->andWhere(['name' => $nm])->one();
if (!$userBonus2) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user_balans_new += $back;
$userBonus2 = new UsersBonus;
$userBonus2->lid_id = $lid_id;
$userBonus2->price_skidka = 0;
$userBonus2->date_dell = $userBonus2->date_end;
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userBonus2->save();
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($userBonus2->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
LogService::apiErrorLog(json_encode(["error_id" => 5, "error" => $userBonus2->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 5, "error" => $userBonus2->getErrors()]);
}
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
file_put_contents(self::$USERS_AUTH_CALL_LOG2,
"" . date("d.m.Y H:i:s", time()) . " PLUS bonus=" . $back . "\n",
FILE_APPEND | LOCK_EX);
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($credit_procent_index) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$back = round($baza_back * self::$CREDIT_HIGH_PROCENT_PART20);
$nm = "Возврат с покупки " . (100 * self::$CREDIT_HIGH_PROCENT_PART20) . "% $check_name сумма чека $check_amount";
$userBonus2->lid_id = $lid_id;
$userBonus2->price_skidka = 0;
$userBonus2->date_dell = $userBonus2->date_end;
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userBonus2->save();
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($userBonus2->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
LogService::apiErrorLog(json_encode(["error_id" => 5.2, "error" => $userBonus2->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 5.2, "error" => $userBonus2->getErrors()]);
}
if ($userFound->telegram_created_at == null) {
$userFound->telegram_created_at = date("Y-m-d H:i:s");
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$userFound->save();
if ($userFound->getErrors()) {
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
LogService::apiErrorLog(json_encode(["error_id" => 5.3, "error" => $userFound->getErrors()], JSON_UNESCAPED_UNICODE));
return $this->asJson(["error_id" => 5.3, "error" => $userFound->getErrors()]);
$notifiableUser->phone = $phone;
$notifiableUser->type = "first_given_bonus";
$notifiableUser->data = "" . ($back1 + $back);
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$notifiableUser->save();
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
if ($notifiableUser->getErrors()) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
return $this->asJson(["error_id" => 5.4, "error" => $notifiableUser->getErrors()]);
}
}
// $user->alerts_date = "???"; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
// $user->alerts_reklama = "???"; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
// $user->seller_id = "???"; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
$user->save();
if ($user->getErrors()) {
+
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
LogService::apiErrorLog(json_encode(["error_id" => 6, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
file_put_contents(self::$USERS_AUTH_CALL_LOG2,
$mess["message_cashier"] = "Бонусы списаны";
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
-
+ file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
return $this->asJson($mess);
}
$request = Yii::$app->request->getRawBody();
+ $requestTest = json_decode(\Yii::$app->getRequest()->getRawBody(), true);
+
+ $fl = date('_Y_m_d__H_i_s_');
+ file_put_contents(self::OUT_DIR . '/add_bonuses_' . $fl . '.json', PHP_EOL . implode(',', $requestTest));
+
try {
$result = Json::decode($request);
} catch (\Exception $ex) {