From: marina Date: Wed, 28 May 2025 09:32:14 +0000 (+0300) Subject: ERP-417 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=e321d7f1da86fcc03375cf5780a9b733afeef5ce;p=erp24_rep%2Fyii-erp24%2F.git ERP-417 --- diff --git a/erp24/controllers/WriteOffsErpController.php b/erp24/controllers/WriteOffsErpController.php index 2e5e372d..ca0b474b 100644 --- a/erp24/controllers/WriteOffsErpController.php +++ b/erp24/controllers/WriteOffsErpController.php @@ -820,76 +820,72 @@ class WriteOffsErpController extends Controller $writeOffsErpId = $model->getId(); foreach ($modelsProducts as $keyModelProduct => $modelProduct) { - /** @var WriteOffsProductsErp $modelProduct */ $modelProduct->setWriteOffsErpId($writeOffsErpId); $modelProduct->setCreatedAt(); - if (($flag = $modelProduct->save(false)) === false) { - $transaction->rollBack(); + + if (!$modelProduct->save(false)) { + $flag = false; break; } - if (!empty($modelsProductsFiles)) { - if (array_key_exists($keyModelProduct, $modelsProductsFiles)) { - $modelProductId = $modelProduct->id; + if (!empty($modelsProductsFiles) && array_key_exists($keyModelProduct, $modelsProductsFiles)) { + $modelProductId = $modelProduct->id; + $productFilesArray = ArrayHelper::getValue($modelsProductsFiles, $keyModelProduct); + $imageFiles = ArrayHelper::getValue($productFilesArray, 'imageFiles', []); + $hasNewPhotos = !empty(array_filter($imageFiles)); - $productFilesArray = ArrayHelper::getValue($modelsProductsFiles, $keyModelProduct); - $imageFiles = ArrayHelper::getValue($productFilesArray, 'imageFiles', []); - $hasNewPhotos = !empty(array_filter($imageFiles)); - - if (1 != (int)$modelProduct->add_image && !$hasNewPhotos && empty($videoFile)) { - ImageDocumentLink::deleteCurrentLinkImage($writeOffsErpId, $modelProductId, $documentGroupId, $adminId); - } - - if ($hasNewPhotos) { - foreach ($imageFiles as $index => $imageFile) { - if (Images::isImageFile($imageFile)) { - Yii::info("Загружаем фото #$index: " . $imageFile->name ?? 'нет имени', __METHOD__); + if ((int)$modelProduct->add_image !== 1 && !$hasNewPhotos && empty($videoFile)) { + ImageDocumentLink::deleteCurrentLinkImage($writeOffsErpId, $modelProductId, $documentGroupId, $adminId); + } - $image = new Images(); - $imageId = $image->loadImage($imageFile); - if ($imageId) { - $imageDocumentLink = new ImageDocumentLink(); - $imageDocumentLink->setActive() - ->setCreatedAt() - ->setCreatedAdminId($adminId) - ->setDocumentGroupId($documentGroupId) - ->setDocumentId($writeOffsErpId) - ->setDocumentItemId($modelProductId) - ->setImageId($imageId); - if ($imageDocumentLink->validate()) { - $imageDocumentLink->save(); - } else { - Yii::warning("Ошибки валидации ImageDocumentLink для фото #$index", __METHOD__); - } - } else { - Yii::warning("Не удалось загрузить фото #$index", __METHOD__); + if ($hasNewPhotos) { + foreach ($imageFiles as $index => $imageFile) { + if (Images::isImageFile($imageFile)) { + Yii::info("Загружаем фото #$index: " . ($imageFile->name ?? 'нет имени'), __METHOD__); + $image = new Images(); + $imageId = $image->loadImage($imageFile); + if ($imageId) { + $imageDocumentLink = new ImageDocumentLink(); + $imageDocumentLink->setActive() + ->setCreatedAt() + ->setCreatedAdminId($adminId) + ->setDocumentGroupId($documentGroupId) + ->setDocumentId($writeOffsErpId) + ->setDocumentItemId($modelProductId) + ->setImageId($imageId); + if (!$imageDocumentLink->validate() || !$imageDocumentLink->save()) { + Yii::warning("Ошибки валидации/saving ImageDocumentLink для фото #$index", __METHOD__); } } else { - Yii::info("Файл #$index не является изображением", __METHOD__); + Yii::warning("Не удалось загрузить фото #$index", __METHOD__); } + } else { + Yii::info("Файл #$index не является изображением", __METHOD__); } } + } - $videoFile = ArrayHelper::getValue($productFilesArray, 'videoFiles'); - if ($videoFile) { - Files::deleteAll(['entity_id' => $modelProductId, 'entity' => WriteOffsProductsErp::WRITE_OFFS_VIDEO]); - FileService::saveUploadedFile($videoFile, WriteOffsProductsErp::WRITE_OFFS_VIDEO, $modelProductId); - } + $videoFile = ArrayHelper::getValue($productFilesArray, 'videoFiles'); + if ($videoFile) { + Files::deleteAll(['entity_id' => $modelProductId, 'entity' => WriteOffsProductsErp::WRITE_OFFS_VIDEO]); + FileService::saveUploadedFile($videoFile, WriteOffsProductsErp::WRITE_OFFS_VIDEO, $modelProductId); } } } } - if ($flag) { - $transaction->commit(); - } + if ($flag) { $transaction->commit(); return $this->redirect(['/write-offs-erp/view', 'id' => $model->id]); + } else { + $transaction->rollBack(); } + } catch (Exception $e) { - $transaction->rollBack(); - $errors = $e->getMessage(); -var_dump($errors);die(); + if ($transaction->isActive) { + $transaction->rollBack(); + } + return $this->render('/write_offs_erp/update', [ 'model' => $model, 'multipleUploadForm' => $multipleUploadForm, @@ -897,10 +893,9 @@ var_dump($errors);die(); 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, - 'errors' => $errors + 'errors' => $e->getMessage() ]); } - } $modelsProductsArray = $modelArray['writeOffsProductsErps'];