]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Перенос логики получения брака
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 1 Dec 2025 06:57:46 +0000 (09:57 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 1 Dec 2025 06:57:46 +0000 (09:57 +0300)
erp24/controllers/WriteOffsErpController.php
erp24/views/write_offs_erp/_form.php
erp24/views/write_offs_erp/create.php
erp24/views/write_offs_erp/update.php

index 59019f6078576e7eddba62a35ba79caabc642fbd..bf199530223f7d9097017a2cdd4a062550d422e3 100644 (file)
@@ -76,6 +76,44 @@ class WriteOffsErpController extends Controller
         ];
     }
 
+    /**
+     * Получает и обрабатывает список типов списания из справочника аналитики.
+     * Убирает префиксы вида "2_" и сортирует так, чтобы "Брак" был первым.
+     * 
+     * @return array Массив типов списания, где ключ и значение - название типа
+     */
+    protected function getProcessedAnalytics()
+    {
+        $analytics = \yii_app\records\AnalystsBusinessOperations::find()
+            ->where(['type_id' => 2])
+            ->andWhere(['active' => 1])
+            ->andWhere(['show' => 1])
+            ->indexBy('id')
+            ->asArray()
+            ->all();
+        
+        $analyticsOps = ArrayHelper::map($analytics, 'id', 'name');
+        $processedAnalytics = [];
+        
+        foreach ($analyticsOps as $key => $value) {
+            if (strpos($value, '_') !== false) {
+                $parts = explode('_', $value, 2);
+                $value = $parts[1];
+            }
+            $processedAnalytics[$value] = $value;
+        }
+        
+        // Сортируем так, чтобы "Брак" был первым
+        $brakKey = \yii_app\records\WriteOffsErp::WRITE_OFFS_TYPE_BRAK;
+        if (isset($processedAnalytics[$brakKey])) {
+            $brak = [$brakKey => $processedAnalytics[$brakKey]];
+            unset($processedAnalytics[$brakKey]);
+            $processedAnalytics = $brak + $processedAnalytics;
+        }
+        
+        return $processedAnalytics;
+    }
+
     /**
      * Lists all WriteOffsErp models.
      *
@@ -415,6 +453,7 @@ class WriteOffsErpController extends Controller
 
         $listCityStoreNames = CityStore::getNames($storeIds);
         $listCauseDict = WriteOffsProductsErp::getCauseDict($groupId);
+        $processedAnalytics = $this->getProcessedAnalytics();
 
         if ($this->request->isPost) {
             if ($model->load(Yii::$app->request->post())) {
@@ -545,6 +584,7 @@ class WriteOffsErpController extends Controller
                         'listCauseDict' => $listCauseDict,
                         'listProductsDict' => $listProductsDict,
                         'balanceDict' => $balanceDict,
+                        'processedAnalytics' => $processedAnalytics,
                         'errors' => $errors
                     ]);
                 }
@@ -619,6 +659,7 @@ class WriteOffsErpController extends Controller
                             'listCauseDict' => $listCauseDict,
                             'listProductsDict' => $listProductsDict,
                             'balanceDict' => $balanceDict,
+                            'processedAnalytics' => $processedAnalytics,
                             'errors' => $errors
                         ]);
                     }
@@ -636,6 +677,7 @@ class WriteOffsErpController extends Controller
             'listCauseDict' => $listCauseDict,
             'listProductsDict' => $listProductsDict,
             'balanceDict' => $balanceDict,
+            'processedAnalytics' => $processedAnalytics,
         ];
 
         return $this->render('/write_offs_erp/create', $params);
@@ -750,6 +792,7 @@ class WriteOffsErpController extends Controller
 
         $listCityStoreNames = CityStore::getNames($storeIds);
         $listCauseDict = WriteOffsProductsErp::getCauseDict();
+        $processedAnalytics = $this->getProcessedAnalytics();
 
 
         if ($this->request->isPost && $model->load($this->request->post())) {
@@ -921,6 +964,7 @@ class WriteOffsErpController extends Controller
                     'listCauseDict' => $listCauseDict,
                     'listProductsDict' => $listProductsDict,
                     'balanceDict' => $balanceDict,
+                    'processedAnalytics' => $processedAnalytics,
                     'errors' => $errors
                 ]);
             }
@@ -1010,6 +1054,7 @@ class WriteOffsErpController extends Controller
                     'listCauseDict' => $listCauseDict,
                     'listProductsDict' => $listProductsDict,
                     'balanceDict' => $balanceDict,
+                    'processedAnalytics' => $processedAnalytics,
                     'errors' => $e->getMessage()
                 ]);
             }
@@ -1028,6 +1073,7 @@ class WriteOffsErpController extends Controller
             'listCauseDict' => $listCauseDict,
             'listProductsDict' => $listProductsDict,
             'balanceDict' => $balanceDict,
+            'processedAnalytics' => $processedAnalytics,
         ];
 
         return $this->render('/write_offs_erp/update', $params);
index 1adea523853651fd11f7d45742a2959c93cf366a..400728fd6b4613ce79b3a440386da75388467644 100644 (file)
@@ -15,7 +15,6 @@ use yii\widgets\ActiveForm;
 use dosamigos\datetimepicker\DateTimePicker;
 use wbraganca\dynamicform\DynamicFormWidget;
 use yii_app\helpers\PrintBlockHelper;
-use yii_app\records\AnalystsBusinessOperations;
 use yii_app\records\Files;
 use yii_app\records\WriteOffsErp;
 use yii_app\records\WriteOffsProductsErp;
@@ -29,6 +28,7 @@ use yii_app\records\WriteOffsProductsErp;
 /** @var array $listCauseDict */
 /** @var array $listProductsDict */
 /** @var array $balanceDict */
+/** @var array $processedAnalytics */
 /** @var bool $isUpdate */
 
 
@@ -49,23 +49,6 @@ $this->registerJsFile('/js/heic_to_jpg_replace.js', ['position' => \yii\web\View
     ],
     'position' => \yii\web\View::POS_END,
 ]);*/
-$analytics = AnalystsBusinessOperations::find()
-    ->where(['type_id' => 2])
-    ->andWhere(['active' => 1])
-    ->andWhere(['show' => 1])
-    ->indexBy('id')
-    ->asArray()
-    ->all();
-$analyticsOps = ArrayHelper::map($analytics, 'id', 'name');
-$processedAnalytics = [];
-
-foreach ($analyticsOps as $key => $value) {
-    if (strpos($value, '_') !== false) {
-        $parts = explode('_', $value, 2);
-        $value = $parts[1];
-    }
-    $processedAnalytics[$value] = $value;
-}
 ?>
 
 <style>
@@ -121,12 +104,6 @@ foreach ($analyticsOps as $key => $value) {
             ],
         ]
     ]); ?>
-    <?php
-    
-    if ($model->isNewRecord && empty($model->write_offs_type)) {
-        $model->write_offs_type = WriteOffsErp::WRITE_OFFS_TYPE_BRAK;
-    }
-    ?>
 
     <?= $form->field($model, 'store_id')->dropDownList($listCityStoreNames) ?>
 
index 0c3b586d08bab99b76fce29266a4258aba326ca0..87493e3c50244575a533031180af5f5e1a699087 100644 (file)
@@ -10,6 +10,7 @@ use yii\helpers\Html;
 /** @var array $listCauseDict */
 /** @var array $listProductsDict */
 /** @var array $balanceDict */
+/** @var array $processedAnalytics */
 
 $this->title = 'Создание документа списания в ERP';
 $this->params['breadcrumbs'][] = ['label' => 'Write Offs Erps', 'url' => ['index']];
@@ -35,6 +36,7 @@ $this->params['breadcrumbs'][] = $this->title;
         'listCauseDict' => $listCauseDict,
         'listProductsDict' => $listProductsDict,
         'balanceDict' => $balanceDict,
+        'processedAnalytics' => $processedAnalytics,
         'isUpdate' => false,
     ]) ?>
 
index e2b4e396d348c4e033bccfbea5514b215e2e9599..cbdce38251fc95e1104bd99094d6fd4065ca63f5 100644 (file)
@@ -11,6 +11,7 @@ use yii\helpers\Url;
 /** @var array $listCauseDict */
 /** @var array $listProductsDict */
 /** @var array $balanceDict */
+/** @var array $processedAnalytics */
 
 $this->title = 'Изменение документа списания номер ' . $model->number . ' от '. $model->date;
 $this->params['breadcrumbs'][] = ['label' => 'Write Offs Erps', 'url' => ['index']];
@@ -57,6 +58,7 @@ $this->registerJsFile('/js/write-offs-erp/update.js', ['position' => \yii\web\Vi
         'listCauseDict' => $listCauseDict,
         'listProductsDict' => $listProductsDict,
         'balanceDict' => $balanceDict,
+        'processedAnalytics' => $processedAnalytics,
         'isUpdate' => true,
     ]) ?>