From f5107937023b8b1ee60d38ee989e7590673da2a7 Mon Sep 17 00:00:00 2001 From: vladfo Date: Wed, 9 Oct 2024 13:04:23 +0300 Subject: [PATCH] =?utf8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?utf8?q?=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8=20=D1=81=D0=BE?= =?utf8?q?=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20?= =?utf8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2=20MotivationServic?= =?utf8?q?e.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...ata_to_monitvation_from_motivation_buh.php | 45 ++++++++++++++----- erp24/services/MotivationService.php | 1 + 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/erp24/scripts/tasks/task_33_insert_data_to_monitvation_from_motivation_buh.php b/erp24/scripts/tasks/task_33_insert_data_to_monitvation_from_motivation_buh.php index a59dad51..5df8ba62 100644 --- a/erp24/scripts/tasks/task_33_insert_data_to_monitvation_from_motivation_buh.php +++ b/erp24/scripts/tasks/task_33_insert_data_to_monitvation_from_motivation_buh.php @@ -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 ================'; diff --git a/erp24/services/MotivationService.php b/erp24/services/MotivationService.php index a3058570..3ab5b416 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -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']; -- 2.39.5