From bd1b9c9f020ef4ca8ad7d10c5b7ea9d091deb1be Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Tue, 15 Apr 2025 12:27:12 +0300 Subject: [PATCH] [ERP-399] refactor --- erp24/commands/MatrixErpController.php | 72 ++++++++++++-------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/erp24/commands/MatrixErpController.php b/erp24/commands/MatrixErpController.php index f88523bc..8720e47b 100644 --- a/erp24/commands/MatrixErpController.php +++ b/erp24/commands/MatrixErpController.php @@ -3,6 +3,7 @@ namespace yii_app\commands; use yii\console\Controller; +use yii\helpers\ArrayHelper; use yii\helpers\Json; use yii_app\records\MatrixErp; use yii_app\records\MatrixErpProperty; @@ -15,59 +16,50 @@ class MatrixErpController extends Controller public function actionFromProductsOneC() { $existings = MatrixErp::find()->all(); $existingMapGuidGroupNames = []; + $existingMapGuidMatrixErp = []; foreach ($existings as $existing) { /* @var $existing MatrixErp */ $existingMapGuidGroupNames[$existing->guid][] = $existing->group_name; - }; + $existingMapGuidMatrixErp[$existing->guid] = $existing; + } $products = MarketplaceService::getMarketplaceProducts(); + $matrixErpPropertyDynamicByGuid = []; + foreach (range(1,2) as $ind) { + $matrixErpPropertyDynamicByGuid[$ind] = MatrixErpPropertyDynamic::find() + ->where(['product_id' => ArrayHelper::getColumn($products, 'id'), 'category' => $ind]) + ->indexBy('product_id')->asArray()->all(); + } + foreach ($products as $product) { /* @var $product Products1c */ if (in_array($product->id, array_keys($existingMapGuidGroupNames)) && (in_array('marketplace', $existingMapGuidGroupNames[$product->id]))) { - $matrixErp = MatrixErp::findOne(['guid' => $product->id]); - if ($matrixErp->components != $product->components) { - $matrixErpPropertyDynamic1 = MatrixErpPropertyDynamic::findOne(['product_id' => $matrixErp->guid, 'category' => 1]); - /* @var MatrixErpPropertyDynamic $matrixErpPropertyDynamic1 */ - if ($matrixErpPropertyDynamic1) { - $matrixErpPropertyDynamic1->date_end = date("Y-m-d H:i:s"); - $matrixErpPropertyDynamic1->save(); - if ($matrixErpPropertyDynamic1->getErrors()) { - var_dump($matrixErpPropertyDynamic1->getErrors()); + $matrixErp = $existingMapGuidMatrixErp[$product->id]; + foreach (['components', 'articule'] as $fieldInd => $field) { + if ($matrixErp->$field != $product->$field) { + $matrixErpPropertyDynamic1 = $matrixErpPropertyDynamicByGuid[$fieldInd + 1][$matrixErp->guid]; + /* @var MatrixErpPropertyDynamic $matrixErpPropertyDynamic1 */ + if ($matrixErpPropertyDynamic1) { + $matrixErpPropertyDynamic1->date_end = date("Y-m-d H:i:s"); + $matrixErpPropertyDynamic1->active = 0; + $matrixErpPropertyDynamic1->save(); + if ($matrixErpPropertyDynamic1->getErrors()) { + var_dump($matrixErpPropertyDynamic1->getErrors()); + } } - } - $matrixErpPropertyDynamic2 = new MatrixErpPropertyDynamic; - $matrixErpPropertyDynamic2->product_id = $matrixErp->guid; - $matrixErpPropertyDynamic2->value = $product->components; - $matrixErpPropertyDynamic2->category = 1; - $matrixErpPropertyDynamic2->date_from = date("Y-m-d H:i:s"); - $matrixErpPropertyDynamic2->date_end = '2100-01-01 00:00:00'; - $matrixErpPropertyDynamic2->save(); - if ($matrixErpPropertyDynamic2->getErrors()) { - var_dump($matrixErpPropertyDynamic2->getErrors()); - } - } - if ($matrixErp->articule != $product->articule) { - $matrixErpPropertyDynamic1 = MatrixErpPropertyDynamic::findOne(['product_id' => $matrixErp->guid, 'category' => 2]); - /* @var MatrixErpPropertyDynamic $matrixErpPropertyDynamic1 */ - if ($matrixErpPropertyDynamic1) { - $matrixErpPropertyDynamic1->date_end = date("Y-m-d H:i:s"); - $matrixErpPropertyDynamic1->save(); - if ($matrixErpPropertyDynamic1->getErrors()) { - var_dump($matrixErpPropertyDynamic1->getErrors()); + $matrixErpPropertyDynamic2 = new MatrixErpPropertyDynamic; + $matrixErpPropertyDynamic2->product_id = $matrixErp->guid; + $matrixErpPropertyDynamic2->value = $product->$field; + $matrixErpPropertyDynamic2->category = $fieldInd + 1; + $matrixErpPropertyDynamic2->date_from = date("Y-m-d H:i:s"); + $matrixErpPropertyDynamic2->date_end = '2100-01-01 00:00:00'; + $matrixErpPropertyDynamic2->save(); + if ($matrixErpPropertyDynamic2->getErrors()) { + var_dump($matrixErpPropertyDynamic2->getErrors()); } } - $matrixErpPropertyDynamic2 = new MatrixErpPropertyDynamic; - $matrixErpPropertyDynamic2->product_id = $matrixErp->guid; - $matrixErpPropertyDynamic2->value = $product->articule; - $matrixErpPropertyDynamic2->category = 2; - $matrixErpPropertyDynamic2->date_from = date("Y-m-d H:i:s"); - $matrixErpPropertyDynamic2->date_end = '2100-01-01 00:00:00'; - $matrixErpPropertyDynamic2->save(); - if ($matrixErpPropertyDynamic2->getErrors()) { - var_dump($matrixErpPropertyDynamic2->getErrors()); - } } } } -- 2.39.5