]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Разделить информацию и приминение логики бонусов
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 14 Jun 2024 08:43:50 +0000 (11:43 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 14 Jun 2024 08:44:24 +0000 (11:44 +0300)
erp24/actions/bonus/AddBonusIfWrittenOffAction.php [new file with mode: 0644]
erp24/controllers/BonusController.php
erp24/views/bonus/add-bonus-if-written-off.php [new file with mode: 0644]

diff --git a/erp24/actions/bonus/AddBonusIfWrittenOffAction.php b/erp24/actions/bonus/AddBonusIfWrittenOffAction.php
new file mode 100644 (file)
index 0000000..44517a0
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+namespace yii_app\actions\bonus;
+
+use Yii;
+use yii\base\Action;
+use yii\helpers\ArrayHelper;
+use yii_app\helpers\ClientHelper;
+use yii_app\records\Sales;
+use yii_app\records\UsersBonus;
+
+class AddBonusIfWrittenOffAction extends Action
+{
+    public function run() {
+        $action = Yii::$app->request->post('action');
+
+        $addPlus = [];
+        if ($action == 'showPlus') {
+            $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) {
+                                $addPlus[] = $sale->phone;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if ($action == 'applyPlus') {
+            $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();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return $this->controller->render('add-bonus-if-written-off', compact('action', 'addPlus'));
+    }
+}
\ No newline at end of file
index f5c8b87356ec497d84093c44be00e293a9d8ed8b..5eb05a3be509e96d5e5df18d844b51084d636160 100644 (file)
@@ -2,6 +2,11 @@
 
 namespace app\controllers;
 
+use yii\helpers\ArrayHelper;
+use yii_app\helpers\ClientHelper;
+use yii_app\records\Sales;
+use yii_app\records\UsersBonus;
+
 class BonusController extends \yii\web\Controller
 {
     public function actions()
@@ -16,6 +21,7 @@ class BonusController extends \yii\web\Controller
 //            'ajax-user-remove-stop-list' => \yii_app\actions\bonus\AjaxUserRemoveStopListAction::class,
             'ajax-bonus-remove' => \yii_app\actions\bonus\AjaxBonusRemoveAction::class,
             'sex' => \yii_app\actions\bonus\SexAction::class,
+            'add-bonus-if-written-off' => \yii_app\actions\bonus\AddBonusIfWrittenOffAction::class,
         ];
     }
     public function actionBonusUsers() { return $this->render('bonus-users'); }
diff --git a/erp24/views/bonus/add-bonus-if-written-off.php b/erp24/views/bonus/add-bonus-if-written-off.php
new file mode 100644 (file)
index 0000000..024becc
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+use \yii\helpers\Html;
+use \yii\widgets\ActiveForm;
+
+/** @var $action string */
+/** @var $addPlus array */
+
+?>
+
+<div class="bonusAddBonusIfWrittenOff m-5">
+    <?php ActiveForm::begin() ?>
+
+    <?= Html::submitButton('Показать кому начислять', ['class' => 'btn btn-success btn-lg', 'name' => 'action', 'value' => 'showPlus']) ?>
+
+    <?= Html::submitButton('Начислить', ['class' => 'btn btn-warning btn-lg', 'name' => 'action', 'value' => 'applyPlus']) ?>
+
+    <?php ActiveForm::end() ?>
+
+    <?php if ($action == 'showPlus'): ?>
+        <pre>
+            <?php var_dump($addPlus); ?>
+        </pre>
+    <?php endif ?>
+    <?php if ($action == 'applyPlus'): ?>
+        ok
+    <?php endif ?>
+</div>