]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
add vacation sum
authorvladfo <fvv2011@gmail.com>
Tue, 6 Aug 2024 12:51:03 +0000 (15:51 +0300)
committervladfo <fvv2011@gmail.com>
Tue, 6 Aug 2024 12:51:03 +0000 (15:51 +0300)
erp24/actions/motivation/GetSalaryAction.php
erp24/actions/motivation/SumSalaryAction.php
erp24/services/MotivationService.php
erp24/views/motivation/records.php

index 4c238a882da71fca219a41ac17206f4996b81fcd..fcfb743a7fde74d064cf527273fc6dce59827c3a 100644 (file)
@@ -16,7 +16,7 @@ class GetSalaryAction extends Action
 public function run()
 {
     $request = Yii::$app->request;
-    $store_id = $request->get('store_id', 1);
+    $store_id = $request->get('store_id', 2);
     $date = $request->get('date', '2024-08-05');
     $records = [];
 
@@ -29,6 +29,7 @@ public function run()
 
     if (!$model->hasErrors()) {
         $records = MotivationService::getRecordsByDateAndStore($date, $store_id);
+        $vacationSum = MotivationService::getVacationsSum($date, $store_id);
     }
 // Определяем начало недели и номер недели в месяце
     $currentDate = new DateTime($model->date);
@@ -43,6 +44,7 @@ public function run()
         'startOfWeek' => $startOfWeek,
         'endOfWeek' => $endOfWeek,
         'weekNumberInMonth' => $weekNumberInMonth,
+        'vacation'=> $vacationSum,
     ]);
 }
 }
index 3cef88ffc16daedc9c03e092cbb56c0ff3920d24..f6946f15e80c4a59771dfc1620496eadb2d9b603 100644 (file)
@@ -31,7 +31,7 @@ class SumSalaryAction extends \yii\base\Action
             $store_id = $motivation->store_id;
             $date = $currentDate->format('Y-m-d');
             $records = MotivationService::getRecordsByDateAndStore($date, $store_id);
-
+            $vacationSum = MotivationService::getVacationsSum($date, $store_id);
             $totalSalary = 0;
             foreach ($records as $record) {
 
@@ -46,7 +46,7 @@ class SumSalaryAction extends \yii\base\Action
                 }
             }
 
-            $results[$store_id] = $totalSalary;
+            $results[$store_id] = $totalSalary + $vacationSum;
         }
 
         // Определяем начало недели и номер недели в месяце
index c897569fab5ff033f4b0149f961a2ed9127dcc4a..1447894dc2f3a143e78f730cdba2dcadd27498cb 100644 (file)
@@ -11,6 +11,11 @@ use yii_app\records\MotivationCostsItem;
 use yii_app\records\TimetableFactModel;
 use DateTime;
 
+use yii\helpers\ArrayHelper;
+use yii_app\records\Timetable;
+use yii_app\records\EmployeePayment;
+
+
 class MotivationService
 {
 
@@ -348,6 +353,39 @@ class MotivationService
     
         return $records;
     }
+
+    public static function getVacationsSum($currentDate, $store_id)
+    {
+        // Преобразуем дату в объект DateTime
+        $dateTime = new DateTime($currentDate);
+
+        // Определяем номер недели в месяце и начало недели
+        $weekOfMonth = self::getWeekOfMonth($dateTime);
+        $startOfWeek = self::getStartOfWeek($dateTime, $weekOfMonth);
+
+        // Делаем запрос к таблице Timetable для получения записей с slot_type_id = 2
+        $records = Timetable::find()
+            ->where(['store_id' => $store_id])
+            ->andWhere(['between', 'date', $startOfWeek->format('Y-m-d'), $dateTime->format('Y-m-d')])
+            ->andWhere(['slot_type_id' => 2])
+            ->all();
+
+        // Получаем массив admin_id
+        $adminIds = ArrayHelper::getColumn($records, 'admin_id');
+
+        // Делаем запрос к таблице EmployeePayment для получения daily_payment
+        $payments = EmployeePayment::find()
+            ->where(['admin_id' => $adminIds])
+            ->all();
+
+        // Получаем массив стоимости каждого дня отпуска
+        $dailyPayments = ArrayHelper::getColumn($payments, 'daily_payment');
+
+        // Вычисляем сумму отпускных выплат
+        $vacationsSum = array_sum($dailyPayments);
+
+        return $vacationsSum;
+    }
     
     private static function getWeekOfMonth($dateTime)
     {
index 54416c169eb6d617610ef0f8d49097e3755aa798..5c014acc633e45cf2ec0b80db0ddb75ce3f0c490 100644 (file)
@@ -10,6 +10,7 @@ use yii\base\DynamicModel;
 /** @var $startOfWeek string */
 /** @var $endOfWeek string */
 /** @var $weekNumberInMonth int */
+/** @var $vacation float */
 $this->title = 'Записи';
 ?>
 
@@ -85,6 +86,7 @@ $this->title = 'Записи';
 
     <p>Всего смен: <?= count($records) ?></p>
     <p>ЗП за весь период: <?= Html::encode($totalSalary) ?></p>
+    <p>Отпускные: <?= Html::encode($vacation) ?></p>
     <p>Период: с <?= Html::encode($startOfWeek) ?> по <?= Html::encode($endOfWeek) ?></p>
     <p>Номер недели в месяце: <?= Html::encode($weekNumberInMonth) ?></p>
 <?php endif; ?>