]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
изменения в коде - добавление метода с массивом недель и чистка зависимостей
authorJoySystem_v <fvv2011@gmail.com>
Fri, 16 Aug 2024 06:48:10 +0000 (09:48 +0300)
committerJoySystem_v <fvv2011@gmail.com>
Fri, 16 Aug 2024 06:48:10 +0000 (09:48 +0300)
erp24/actions/motivation/GetSalaryAction.php
erp24/actions/motivation/SumSalaryAction.php
erp24/actions/motivation/SumSalaryByMonthAction.php
erp24/services/MotivationService.php

index d78eae93f8a0cf3762ba5e1c2a415c53808bec8a..0c2e327b20a9cb87e8b8a3bf1b43516e5ea0b4a7 100644 (file)
@@ -7,9 +7,6 @@ use yii\base\Action;
 use yii\base\DynamicModel;
 use yii_app\models\SumSalaryForm;
 use yii_app\services\MotivationService;
-use yii_app\records\TimetableFactModel;
-use DateTime;
-use yii_app\records\EmployeePayment;
 use yii_app\records\Admin;
 
 class GetSalaryAction extends Action
@@ -43,20 +40,10 @@ class GetSalaryAction extends Action
             $month = (int)$month;
             $year = (int)$year;
 
-            $weeks = [
-                ['start' => 1, 'end' => 7],
-                ['start' => 8, 'end' => 14],
-                ['start' => 15, 'end' => 21],
-                ['start' => 22, 'end' => 28],
-            ];
+            $weeks = MotivationService::getWeeksOfMonthArray($year, $month);
 
             $lastDayOfMonth = date('t', strtotime("$year-$month-01"));
 
-            // Проверяем, существует ли 29-е число в текущем месяце (для не високосного года в феврале его не будет)
-            if ($lastDayOfMonth > 28) {
-                $weeks[] = ['start' => 29, 'end' => $lastDayOfMonth];
-            }
-
             $dailyPayments = MotivationService::getEmployeePayments("$year-$month-$lastDayOfMonth");
 
 
index 9d55f741c12568ef5ee2624a4c14882cc5e7919c..fd7f37422d72de320eae199e97f52331ea5c59f9 100644 (file)
@@ -6,7 +6,7 @@ use Yii;
 use yii\base\Action;
 use yii_app\records\Motivation;
 use yii_app\services\MotivationService;
-use DateTime;
+
 
 class SumSalaryAction extends Action
 {
index 22c62f818525fd429309ffb1f3b8625ce4e9fc7e..a9730335ba0bd2e7b49caf4f1effb52359630094 100644 (file)
@@ -4,7 +4,6 @@ namespace yii_app\actions\motivation;
 
 use Yii;
 use yii\base\Action;
-use DateTime;
 use yii_app\models\SumSalaryForm;
 use yii_app\records\Motivation;
 use yii_app\services\MotivationService;
@@ -28,20 +27,7 @@ class SumSalaryByMonthAction extends Action
                 return $this->controller->redirect(['motivation/index']);
             }
 
-            $weeks = [
-                ['start' => 1, 'end' => 7],
-                ['start' => 8, 'end' => 14],
-                ['start' => 15, 'end' => 21],
-                ['start' => 22, 'end' => 28],
-            ];
-
-            $lastDayOfMonth = date('t', strtotime("$year-$month-01"));
-
-
-            // Проверяем, существует ли 29-е число в текущем месяце (для не високосного года в феврале его не будет)
-            if ($lastDayOfMonth > 28) {
-                $weeks[] = ['start' => 29, 'end' => $lastDayOfMonth];
-            }
+            $weeks = MotivationService::getWeeksOfMonthArray($year, $month);
 
             foreach ($weeks as $weekIndex => $week) {
                 $startDate = date("Y-m-d", strtotime("$year-$month-" . $week['start']));
index 6829c53db93afc9b96b1849aa586b2562352b1a4..437cbf8c671fbb5b131d9adf7f90463243c9523d 100644 (file)
@@ -19,7 +19,7 @@ use yii_app\records\Sales;
 use yii_app\records\SalesProducts;
 use yii_app\records\TimetableFactModel;
 use yii_app\records\Timetable;
-use DateTime;
+
 
 
 
@@ -915,4 +915,41 @@ class MotivationService
         }
         return $dailyPayments;
     }
+
+    /**
+     * Возвращает массив, представляющий недели месяца (с указаниме начала и конца недели) для указанного года и месяца.
+     *
+     * @param int|string $year  Год в виде числа или строки (например, `2024` или `'2024'`).
+     * @param int|string $month Месяц в виде числа или строки (например, `2` или `'02'`).
+     *
+     * @return array Массив недель месяца, где каждая неделя представлена ассоциативным массивом с ключами 'start' и 'end'.
+     *               Пример возвращаемого массива:
+     *               [
+     *                   ['start' => 1, 'end' => 7],
+     *                   ['start' => 8, 'end' => 14],
+     *                   ['start' => 15, 'end' => 21],
+     *                   ['start' => 22, 'end' => 28],
+     *                   ['start' => 29, 'end' => 30] // если месяц имеет больше 28 дней
+     *               ]
+     */
+    public static function getWeeksOfMonthArray($year, $month): array
+    {
+        // Массив недель, изначально включающий первые четыре недели
+        $weeks = [
+            ['start' => 1, 'end' => 7],
+            ['start' => 8, 'end' => 14],
+            ['start' => 15, 'end' => 21],
+            ['start' => 22, 'end' => 28],
+        ];
+
+        // Определяем последний день месяца
+        $lastDayOfMonth = date('t', strtotime("$year-$month-01"));
+
+        // Если в месяце больше 28 дней, добавляем пятую неделю
+        if ($lastDayOfMonth > 28) {
+            $weeks[] = ['start' => 29, 'end' => $lastDayOfMonth];
+        }
+
+        return $weeks;
+    }
 }