]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-399] refactor
authorAlexander Smirnov <fredeom@mail.ru>
Tue, 15 Apr 2025 09:27:12 +0000 (12:27 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Tue, 15 Apr 2025 09:27:12 +0000 (12:27 +0300)
erp24/commands/MatrixErpController.php

index f88523bc6c228a35e2c3cdbedf4ce82deeac9878..8720e47b2615f5e004913a2e14078dc2a9f44c39 100644 (file)
@@ -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());
-                    }
                 }
             }
         }