From: Alexander Smirnov Date: Mon, 8 Apr 2024 06:16:19 +0000 (+0300) Subject: fix charts-for-management for pgsql X-Git-Tag: 1.1~161^2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=63ff94e073ca52f027c6dfc8487e0004b9058c4f;p=erp24_rep%2Fyii-erp24%2F.git fix charts-for-management for pgsql --- diff --git a/erp24/records/ChartDataSearch.php b/erp24/records/ChartDataSearch.php index 0328fe2f..37b3e4b9 100644 --- a/erp24/records/ChartDataSearch.php +++ b/erp24/records/ChartDataSearch.php @@ -321,7 +321,7 @@ class ChartDataSearch //region DATE $dates_query = (new Query())->from('( - SELECT :date_end - INTERVAL (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) DAY AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -374,7 +374,7 @@ class ChartDataSearch $plan_query = PlanStore::find() ->andWhere([ 'BETWEEN', - 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')', + 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($this->date_start)), date('Y-m-d', strtotime($this->date_end)) ]) @@ -385,13 +385,13 @@ class ChartDataSearch 'store_dynamic.store_id = plan_store.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')') ], 'store_dynamic.category = 1' ] @@ -399,13 +399,13 @@ class ChartDataSearch $plan_query->select([ 'plan' => $this->attributes_array[$this->attribute_name]['plan_attribute'][0] ?? 1, - 'date' => 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_id' => 'store_dynamic.store_id' ]); $plan_query->groupBy([ - 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')', + 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.store_id' ]); @@ -416,16 +416,15 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); - $query->leftJoin( ['rnp' => $rnp_query], [ 'AND', - 'dates_column.date = rnp.date', + 'date(dates_column.date) = rnp.date', 'city_store.id = rnp.store_id', 'store_dynamic.value_int = rnp.cluster_id', 'rnp_alias.id = rnp.alias' @@ -554,7 +553,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'%Y-%m-%d\') AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -572,8 +571,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -599,7 +598,7 @@ class ChartDataSearch $sales_query = Sales::find(); $sales_query->addSelect([ - 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END', + 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END', 'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -618,13 +617,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END') ], 'store_dynamic.category = 1' ] @@ -635,13 +634,13 @@ class ChartDataSearch $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']); $invalid_sales->andWhere([ '>=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($this->date_start)) ]); $invalid_sales->andWhere([ '<=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime('+1 week', strtotime($this->date_end))) ]); @@ -651,7 +650,7 @@ class ChartDataSearch //endregion $sales_query->addGroupBy([ - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END', 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -664,7 +663,7 @@ class ChartDataSearch $write_offs_query = WriteOffs::find(); $write_offs_query->addSelect([ - 'date' => 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', 'shift_type' => 'CASE WHEN extract(HOUR from write_offs.date) >= 8 AND extract(HOUR from write_offs.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -688,13 +687,13 @@ class ChartDataSearch 'store_dynamic.store_id = export_import_table.entity_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], 'store_dynamic.category = 1', ] @@ -705,7 +704,7 @@ class ChartDataSearch ]); $write_offs_query->addGroupBy([ - 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', 'CASE WHEN extract(HOUR from write_offs.date) >= 8 AND extract(HOUR from write_offs.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -737,13 +736,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], 'store_dynamic.category = 1' ] @@ -787,13 +786,13 @@ class ChartDataSearch 'store_dynamic.store_id = export_import_table.entity_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], 'store_dynamic.category = 1' ] @@ -824,14 +823,14 @@ class ChartDataSearch //Продажи $sales_query->andWhere([ 'BETWEEN', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($this->date_start)), date('Y-m-d', strtotime($this->date_end)) ]); $sales_products->andWhere([ 'BETWEEN', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($this->date_start)), date('Y-m-d', strtotime($this->date_end)) ]); @@ -839,7 +838,7 @@ class ChartDataSearch //Списания $write_offs_query->andWhere([ 'BETWEEN', - 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($this->date_start)), date('Y-m-d', strtotime($this->date_end)) ]); @@ -847,7 +846,7 @@ class ChartDataSearch //По продуктам $write_offs_product_query->andWhere([ 'BETWEEN', - 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($this->date_start)), date('Y-m-d', strtotime($this->date_end)) ]); @@ -1088,7 +1087,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - INTERVAL (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) DAY AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -1106,8 +1105,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -1133,7 +1132,7 @@ class ChartDataSearch $sales_query = Sales::find(); $sales_query->addSelect([ - 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -1152,13 +1151,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], ] ); @@ -1179,20 +1178,20 @@ class ChartDataSearch 'store_dynamic.store_id = invalid_sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END') ], ] ); $invalid_sales->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN]) ->select([ - 'date' => 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'date' => 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', 'shift_type' => 'case WHEN exctract(HOUR from invalid_sales.date) >= 8 AND extract(HOUR from invalid_sales.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -1201,18 +1200,18 @@ class ChartDataSearch $invalid_sales->andWhere([ '>=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_end)) ]); $invalid_sales->groupBy([ - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', 'CASE WHEN extract(HOUR from invalid_sales.date) >= 8 AND extract(HOUR from invalid_sales.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -1230,7 +1229,7 @@ class ChartDataSearch $sales_query->andWhere('sales.order_id = \'\''); $sales_query->addGroupBy([ - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -1264,13 +1263,13 @@ class ChartDataSearch 'store_dynamic.store_id = admin_payroll_days.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'YYYY-MM-DD\')') ], ] ); @@ -1300,7 +1299,7 @@ class ChartDataSearch //Продажи $sales_query->andWhere([ 'BETWEEN', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)), date('Y-m-d', strtotime($date_end)) ]); @@ -1551,7 +1550,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -1569,8 +1568,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -1596,7 +1595,7 @@ class ChartDataSearch $sales_query = Sales::find(); $sales_query->addSelect([ - 'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', 'store_id' => 'city_store.id' @@ -1614,13 +1613,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], ] ); @@ -1641,20 +1640,20 @@ class ChartDataSearch 'store_dynamic.store_id = invalid_sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')') ], ] ); $invalid_sales->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN]) ->select([ - 'date' => 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', 'store_id' => 'city_store.id' @@ -1662,18 +1661,18 @@ class ChartDataSearch $invalid_sales->andWhere([ '>=', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_end)) ]); $invalid_sales->groupBy([ - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.id', 'city_store.id' @@ -1690,7 +1689,7 @@ class ChartDataSearch $sales_query->andWhere('sales.order_id = \'\''); $sales_query->addGroupBy([ - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.id', 'city_store.id' @@ -1703,7 +1702,7 @@ class ChartDataSearch $write_offs_query = WriteOffs::find(); $write_offs_query->addSelect([ - 'date' => 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', 'store_id' => 'city_store.id' @@ -1726,13 +1725,13 @@ class ChartDataSearch 'store_dynamic.store_id = export_import_table.entity_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')') ], ] ); @@ -1742,7 +1741,7 @@ class ChartDataSearch ]); $write_offs_query->addGroupBy([ - 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.id', 'city_store.id' @@ -1756,7 +1755,7 @@ class ChartDataSearch //Продажи $sales_query->andWhere([ 'BETWEEN', - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)), date('Y-m-d', strtotime($date_end)) ]); @@ -1764,7 +1763,7 @@ class ChartDataSearch //Списания $write_offs_query->andWhere([ 'BETWEEN', - 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)), date('Y-m-d', strtotime($date_end)) ]); @@ -1985,7 +1984,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -2003,8 +2002,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -2030,7 +2029,7 @@ class ChartDataSearch $sales_query = Sales::find(); $sales_query->addSelect([ - 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -2049,13 +2048,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], ] ); @@ -2065,13 +2064,13 @@ class ChartDataSearch $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']); $invalid_sales->andWhere([ '>=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime('+1 week', strtotime($date_start))) ]); @@ -2084,7 +2083,7 @@ class ChartDataSearch $sales_query->andWhere('sales.order_id = \'\''); $sales_query->addGroupBy([ - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -2099,7 +2098,7 @@ class ChartDataSearch //Продажи $sales_query->andWhere([ 'BETWEEN', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)), date('Y-m-d', strtotime($date_end)) ]); @@ -2283,7 +2282,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -2301,8 +2300,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -2328,7 +2327,7 @@ class ChartDataSearch $sales_query = Sales::find(); $sales_query->addSelect([ - 'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', 'store_id' => 'city_store.id' @@ -2346,13 +2345,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], ] ); @@ -2362,13 +2361,13 @@ class ChartDataSearch $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']); $invalid_sales->andWhere([ '>=', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<=', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime('+1 week', strtotime($date_start))) ]); @@ -2381,7 +2380,7 @@ class ChartDataSearch $sales_query->andWhere('sales.order_id = \'\''); $sales_query->addGroupBy([ - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.id', 'city_store.id' @@ -2395,7 +2394,7 @@ class ChartDataSearch //Продажи $sales_query->andWhere([ 'BETWEEN', - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)), date('Y-m-d', strtotime($date_end)) ]); @@ -2566,7 +2565,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -2584,8 +2583,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -2609,7 +2608,7 @@ class ChartDataSearch $matrix_query = Sales::find(); $matrix_query->addSelect([ - 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', @@ -2628,13 +2627,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END') ], ] ); @@ -2644,13 +2643,13 @@ class ChartDataSearch $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']); $invalid_sales->andWhere([ '>=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<=', - 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime('+1 week', strtotime($date_start))) ]); /* Конец проверки продажи */ @@ -2664,7 +2663,7 @@ class ChartDataSearch $matrix_query->andWhere(['NOT IN', 'sales.id', $invalid_sales]); $matrix_query->addGroupBy([ - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END', 'store_dynamic.value_int', 'store_dynamic.id', @@ -2675,12 +2674,12 @@ class ChartDataSearch 'AND', [ '>=', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_start)) ], [ '<=', - 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END', + 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END', date('Y-m-d', strtotime($date_end)) ] ]); @@ -2887,7 +2886,7 @@ class ChartDataSearch //region Даты // Нужно для соединения составляющих запроса (left join) $dates_query = (new Query())->from('( - SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date + SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date FROM (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds @@ -2905,8 +2904,8 @@ class ChartDataSearch [ 'BETWEEN', 'dates_column.date', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), ] ); //endregion @@ -2930,7 +2929,7 @@ class ChartDataSearch $matrix_query = Sales::find(); $matrix_query->addSelect([ - 'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'cluster_id' => 'store_dynamic.value_int', 'store_dynamic_id' => 'store_dynamic.id', 'store_id' => 'city_store.id' @@ -2948,13 +2947,13 @@ class ChartDataSearch 'store_dynamic.store_id = sales.store_id', [ '<=', - new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], [ '>', - new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'), - new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')') + new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'), + new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')') ], ] ); @@ -2964,13 +2963,13 @@ class ChartDataSearch $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']); $invalid_sales->andWhere([ '>=', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)) ]); $invalid_sales->andWhere([ '<=', - 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime('+1 week', strtotime($date_start))) ]); /* Конец проверки продажи */ @@ -2984,7 +2983,7 @@ class ChartDataSearch $matrix_query->andWhere(['NOT IN', 'sales.id', $invalid_sales]); $matrix_query->addGroupBy([ - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', 'store_dynamic.value_int', 'store_dynamic.id', 'city_store.id' @@ -2994,12 +2993,12 @@ class ChartDataSearch 'AND', [ '>=', - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_start)) ], [ '<=', - 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')', + 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')', date('Y-m-d', strtotime($date_end)) ] ]);