])
->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,
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,
];
}
'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',
],
]); ?>