From: Alexander Smirnov Date: Thu, 13 Jun 2024 13:12:33 +0000 (+0300) Subject: Начислить бонусы при списании X-Git-Tag: 1.3~57^2~10 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=801731bbe7b7fe5e3bce097a08210772e08cead0;p=erp24_rep%2Fyii-erp24%2F.git Начислить бонусы при списании --- diff --git a/erp24/actions/infoTable/TestAction.php b/erp24/actions/infoTable/TestAction.php index 59441d5e..8c4568b8 100644 --- a/erp24/actions/infoTable/TestAction.php +++ b/erp24/actions/infoTable/TestAction.php @@ -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 '
'; - die('error: token is wrong!'); - } - - } else { - echo time(); - echo '
'; - 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
'; - } - - - $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 '
 salesAdminWronShift
'; - var_dump($salesAdminWronShift); - echo '
'; - echo '
 adminDate
'; - - var_dump($adminDate); - echo '
'; - echo '
 admins
'; - var_dump($admins); - echo '
'; - 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') . '
'; - ++$counter; - } - - } - - $ttt = 654; - + return 'ok'; } - } \ No newline at end of file