]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Правки по отчету
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 22 Jan 2026 09:00:51 +0000 (12:00 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 22 Jan 2026 09:00:51 +0000 (12:00 +0300)
erp24/services/OrderControlReportService.php

index 8e848af02166495e221b95b232affb8168d2ce7d..bbf76327cac16685a0f87cfcb8fb9863b48bf96d 100644 (file)
@@ -744,7 +744,8 @@ class OrderControlReportService
     public function formatTelegramControlReport(ControlReportResult $result): string
     {
         $lines = [];
-        $lines[] = '*\[Контроль MP\]* Отчёт за ' . $this->escapeMarkdownV2($result->reportDate) . ' ' . $this->escapeMarkdownV2($result->interval);
+        $intervalWithShift = $this->formatIntervalWithShiftName($result->interval);
+        $lines[] = '*\[Контроль MP\]* Отчёт за ' . $this->escapeMarkdownV2($result->reportDate) . ' ' . $this->escapeMarkdownV2($intervalWithShift);
         $lines[] = '';
 
         // Секция "Завис в доставке"
@@ -776,7 +777,7 @@ class OrderControlReportService
     /**
      * Форматирует таблицу проблем для Telegram (моноширинный блок)
      *
-     * Формат: | Дата | Интервал | Заказ | РМК | МП
+     * Формат: | Дата | Интервал | Заказ | РМК | МП | Причина
      *
      * @param OrderIssue[] $issues
      * @return string
@@ -785,7 +786,7 @@ class OrderControlReportService
     {
         $rows = [];
         $rows[] = '```';
-        $rows[] = '| Дата | Интервал | Заказ | РМК | МП';
+        $rows[] = '| Дата | Интервал | Заказ | РМК | МП | Причина';
 
         foreach ($issues as $issue) {
             $rows[] = $this->formatIssueRow($issue);
@@ -799,7 +800,7 @@ class OrderControlReportService
     /**
      * Форматирует строку таблицы для проблемы
      *
-     * Формат: | Дата | Интервал | Заказ | РМК | МП
+     * Формат: | Дата | Интервал | Заказ | РМК | МП | Причина
      *
      * @param OrderIssue $issue
      * @return string
@@ -810,14 +811,16 @@ class OrderControlReportService
         $interval = $this->getShortInterval($issue->interval);
         $rmk = $issue->rmkStatus ?? '-';
         $mp = $this->formatMpStatus($issue);
+        $reason = $issue->getIssueReasonLabel() ?: '-';
 
         return sprintf(
-            '| %s | %s | %s | %s | %s',
+            '| %s | %s | %s | %s | %s | %s',
             $date,
             $interval,
             $issue->orderNumber,
             $rmk,
-            $mp
+            $mp,
+            $reason
         );
     }
 
@@ -844,6 +847,29 @@ class OrderControlReportService
         return $interval;
     }
 
+    /**
+     * Форматирует интервал с названием смены для заголовка отчёта
+     *
+     * 08:00 → "08:00 (день)"
+     * 20:00 → "20:00 (ночь)"
+     *
+     * @param string|null $interval
+     * @return string
+     */
+    private function formatIntervalWithShiftName(?string $interval): string
+    {
+        $shortInterval = $this->getShortInterval($interval);
+
+        if ($shortInterval === '08:00') {
+            return '08:00 (день)';
+        }
+        if ($shortInterval === '20:00') {
+            return '20:00 (ночь)';
+        }
+
+        return $shortInterval;
+    }
+
     /**
      * Форматирует МП-статус для отображения
      *
@@ -923,7 +949,7 @@ class OrderControlReportService
     </style>
 </head>
 <body>
-    <h2>[Контроль MP] Отчёт за ' . $this->escapeHtml($result->reportDate) . ' ' . $this->escapeHtml($result->interval) . '</h2>';
+    <h2>[Контроль MP] Отчёт за ' . $this->escapeHtml($result->reportDate) . ' ' . $this->escapeHtml($this->formatIntervalWithShiftName($result->interval)) . '</h2>';
 
         // Общая таблица со всеми проблемами, сортировка по типу
         $allIssues = [];
@@ -952,14 +978,16 @@ class OrderControlReportService
             <th>Заказ</th>
             <th>РМК</th>
             <th>МП</th>
+            <th>Причина</th>
         </tr>';
 
         foreach ($allIssues as $item) {
             /** @var OrderIssue $issue */
             $issue = $item['issue'];
             $date = $issue->reportDate ?: date('d.m.Y');
-            $interval = $issue->interval ?: OrderIssue::calculateInterval($this->testMode);
+            $interval = $this->getShortInterval($issue->interval);
             $mpStatus = $issue->mpStatus ?? '-';
+            $reason = $issue->getIssueReasonLabel() ?: '-';
 
             $html .= '
         <tr>
@@ -969,6 +997,7 @@ class OrderControlReportService
             <td>' . $this->escapeHtml($issue->orderNumber) . '</td>
             <td>' . $this->escapeHtml($issue->rmkStatus ?? '-') . '</td>
             <td>' . $this->escapeHtml($mpStatus) . '</td>
+            <td>' . $this->escapeHtml($reason) . '</td>
         </tr>';
         }