use yii\base\Action;
use yii\helpers\ArrayHelper;
use yii\widgets\ActiveForm;
+use yii_app\api3\core\validators\PhoneValidator;
use yii_app\forms\dashboard\DaysSearchForm;
use yii_app\helpers\AppArrayHelper;
+use yii_app\helpers\ClientHelper;
use yii_app\helpers\DateHelper;
use yii_app\records\Admin;
use yii_app\records\AdminDynamic;
use yii_app\records\Shift;
use yii_app\records\StoreDynamic;
use yii_app\records\Timetable;
+use yii_app\records\UsersBonus;
use yii_app\records\WriteOffsErp;
use yii_app\records\WriteOffsProductsErp;
use yii_app\services\DashboardService;
class TestAction extends Action
{
public function run() {
-
- ini_set('max_execution_time', (string)(60 * 120)); // 120 минут
- ini_set('display_errors', 1);
- ini_set('display_startup_errors', 1);
- error_reporting(E_ALL);
-
- $mode = 'test';
-
- Yii::$app->cache->set("testAddAssignmentTask2", '45r6g7h8j9ikjuybtvr7___test_string'.time());
-
- $val = Yii::$app->cache->get("testAddAssignmentTask2");
-
- var_dump($val);
-
- $request = Yii::$app->getRequest();
- if (!empty($request->get('start'))) {
-
- $start = $request->get('start');
- $startCheck = time() - 7200;
- if ($start < $startCheck) {
- echo time();
- echo '<br>';
- die('error: token is wrong!');
- }
-
- } else {
- echo time();
- echo '<br>';
- die('error: token is wrong!');
- }
-
- if (!empty($request->get('mode'))) {
- $modePrepared = $request->get('mode');
- if ($modePrepared === 'run') {
- $mode = 'runSave';
- }
- }
-
- if ($mode == 'test') {
- echo 'test mode <br>';
- }
-
-
- $timeTable = Timetable::find()
-// ->select()
- ->andWhere(['between', 'date', "2023-09-01", "2023-09-30" ])
- ->andWhere([
-
- 'admin_group_id' => 50,
- 'tabel' => 0,
- ])->asArray()->all();
-
-
-// var_dump($timeTable);
-
-
- $adminDate = [];
- $adminDateRow = [];
- foreach ($timeTable as $item) {
-
- $adminDate[$item['admin_id']][] = $item['date'];
-// array_push($adminDateRow, $item['date']);
- }
-
- $admins = Admin::getAdmins(null,50);
-
- $action = [];
- $sales = [];
- $salesAdmin = [];
- $salesAdminEmptyShift = [];
- foreach ($admins as $admin) {
- $adminGuidRow = ArrayHelper::getValue($admin, 'exportImportTable.export_val');
- if (!empty($adminDate[$admin['id']])) {
- $salesAdminRowQuery = Sales::find()
- ->andWhere(['seller_id' => $adminGuidRow])
- ->andWhere(['between', 'date', "2023-09-01 00:00:00", "2023-09-30 23:59:59" ])
-
-
- ;
-
- $action[] = $salesAdminRowQuery->createCommand()->getRawSql();
-
- $salesAdmin[$admin['id']] = $salesAdminRowQuery
- ->asArray()
- ->all();
- } else {
-
- $salesAdminEmptyShift[$admin['id']] = Sales::find()
- ->andWhere(['seller_id' => $adminGuidRow])
- ->andWhere(['between', 'date', "2023-09-01 00:00:00", "2023-09-30 23:59:59" ])
- ->asArray()
- ->all();
- }
- }
-
- $salesAdminWronShift = [];
-
- foreach ($salesAdmin as $keyAdmin => $items) {
- foreach ($items as $sales) {
- if (!empty($adminDate[$keyAdmin])) {
- $salesDatePreparedRow = $sales['date'];
- $salesDateRow = date("Y-m-d", strtotime($salesDatePreparedRow));
- $adminShiftDateRow = $adminDate[$keyAdmin];
- if (in_array($salesDateRow, $adminShiftDateRow)) {
- $test = 11;
- } else {
- $t2 = 22;
- $salesAdminWronShift[$keyAdmin][] = $sales;
+ $sales = Sales::find()->where(['operation' => Sales::OPERATION_SALE])
+ ->andWhere(['>=', 'date', '2024-05-30 21:28:00'])
+ ->andWhere(['<=', 'date', '2024-06-04 17:24:00'])->all();
+ $salesIds = ArrayHelper::getColumn($sales, 'id');
+ $returns = Sales::find()->select(['id', 'sales_check'])->where(['operation' => Sales::OPERATION_RETURN, 'sales_check' => $salesIds])->all();
+ $returnsIds = ArrayHelper::getColumn($returns, 'sales_check');
+ foreach ($sales as $sale) {
+ /** @var $sale Sales */
+ if (!in_array($sale->id, $returnsIds)) {
+ if (ClientHelper::phoneVerify($sale->phone)) {
+ $usersBonusMinus = UsersBonus::find()->where(['tip' => 'minus', 'check_id' => $sale->id])->one();
+ if ($usersBonusMinus) {
+ $usersBonusPlus = UsersBonus::find()->where(['tip' => 'plus', 'check_id' => $sale->id])->one();
+ if (!$usersBonusPlus) {
+ $userBonus = new UsersBonus;
+ $userBonus->phone = "" . $sale->phone;
+ $userBonus->name = "Возврат с покупки 10% " . $sale->number . " сумма чека " . $sale->summ;
+ $userBonus->date = date('Y-m-d H:i:s');
+ $userBonus->site_id = 1;
+ $userBonus->setka_id = 1;
+ $userBonus->tip = 'plus';
+ $userBonus->tip_sale = 'sale';
+ $userBonus->bonus = floor($sale->summ * 0.1);
+ $userBonus->date_start = $userBonus->date;
+ $userBonus->date_end = date('Y-m-d H:i:s', strtotime('+366 day', strtotime($userBonus->date)));
+ $userBonus->save();
+ }
}
- } else {
-
-
}
}
}
- echo '<pre> salesAdminWronShift<br>';
- var_dump($salesAdminWronShift);
- echo '</pre>';
- echo '<pre> adminDate<br>';
-
- var_dump($adminDate);
- echo '</pre>';
- echo '<pre> admins<br>';
- var_dump($admins);
- echo '</pre>';
- die();
- //
- //
- //SELECT
- // admin_id,
- // SUM(
- // admin_payroll_values.value_float
- // ) AS matrix_pay
- //FROM
- // admin_payroll
- // LEFT JOIN
- // admin_payroll_values
- // ON
- // admin_payroll.id = admin_payroll_values.payroll_id
- // AND
- // admin_payroll_values.value_id IN (78, 80)
- //WHERE
- // year = 2023
- //AND
- // month = 8
- //GROUP BY
- // admin_id
- //
- //
-
- $testQ = AdminPayroll::find()
- ->select([
- 'admin_id',
- 'matrix_pay' =>new \yii\db\Expression(
- 'SUM(
- admin_payroll_values.value_float
- )'),
- 'matrix_pay_percent' =>new \yii\db\Expression(
- 'SUM(
- admin_payroll_values.value_float
- ) * 0.3')
- ])
- ->leftJoin('admin_payroll_values','admin_payroll.id = admin_payroll_values.payroll_id AND admin_payroll_values.value_id IN (78, 80) ')
- ->andWhere(['year' => 2023,'month' => 6])
- ->groupBy('admin_id')
- ;
-
- $tq = $testQ->createCommand()->getRawSql();
- $adminPayroll = $testQ -> asArray()
- ->all();
-
- $counter = 1;
- foreach ($adminPayroll as $item) {
- if (empty($item['matrix_pay'])) {
- continue;
- }
-
- $adminBonuses = AdminPersonBonuses::find()
- ->andWhere(['admin_id' => $item['admin_id']])
- ->andWhere(['year' => 2023])
- ->andWhere(['month' => 8])
- ->one();
-
- if (empty($adminBonuses)) {
- $adminBonuses = new AdminPersonBonuses();
- $adminBonuses->admin_id = $item['admin_id'];
- $adminBonuses->year = 2023;
- $adminBonuses->month = 8;
- $adminBonuses->setDate();
- $adminBonuses->setDateTime();
- }
- $adminBonuses->name_add_bonus = 'Премия за матрицу предыдущего месяца (доначисление после перерассчëта)';
- $adminBonuses->add_bonus = round($item['matrix_pay_percent'], 0);
-
- $adminBonuses->setCreatedAdminId(0);
- $validate = $adminBonuses->validate();
-
- if ($validate) {
- if ($mode === 'runSave') {
- $adminBonuses->save();
- }
- echo ' ' . $counter . ' admin_id ' . $adminBonuses->admin_id . ' bonuses_id ' . ($adminBonuses->id ?? 'new') . ' база ' . (round($item['matrix_pay'], 0) ?? '0'). ' сумма(30%) ' . ($adminBonuses->add_bonus ?? '0') . '<br>';
- ++$counter;
- }
-
- }
-
- $ttt = 654;
-
+ return 'ok';
}
-
}
\ No newline at end of file