]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Правки по формированию и сообщениям
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 27 Dec 2024 10:16:14 +0000 (13:16 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 27 Dec 2024 10:16:14 +0000 (13:16 +0300)
erp24/commands/CronController.php
erp24/controllers/UsersMessageManagementController.php
erp24/records/Users.php
erp24/records/UsersMessageManagement.php
erp24/views/users-message-management/_data_table.php
erp24/views/users-message-management/index.php
erp24/views/users-message-management/view-kogort.php

index bd3047486229270b91cc37ca64097ef3f2de0763..054fe4e2aa184a3939ebb58e4a61ebd6d43d915f 100644 (file)
@@ -215,7 +215,7 @@ class CronController extends Controller
         }*/
 
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+           // ->where(['active' => 1])
             ->one();
 
         $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
@@ -224,13 +224,13 @@ class CronController extends Controller
             $dateToProcess = date('Y-m-d', strtotime("-$i days", strtotime($currentDate)));
             $startDate = date('Y-m-d', strtotime("+$step1 days", strtotime($dateToProcess)));
 
-            $kogortPhones = Users::formKogortByDateAndType($startDate, 'target');
+            $kogortPhones = Users::formKogortByDateAndType($dateToProcess, 'target');
 
             if (!empty($kogortPhones)) {
-                Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['target']);
-                $this->stdout("Когорта для даты {$startDate} успешно сохранена.\n", BaseConsole::FG_GREEN);
+                Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['target']);
+                $this->stdout("Когорта для даты {$dateToProcess} успешно сохранена.\n", BaseConsole::FG_GREEN);
             } else {
-                $this->stdout("Нет данных для формирования когорты на дату {$startDate}.\n", BaseConsole::FG_RED);
+                $this->stdout("Нет данных для формирования когорты на дату {$dateToProcess}.\n", BaseConsole::FG_RED);
             }
         }
 
@@ -256,7 +256,7 @@ class CronController extends Controller
         $stepsBack = $this->stepsBack ?? 0;
 
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+           // ->where(['active' => 1])
             ->one();
 
         $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
@@ -277,17 +277,17 @@ class CronController extends Controller
                 continue;
             }*/
 
-            $kogortPhones = Users::formKogortByDateAndType($startDate, 'whatsapp');
+            $kogortPhones = Users::formKogortByDateAndType($dateToProcess, 'whatsapp');
 
             if (!empty($kogortPhones)) {
-                Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['whatsapp']);
+                Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['whatsapp']);
                 $this->stdout(
-                    "Когорта для Вотсапа на дату {$startDate} успешно создана.\n",
+                    "Когорта для Вотсапа на дату {$dateToProcess} успешно создана.\n",
                     BaseConsole::FG_GREEN
                 );
             } else {
                 $this->stdout(
-                    "Нет данных для формирования когорты для Ватсапа на дату {$startDate}.\n",
+                    "Нет данных для формирования когорты для Ватсапа на дату {$dateToProcess}.\n",
                     BaseConsole::FG_RED
                 );
             }
@@ -307,7 +307,7 @@ class CronController extends Controller
         $currentDate =  $this->time ? date('Y-m-d', (int)$this->time) : date('Y-m-d');
         $stepsBack = $this->stepsBack ?? 0;
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+          //  ->where(['active' => 1])
             ->one();
 
         $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
@@ -328,12 +328,12 @@ class CronController extends Controller
                 continue;
             }*/
 
-            $kogortPhones = Users::formKogortByDateAndType($startDate, 'call');
+            $kogortPhones = Users::formKogortByDateAndType($dateToProcess, 'call');
 
             if (!empty($kogortPhones)) {
-                Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['call']);
+                Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['call']);
                 $this->stdout(
-                    "Когорта для Звонка на данную дату {$startDate} успешно создана.\n",
+                    "Когорта для Звонка на данную дату {$dateToProcess} успешно создана.\n",
                     BaseConsole::FG_GREEN
                 );
             } else {
index e1355a586aaa4cbf92ef87f4a9b0ced192d92f24..3b681e15738808906b8d02f0bc202b3e11a63c19 100644 (file)
@@ -87,7 +87,6 @@ class UsersMessageManagementController extends Controller
             $currentDate = strtotime('+1 day', $currentDate);
         }
 
-
         if (!$model) {
             $model = new UsersMessageManagement();
             $model->hold_active = 1;
@@ -282,8 +281,10 @@ class UsersMessageManagementController extends Controller
         $data = Users::prepareDataForExport($dataKogort, $date, $type);
 
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+          //  ->where(['active' => 1])
             ->one();
+        $message = '';
+
         if($messagesSettings && $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}) {
             $message = $messagesSettings->replaceShortcodes(
                 $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}
@@ -302,7 +303,7 @@ class UsersMessageManagementController extends Controller
             'dataProvider' => $dataProvider,
             'date' => $date,
             'type' => $type,
-            'message' => $message ?? '',
+            'message' => $message,
         ]);
     }
 
index 9f7ccc8140833b106148fb0e2839faf288c1770c..1d9d2e3443d92046ad06f7fb16ac86df03128c94 100755 (executable)
@@ -305,7 +305,7 @@ class Users extends \yii\db\ActiveRecord
         $monthDay = date('m-d', strtotime($startDate));
 
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+            //->where(['active' => 1])
             ->one();
 
         $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
@@ -453,7 +453,7 @@ class Users extends \yii\db\ActiveRecord
         $monthDay = date('m-d', strtotime($startDate));
 
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+            //->where(['active' => 1])
             ->one();
 
         $hold = isset($messagesSettings->hold) ? $messagesSettings->hold : 10;
@@ -502,7 +502,7 @@ class Users extends \yii\db\ActiveRecord
     private static function processWhatsappKogort(array $targetPhones, string $startDate): array
     {
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+           // ->where(['active' => 1])
             ->one();
 
         $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
@@ -535,7 +535,7 @@ class Users extends \yii\db\ActiveRecord
     private static function processCallKogort(array $whatsappPhones, string $startDate): array
     {
         $messagesSettings = UsersMessageManagement::find()
-            ->where(['active' => 1])
+            //->where(['active' => 1])
             ->one();
 
         $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
@@ -601,20 +601,19 @@ class Users extends \yii\db\ActiveRecord
                 ->where(['phone' => $user['phone']])
                 ->exists() ? 1 : 0;
 
-            $lastSale = Sales::find()
+            $query = Sales::find()
+                ->select([
+                    'lastSaleDate' => 'MAX(date)',
+                    'dealsCount' => 'COUNT(*)',
+                    'totalSum' => 'SUM(summ)'
+                ])
                 ->where(['phone' => $user['phone']])
-                ->orderBy(['date' => SORT_DESC])
+                ->asArray()
                 ->one();
 
-            $lastDate = $lastSale ? date('d-m-Y', strtotime($lastSale->date)) : 'нет данных';
-
-            $dealsCount = Sales::find()
-                ->where(['phone' => $user['phone']])
-                ->count();
-
-            $totalSum = Sales::find()
-                ->where(['phone' => $user['phone']])
-                ->sum('summ') ?? 0;
+            $lastDate = $query['lastSaleDate'] ? date('d-m-Y', strtotime($query['lastSaleDate'])) : 'нет данных';
+            $dealsCount = $query['dealsCount'] ?? 0;
+            $totalSum = $query['totalSum'] ?? 0;
 
             $data[] = [
                 'phone' => $user['phone'],
index c1a8ab945a9604837da1aabe08141dad8f1a936f..076830b8a5d0e2fbb43eabd533e99fe0595f9082 100644 (file)
@@ -114,7 +114,7 @@ class UsersMessageManagement extends \yii\db\ActiveRecord
 
     public function getBonusAction()
     {
-        return $this->day_before_step1 + 1;
+        return (int)($this->day_before_step1) + 1;
     }
 
     public function getTestPhonesList()
index a69c04febdd9244ed3298d0004475a97a26b6d9a..67e360152111f37ccfb11b681b0a9456a168ff9b 100644 (file)
@@ -1,8 +1,8 @@
 <?php
 use yii\helpers\Html;
 use yii\helpers\Url;
-
-
+use yii_app\records\UsersMessageManagement;
+/* @var $model UsersMessageManagement */
 /** @var array $links */
 /** @var string $month */
 /** @var string $year */
index e4e028c4fde9968f24a1d2aeb0779b52e4e50b20..5410a7505a20cca582b81e50212df961e699b83a 100644 (file)
@@ -287,6 +287,7 @@ $this->registerCss('
                         'links' => $links,
                         'month' => $month,
                         'year' => $year,
+                        'model' => $model,
 
                     ]) ?>
                 </div>
index 9636e2f5d7b2f820f22077dc110c44a15de00309..d559fc39587b9be83699290c8eb17e93e2869ef5 100644 (file)
@@ -26,6 +26,11 @@ $columns = array_map(function ($attribute) {
 }, $attributes);
 
 array_unshift($columns, ['class' => 'yii\grid\SerialColumn']);
+if ($message == '') {
+    $message = Html::a('Нет сообщения для рассылки - сформируйте ее в интерфейсе', ['index'], ['class' => 'btn btn-link']);
+} else {
+    $message = Html::encode($message);
+}
 
 ?>
 <?= Html::a('Назад', ['index'], ['class' => 'btn btn-primary m-5']) ?>
@@ -33,7 +38,8 @@ array_unshift($columns, ['class' => 'yii\grid\SerialColumn']);
 
 
 
-    <h1><?= Html::encode($this->title) ?>: <?= \yii_app\records\Users::KOGORT_TYPES[$type] ?> - <?= date('d-m-Y', strtotime($date)) ?></h1>
+    <h1><?= Html::encode($this->title) ?>: <?= \yii_app\records\Users::KOGORT_TYPES[$type] ?>
+        на <span style="color:red"><?= date('d-m-Y', strtotime($date)) ?></span></h1>
 
 
     <div class="row mb-6">
@@ -47,7 +53,7 @@ array_unshift($columns, ['class' => 'yii\grid\SerialColumn']);
                         </button>
                     </h2>
                     <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample">
-                        <div class="accordion-body card card-body border"><?= Html::encode($message) ?></div>
+                        <div class="accordion-body card card-body border"><?= $message  ?></div>
                     </div>
                 </div>