]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Изменение логики сохранения и правки в MotivationService.php feature_fomichev_erp_197_update_motivation_table_data_task
authorvladfo <fvv2011@gmail.com>
Wed, 9 Oct 2024 10:04:23 +0000 (13:04 +0300)
committervladfo <fvv2011@gmail.com>
Wed, 9 Oct 2024 10:04:23 +0000 (13:04 +0300)
erp24/scripts/tasks/task_33_insert_data_to_monitvation_from_motivation_buh.php
erp24/services/MotivationService.php

index a59dad51e793deb89aa6f0db3812a0099e71a0f7..5df8ba625fee7d67d5ec558456a646534f418df4 100644 (file)
@@ -113,35 +113,58 @@ try {
             foreach ($motivationBuhValue as $value) {
                 $motivationBuh = MotivationBuh::findOne([$value->motivation_buh_id]);
 
+                // Поиск записи в Motivation по году, месяцу и store_id
                 $motivation = Motivation::findOne([
                     'year' => $motivationBuh->year,
                     'month' => $motivationBuh->month,
                     'store_id' => $value->store_id,
                 ]);
 
-
+                // Если не найдено, создаем новую запись Motivation
                 if (!$motivation) {
                     $motivation = new Motivation();
                     $motivation->setAttributes([
                         'year' => $motivationBuh->year,
                         'month' => $motivationBuh->month,
-                        'store_id' => $value->store_id
+                        'store_id' => $value->store_id,
                     ]);
                     $motivation->save();
                 }
 
+                // Поиск всех записей в MotivationValue с указанными условиями
+                $motivationValues = MotivationValue::find()
+                    ->andWhere([
+                        'motivation_id' => $motivation->id,
+                        'motivation_group_id' => $value->motivation_group_id,
+                        'value_id' => $value->value_id,
+                    ])
+                    ->all();
 
-                $motivationValue = MotivationValue::findOne([
-                    'motivation_id' => $motivation->id,
-                    'motivation_group_id' => $value->motivation_group_id,
-                    'value_id' => $value->value_id,
-                ]);
+                if (count($motivationValues) > 1) {
+                    // Если найдено несколько записей, удаляем все
+                    foreach ($motivationValues as $motivationValue) {
+                        $motivationValue->delete();
+                    }
 
+                    // Создаем новую запись
+                    $motivationValue = new MotivationValue();
+                    $motivationValue->setAttributes([
+                        'motivation_id' => $motivation->id,
+                        'motivation_group_id' => $value->motivation_group_id,
+                        'value_id' => $value->value_id,
+                        'value_type' => MotivationCostsItem::DATA_TYPE_FLOAT,
+                        'value_float' => $value->value_float,
+                    ]);
+                    $motivationValue->save();
 
-                if ($motivationValue) {
+                } elseif (count($motivationValues) === 1) {
+                    // Если найдена одна запись, обновляем её
+                    $motivationValue = $motivationValues[0];
                     $motivationValue->value_float = $value->value_float;
-                } else {
+                    $motivationValue->save();
 
+                } else {
+                    // Если запись не найдена, создаем новую
                     $motivationValue = new MotivationValue();
                     $motivationValue->setAttributes([
                         'motivation_id' => $motivation->id,
@@ -150,10 +173,8 @@ try {
                         'value_type' => MotivationCostsItem::DATA_TYPE_FLOAT,
                         'value_float' => $value->value_float,
                     ]);
+                    $motivationValue->save();
                 }
-
-
-                $motivationValue->save();
             }
 
             $info = ' ================ test Task ' . $taskNum . ' stop ================';
index a3058570965d79458eba34aded29faf20e360b2e..3ab5b4166f99318d4450f64a12fde55111846297 100644 (file)
@@ -240,6 +240,7 @@ class MotivationService
         // Подстановка значений расходных материалов
         //190 - порядок для расходных материалов
         $consumable = self::getConsumable($motivation->id);
+        $result[190]['week1'] = $consumable['week1'];
         $result[190]['week2'] = $consumable['week2'];
         $result[190]['week3'] = $consumable['week3'];
         $result[190]['week4'] = $consumable['week4'];