]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-65
authormarina <m.zozirova@gmail.com>
Thu, 4 Jul 2024 05:38:54 +0000 (08:38 +0300)
committermarina <m.zozirova@gmail.com>
Thu, 4 Jul 2024 05:38:54 +0000 (08:38 +0300)
Перенести в новый фактический табель все смены сотрудников, которые были до 13.06

erp24/controllers/TimetableFactController.php
erp24/records/AdminCheckin.php
erp24/records/TimetableFactModel.php
erp24/views/timetable-fact/add-old-shifts.php [new file with mode: 0644]

index 40781e51f110e0476c1e81a47ff6bfbc14c937a6..a24d7cefbb095a0ce376a55a4a8365fae5973fbd 100644 (file)
@@ -4,9 +4,13 @@ namespace app\controllers;
 
 use app\records\TimetableFactModel;
 use yii\data\ActiveDataProvider;
+use yii\db\Query;
 use yii\web\Controller;
 use yii\web\NotFoundHttpException;
 use yii\filters\VerbFilter;
+use yii_app\records\Admin;
+use yii_app\records\AdminCheckin;
+use yii_app\records\Timetable;
 
 /**
  * TimetableFactController implements the CRUD actions for TimetableFactModel model.
@@ -142,4 +146,103 @@ class TimetableFactController extends Controller
 
         throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));
     }
+
+    public function actionAddOldShifts()
+    {
+
+        $action = \Yii::$app->request->post('action');
+
+        $query = Timetable::find()
+            ->andWhere(['>=', 'date', '2024-06-01'])
+            ->andWhere(['<', 'date', date('Y-m-d')])
+            ->andWhere(['is not', 'plan_id', null])
+            ->andWhere(['not in', 'id', (new Query())->select('plan_id')->from('timetable_fact')]);
+
+
+        if ($action == 'applyPlus') {
+
+            $timetables = Timetable::find()
+                ->andWhere(['>=', 'date', '2024-06-01'])
+                ->andWhere(['<', 'date', date('Y-m-d')])
+                ->andWhere(['is not', 'plan_id', null])
+                ->all();
+
+            foreach ($timetables as $timetable) {
+                $newFact = TimetableFactModel::find()
+                    ->andWhere(['date_shift' => $timetable->date])
+                    ->andWhere(['admin_id' => $timetable->admin_id])
+                    ->andWhere(['store_id' => $timetable->store_id])
+                    ->one();
+
+                if ($newFact) {
+                    var_dump($newFact);die();
+                    $newFact->plan_id = $timetable->id;
+                    $newFact->tabel = $timetable->tabel;
+                    $newFact->save();
+                } else {
+                    $adminCheckinStart = AdminCheckin::find()
+                        ->where(['plan_id' => $timetable->id])
+                        ->orderBy('id asc')
+                        ->one();
+
+                    $adminCheckinEnd = AdminCheckin::find()
+                        ->where(['plan_id' => $timetable->id])
+                        ->orderBy('id desc')
+                        ->one();
+
+                    if ($adminCheckinStart) {
+                        $adminCheckinStart->shift_id = $timetable->shift_id;
+                        var_dump($timetable->shift_id);
+                        var_dump($adminCheckinStart->shift_id);
+                        TimetableFactModel::setValues($adminCheckinStart);
+
+                        if ($adminCheckinEnd && $adminCheckinStart->id != $adminCheckinEnd->id) {
+                            $adminCheckinEnd->shift_id = $timetable->shift_id;
+                            var_dump($timetable->shift_id);
+                            var_dump($adminCheckinStart->shift_id);
+                            die();
+                            TimetableFactModel::setValues($adminCheckinEnd);
+                        }
+                    }
+                }
+
+                if ($timetable && empty($adminCheckinStart) && empty($adminCheckinEnd)) {
+                    $newCheckin = new AdminCheckin();
+                    $newCheckin->admin_id = $timetable->admin_id;
+                    $newCheckin->type_id = $timetable->shift_id == 5 || $timetable->shift_id = 8 ? AdminCheckin::TYPE_APPEAR : AdminCheckin::TYPE_START;
+                    $newCheckin->date = $timetable->date;
+                    $newCheckin->shift_id = $timetable->shift_id;
+                    $newCheckin->time = $timetable->datetime_start;
+                    $newCheckin->store_id = $timetable->store_id;
+                    $newCheckin->ball = 5;
+                    $newCheckin->comment = '';
+                    $newCheckin->photo = 'images/avatar-empty.png';
+                    $newCheckin->d_id = $timetable->d_id;
+                    $newCheckin->plan_id = $timetable->plan_id;
+                    $newCheckin->device_id = '';
+                    $newCheckin->lat = '';
+                    $newCheckin->lon = '';
+                    $newCheckin->validate();
+                    TimetableFactModel::setValues($newCheckin);
+
+                    $newCheckin->time = $timetable->datetime_end;
+                    $newCheckin->type_id = $timetable->shift_id == 5 || $timetable->shift_id = 8 ? AdminCheckin::TYPE_APPEAR : AdminCheckin::TYPE_END;
+                    $newCheckin->validate();
+                    TimetableFactModel::setValues($newCheckin);
+                }
+            }
+        }
+
+        $dataProvider = new ActiveDataProvider([
+            'query' => $query,
+            'pagination' => [
+                'pageSize' => 20
+            ]
+        ]);
+
+        return $this->render('add-old-shifts', [
+            'dataProvider' => $dataProvider,
+            'action' => $action,
+        ]);
+    }
 }
index 1d7b01785609e5bb7ef2df9dcf688aaee9d52edf..4482b6a7ff4a75715997af42c3cb6b1916a1cc29 100755 (executable)
@@ -31,6 +31,7 @@ use yii_app\forms\timetable\StartForm;
  */
 class AdminCheckin extends ActiveRecord
 {
+    public $shift_id;
     public $cnt;
     public $adminGuid;
     const TYPE_START = 1;
index 48d3304245b6b0ef19872ad6bd548321242040e7..85489137a96b052f1d5c336a9827b8b9a55f604e 100644 (file)
@@ -126,21 +126,25 @@ class TimetableFactModel extends ActiveRecord
             $model->status = AdminCheckin::TYPE_START;
             $model->checkin_start_id = $adminCheckin->id;
 
-            $timetable = Timetable::findOne(['date' => $adminCheckin->date]);
+            $timetable = Timetable::findOne(['date' => $adminCheckin->date, 'admin_id' => $adminCheckin->admin_id]);
 
             if (!empty($timetable)) {
-                $model->tabel = $timetable->id;
+                $model->tabel = 1;
                 $model->plan_id = $timetable->plan_id;
                 $model->admin_id_add = $timetable->admin_id_add;
                 $model->comment = $timetable->comment;
                 $model->date_add = $timetable->date_add;
+                $model->salary_shift = $timetable->salary_shift;
+                $model->price_hour = $model->salary_shift / ($model->d_id == AdminGroup::GROUP_ADMINISTRATORS ? 8 : 12);
 
             } else {
-                $model->tabel = 1;
+                $model->tabel = 0;
                 $model->plan_id = null;
                 $model->admin_id_add = null;
                 $model->comment = null;
                 $model->date_add = null;
+                $model->salary_shift = null;
+                $model->price_hour = null;
             }
 
             $model->admin_id = $adminCheckin->admin_id;
@@ -149,8 +153,6 @@ class TimetableFactModel extends ActiveRecord
             $model->store_id = $adminCheckin->store_id;
             $model->date_shift = $adminCheckin->date;
             $model->shift_id = $adminCheckin->shift_id;
-            $model->salary_shift = !empty($salary = EmployeePayment::findOne(['admin_id' => $adminCheckin->admin_id])) ? $salary->daily_payment : null;
-            $model->price_hour = $model->salary_shift / ($model->d_id == AdminGroup::GROUP_ADMINISTRATORS ? 8 : 12);
         }
 
         if ($model->validate()) {
diff --git a/erp24/views/timetable-fact/add-old-shifts.php b/erp24/views/timetable-fact/add-old-shifts.php
new file mode 100644 (file)
index 0000000..6f306ce
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+use yii\grid\GridView;
+use \yii\helpers\Html;
+use \yii\widgets\ActiveForm;
+
+/** @var $action string */
+/** @var $dataProvider */
+
+?>
+
+<?php $columns = array(
+    ['class' => 'yii\grid\SerialColumn'],
+    [
+        'attribute' => 'admin_id',
+        'value' => function($data) {
+        return $data->admin->name;
+}
+    ],
+    [
+        'attribute' => 'store_id',
+
+        'value' => function($data) {
+            return $data->store->name;
+        }
+    ],
+    'datetime_start:datetime',
+    'datetime_end:datetime',
+//    'attribute' => 'time_start:datetime',
+)
+?>
+
+
+<div class="bonusAdd m-5">
+
+    <?php ActiveForm::begin() ?>
+
+    <?= Html::submitButton('Перенести', ['class' => 'btn btn-warning btn-lg', 'name' => 'action', 'value' => 'applyPlus']) ?>
+
+    <?php ActiveForm::end() ?>
+    <pre>
+        <?= GridView::widget([
+            'dataProvider' => $dataProvider,
+            'columns' => $columns,
+        ]);; ?>
+        </pre>
+</div>