]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-433 Отчет по остаткам букетов для МП и причинам, если логика не проходит. Возможн...
authormarina <m.zozirova@gmail.com>
Tue, 1 Jul 2025 14:04:29 +0000 (17:04 +0300)
committermarina <m.zozirova@gmail.com>
Tue, 1 Jul 2025 14:04:29 +0000 (17:04 +0300)
erp24/actions/marketplace/ReportAction.php
erp24/services/MarketplaceService.php
erp24/views/marketplace/report.php

index 7e9ffd98c9a4c211449bcb496436d5de016b739d..8a48bde56b96a590417d4a0827678fa28839a9b3 100644 (file)
@@ -24,24 +24,36 @@ class ReportAction extends Action
             ])
             ->select('p1n.id');
 
-        $productsRaw = Products1c::find()
+        $products = Products1c::find()
+            ->alias('p1n')
+            ->leftJoin('prices p', 'p.product_id = p1n.id')
+            ->leftJoin('matrix_erp_property mep', 'mep.guid = p1n.id')
+            ->select([
+                'p1n.id',
+                'p1n.name',
+                'p1n.articule',
+                new \yii\db\Expression("
+            CASE 
+                WHEN mep.id IS NULL AND p.price IS NULL THEN 
+                    'Не имеет состава букета в MatrixErpProperty и нет цена'
+                WHEN mep.id IS NULL THEN 
+                    'Не имеет состава букета в MatrixErpProperty'
+                WHEN p.price IS NULL THEN 
+                    'Нет цены'
+                ELSE NULL
+            END AS reason
+        "),
+                new \yii\db\Expression("
+            CASE 
+                WHEN mep.id IS NULL OR p.price IS NULL THEN FALSE
+                ELSE TRUE
+            END AS is_valid
+        ")
+            ])
             ->where(['in', 'parent_id', $subQuery])
-            ->limit(10)
+            ->asArray()
             ->all();
 
-        $marketplaceService = new MarketplaceService();
-
-        $products = [];
-
-        foreach ($productsRaw as $product) {
-            $check = $marketplaceService->checkProducts($product, true);
-            $products[] = [
-                'id' => $product->id,
-                'name' => $product->name,
-                'articule' => $product->articule,
-                'checkResult' => $check !== false ? 'true' : 'false',
-            ];
-        }
 
         $dataProvider = new ArrayDataProvider([
             'allModels' => $products,
index e309da99389174ae06c955bbcabfd00ddd92f9d4..7bc8b269e54bdecf0f0a665578bcfab4446ab539 100644 (file)
@@ -486,19 +486,8 @@ class MarketplaceService
             return false;
         }
 
-        $price = MarketplaceService::getProductPrice($product->id);
-        if ($price == 0) {
-            if ($isView) {
-                $message = "У товара {$product->id} отсутствует цена и он будет исключен из фида.";
-                Yii::error($message, __METHOD__);
-                InfoLogService::setInfoLog(__FILE__, __LINE__, $message, 'Zero price error');
-            }
-            return false;
-        }
-
         return [
             'properties' => $properties,
-            'price' => $price,
         ];
     }
 
index a3fedd2c95f85c1fab99446890bb93daf150ef36..4195a3e9d9101a4eba52fe4057bf75514a6eaef6 100644 (file)
@@ -20,7 +20,21 @@ $this->params['breadcrumbs'][] = $this->title;
             'name',
             'articule',
             'id',
-            'checkResult',
+            [
+                'attribute' => 'is_valid',
+                'label' => 'Активен ли букет на МП?',
+                'value' => function ($model) {
+                    return $model->is_valid ? 'Да' : 'Нет';
+                }
+            ],
+            [
+                'attribute' => 'reason',
+                'label' => 'Причина не активности',
+                'value' => function ($model) {
+                    return $model->reason;
+                }
+            ],
+            'reason',
         ],
     ]); ?>