]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
добавление can_open Timetable.php
authorMarina Zozirova <marina.zozirova@erp-flowers.ru>
Thu, 19 Sep 2024 11:05:13 +0000 (11:05 +0000)
committerAleksey Filippov <aleksey.filippov@erp-flowers.ru>
Thu, 19 Sep 2024 11:05:13 +0000 (11:05 +0000)
erp24/api3/core/services/IncomeService.php
erp24/api3/modules/v1/controllers/timetable/PlanController.php
erp24/api3/modules/v1/models/timetable/Timetable.php

index dc63bbdb78235d44fa4df15f62a50b1607693fb5..659ce00fbe3e75d93c5eb3800d222759cff70aa9 100644 (file)
@@ -12,6 +12,7 @@ use yii_app\records\Products1c;
 use yii_app\records\ProductsClass;
 use yii_app\records\Sales;
 use yii_app\records\SalesProducts;
+use yii_app\records\TimetableFactModel;
 use yii_app\records\TimetableV3;
 
 class IncomeService
@@ -21,31 +22,22 @@ class IncomeService
      * @throws Exception
      */
     public function show($data) {
-        // берём планы по флористу в указанном промежутке времени
-        $plans = Timetable::find()->with(['checkIns'])->where(['admin_id' => $data->admin_id, 'tabel' => 0])
-            ->andWhere(['slot_type_id' => Timetable::TIMESLOT_WORK])
+        // берём факты по флористу в указанном промежутке времени
+        $facts = TimetableFactModel::find()->where(['admin_id' => $data->admin_id])
             ->andWhere(['>=', 'date', date("Y-m-d", strtotime($data->date_from))])
             ->andWhere(['<=', 'date', date("Y-m-d", strtotime($data->date_to))])
             ->all();
-        $plan_ids = ArrayHelper::getColumn($plans, 'id');
-        // берём факты, которые указывают на выбранные ранее планы
-        $facts = Timetable::find()->where(['plan_id' => $plan_ids])->all();
-        // извлекаем отработанное время из фактов
-        $workHoursPerPlanId = ArrayHelper::map($facts, 'plan_id', 'work_time');
+
         $baseIncome = [];
-        foreach ($plans as $plan) {
-            /* @var $plan Timetable */
-            if (!isset($workHoursPerPlanId[$plan->id])) {
-                continue;
-            }
+        foreach ($facts as $fact) {
             // получаем отработку со временем для каждой запланированной смены
             $baseIncome [] = [
-                'date' => $plan->date,
-                'shift_id' => $plan->shift_id,
-                'salary_shift' => $plan->salary_shift,
-                'price' => $plan->shift_id == 1 ? 125 : 145,
-                'work_hours' => $workHoursPerPlanId[$plan->id] ?? 0, // если план есть, а факта нет, то 0 чаов отработано
-                'in_shift' => count($plan->checkIns) == 1,
+                'date' => $fact->date,
+                'shift_id' => $fact->shift_id,
+                'salary_shift' => $fact->salary_shift,
+                'price' => $fact->shift_id == 1 ? 125 : 145,
+                'work_hours' => $fact->work_time, 
+                'in_shift' => count($fact->checkIns) == 1,
             ];
         }
         $admin = Admin::findOne($data->admin_id);
index b308e583ae59d09069797bee95f330ad19a2afa7..208d7f9cb15d26f290308fe8a6afd83a2510e7fc 100644 (file)
@@ -42,7 +42,10 @@ class PlanController extends \yii_app\api3\controllers\ActiveController
                 ->andWhere(['admin_id' => $requestParams['filter']['admin_id']])
                 ->select('plan_id')
                 ->column();
-            return $query->andFilterWhere(['not in', 'id', $plans]);
+
+            $query->andFilterWhere(['not in', 'id', $plans]);
+            $query->andFilterWhere(['tabel' => 0]);
+            return $query;
         };
 
         unset($actions['delete']);
index 28878b97c00c57f5f48a23235545f8c05490c3ce..8c483411e9da03713f0f3f51ba2c0880ad79a2aa 100644 (file)
@@ -153,10 +153,10 @@ class Timetable extends \yii_app\records\TimetableV3
             'time_end',
             'work_time',
             'status',
-            'checkInCount',
+            'checkInCount', 
             'can_open' => fn($x) => !TimetableFactModel::find()
                 ->andWhere(['is_close' => false])
-                ->andWhere(['plan_id' => $x->id])->exists() && ($x->date == date('Y-m-d'))
+                ->andWhere(['plan_id' => $x->id])->exists() && ($x->date == date('Y-m-d')) && $x->tabel == 0 && $x->plan_id == null
         ];
 
         return $fields;