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

index f589dbd4f40c76198ebe449f5ec5c17d4187e073..f73f9cde29ff26b785924699967dc3c941745256 100644 (file)
@@ -24,9 +24,9 @@ class ReportAction extends Action
             ])
             ->select('p1n.id');
 
-        $storeId = Yii::$app->request->get('store', 4);
-
-        $products = Products1c::find()
+        $storeId = Yii::$app->request->post('store', 'dbd70103-2c7b-11e9-9b87-c85b76f0e893');
+        $isValid = Yii::$app->request->post('is_valid');
+        $innerQuery = Products1c::find()
             ->alias('p1n')
             ->leftJoin('prices p', 'p.product_id = p1n.id')
             ->leftJoin('matrix_erp_property_dynamic mep', 'mep.product_id = p1n.id AND mep.active = 1')
@@ -47,7 +47,7 @@ class ReportAction extends Action
             FROM jsonb_each(
                 replace(trim(both '\"' from mep.value), '\"\"', '\"')::jsonb
             ) AS j(key, value)
-            LEFT JOIN balances b ON b.product_id::text = j.key AND b.store_id = '{$storeId}'
+            LEFT JOIN balances b ON b.product_id::text = j.key AND b.store_id = :storeId
             LEFT JOIN products_1c prod ON prod.id::text = j.key
         )
     ")], 'true')
@@ -56,35 +56,37 @@ class ReportAction extends Action
                 'p1n.name',
                 'p1n.articule',
                 new \yii\db\Expression("
-    (
-        'Коэффициент: ' || COALESCE(mp.reminder_koef::text, 'N/A') || E'\n' ||
-        COALESCE(
-            concat_ws(
-                E'\n',
-                CASE WHEN mep.id IS NULL THEN 'Не имеет состава букета' ELSE NULL END,
-                CASE WHEN p.price IS NULL THEN 'Нет имеет цены' ELSE NULL END
-            ),
-            ''
-        )
-        ||
-        CASE WHEN mp_check.has_insufficient_quantity THEN
-            E'\n' || mp_check.insuff_reason
-        ELSE ''
-        END
-    ) AS reason
-")
-
-                ,
+            (
+                'Коэффициент: ' || COALESCE(mp.reminder_koef::text, 'N/A') || E'\n' ||
+                COALESCE(
+                    concat_ws(
+                        E'\n',
+                        CASE WHEN mep.id IS NULL THEN 'Не имеет состава букета' ELSE NULL END,
+                        CASE WHEN p.price IS NULL THEN 'Нет имеет цены' ELSE NULL END
+                    ),
+                    ''
+                )
+                ||
+                CASE WHEN mp_check.has_insufficient_quantity THEN
+                    E'\n' || mp_check.insuff_reason
+                ELSE ''
+                END
+            ) AS reason
+        "),
                 new \yii\db\Expression("
-        CASE 
-            WHEN mep.id IS NULL OR p.price IS NULL OR mp_check.has_insufficient_quantity THEN FALSE
-            ELSE TRUE
-        END AS is_valid
-    "),
+            CASE 
+                WHEN mep.id IS NULL OR p.price IS NULL OR mp_check.has_insufficient_quantity THEN FALSE
+                ELSE TRUE
+            END AS is_valid
+        "),
             ])
             ->where(['in', 'parent_id', $subQuery])
+            ->params([':storeId' => $storeId]);
+
+        $products = (new \yii\db\Query())
+            ->from(['q' => $innerQuery])
+            ->andFilterWhere(['is_valid' => $isValid])
             ->orderBy(['is_valid' => SORT_ASC])
-            ->asArray()
             ->all();
 
 
index d3a1cc0ea490805bff513c6db65b4a68a5f0781c..c9392c4794cb8d5885f818e3cef16d28c36c1073 100644 (file)
@@ -22,12 +22,8 @@ $this->params['breadcrumbs'][] = $this->title;
             <div class="col-md">
                 <?= Select2::widget([
                     'name' => 'store',
-                    'value' => Yii::$app->request->get('store', 4),
-                    'data' => ArrayHelper::map(
-                        CityStore::findAll(['visible' => CityStore::IS_VISIBLE]),
-                        'id',
-                        'name'
-                    ),
+                    'value' => Yii::$app->request->post('store', 'dbd70103-2c7b-11e9-9b87-c85b76f0e893'),
+                    'data' => CityStore::getAllActiveGuidName(),
                     'options' => [
                         'placeholder' => 'Выберите магазин',
                     ],
@@ -36,12 +32,29 @@ $this->params['breadcrumbs'][] = $this->title;
                     ],
                 ]) ?>
             </div>
-            <div class="col-md-auto" style="padding-top: 5px;">
+            <div class="col-md">
+                <?= Select2::widget([
+                    'name' => 'is_valid',
+                    'value' => Yii::$app->request->post('is_valid'),
+                    'data' => [
+                        'true' => 'Да',
+                        'false' => 'Нет',
+                    ],
+                    'options' => [
+                        'placeholder' => 'Активен ли букет на МП?',
+                    ],
+                    'pluginOptions' => [
+                        'allowClear' => true,
+                    ],
+                ]) ?>
+            </div>
+            <div class="col-md-auto">
                 <?= Html::submitButton('Применить', ['class' => 'btn btn-primary']) ?>
             </div>
         </div>
         <?php ActiveForm::end() ?>
     </div>
+
     <?= GridView::widget([
         'dataProvider' => $dataProvider,
         'columns' => [