]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Начислить бонусы при списании
authorAlexander Smirnov <fredeom@mail.ru>
Thu, 13 Jun 2024 13:12:33 +0000 (16:12 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Thu, 13 Jun 2024 13:12:33 +0000 (16:12 +0300)
erp24/actions/infoTable/TestAction.php

index 59441d5ef8d148c866cb8903df6a187828c5cbb4..8c4568b8eec11f0a392e0c32d2d0b8f9deebd906 100644 (file)
@@ -6,8 +6,10 @@ use Yii;
 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;
@@ -21,6 +23,7 @@ use yii_app\records\Sales;
 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;
@@ -31,215 +34,37 @@ use yii_app\services\StoreVisitorsService;
 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