use Yii;
use yii\base\Exception;
+use yii\data\ArrayDataProvider;
+use yii\db\Query;
use yii_app\records\MarketplaceOrders;
use yii_app\records\MarketplaceOrdersSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii_app\records\MarketplaceOrderStatusTypes;
+use yii_app\records\OrdersAmo;
use yii_app\services\MarketplaceService;
/**
throw new NotFoundHttpException('The requested page does not exist.');
}
+
+
+ public function actionAllOrders()
+ {
+ $queryAmo = (new Query())
+ ->select([
+ new \yii\db\Expression("'amo' AS source"),
+ 'id',
+ new \yii\db\Expression('store_id::VARCHAR AS store_id'),
+ new \yii\db\Expression('status_id::BIGINT AS status_id'),
+ 'updated_at',
+ new \yii\db\Expression('NULL::VARCHAR AS marketplace_order_id'),
+ new \yii\db\Expression('NULL::VARCHAR AS substatus_id'),
+ new \yii\db\Expression('NULL::VARCHAR AS warehouse_guid'),
+ new \yii\db\Expression('NULL::TIMESTAMP AS creation_date'),
+ new \yii\db\Expression('NULL::TIMESTAMP AS returned_at'),
+ new \yii\db\Expression('NULL::TEXT AS return_data'),
+ new \yii\db\Expression('NULL::INTEGER AS fake'),
+ new \yii\db\Expression('NULL::NUMERIC AS total'),
+ new \yii\db\Expression('NULL::NUMERIC AS delivery_total'),
+ new \yii\db\Expression('NULL::NUMERIC AS buyer_total_before_discount'),
+ new \yii\db\Expression('NULL::VARCHAR AS tax_system'),
+ new \yii\db\Expression('NULL::VARCHAR AS payment_type'),
+ new \yii\db\Expression('NULL::VARCHAR AS payment_method'),
+ new \yii\db\Expression('NULL::BOOLEAN AS cancel_requested'),
+ new \yii\db\Expression('NULL::TEXT AS raw_data'),
+ new \yii\db\Expression('NULL::VARCHAR AS guid'),
+ new \yii\db\Expression('NULL::VARCHAR AS status_1c')
+ ])
+ ->from(OrdersAmo::tableName());
+
+ $queryMarketplace = (new Query())
+ ->select([
+ new \yii\db\Expression("'marketplace' AS source"),
+ 'id',
+ new \yii\db\Expression('store_id::VARCHAR AS store_id'),
+ new \yii\db\Expression('status_id::BIGINT AS status_id'),
+ 'updated_at',
+ 'marketplace_order_id',
+ new \yii\db\Expression('substatus_id::VARCHAR AS substatus_id'),
+ 'warehouse_guid',
+ 'creation_date',
+ 'returned_at',
+ 'return_data',
+ new \yii\db\Expression('fake::INTEGER AS fake'),
+ 'total',
+ 'delivery_total',
+ 'buyer_total_before_discount',
+ 'tax_system',
+ 'payment_type',
+ 'payment_method',
+ new \yii\db\Expression("
+ CASE
+ WHEN cancel_requested = 1 THEN TRUE
+ WHEN cancel_requested = 0 THEN FALSE
+ ELSE NULL
+ END AS cancel_requested
+ "),
+ 'raw_data',
+ 'guid',
+ new \yii\db\Expression('status_1c::VARCHAR AS status_1c')
+ ])
+ ->from(MarketplaceOrders::tableName());
+
+ $unionQuery = (new Query())
+ ->from(['orders' => $queryAmo->union($queryMarketplace, true)]); // UNION ALL для скорости
+
+ $orders = $unionQuery->all();
+
+ $dataProvider = new ArrayDataProvider([
+ 'allModels' => $orders,
+ 'pagination' => [
+ 'pageSize' => 20
+ ],
+ 'sort' => [
+ 'attributes' => ['id', 'store_id', 'status_id', 'updated_at'],
+ ],
+ ]);
+
+ return $this->render('all-orders', [
+ 'dataProvider' => $dataProvider,
+ ]);
+ }
}