//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
$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))
])
'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'
]
$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'
]);
[
'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'
//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
[
'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
$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',
'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'
]
$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)))
]);
//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',
$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',
'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',
]
]);
$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',
'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'
]
'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'
]
//Продажи
$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))
]);
//Списания
$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))
]);
//По продуктам
$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))
]);
//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
[
'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
$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',
'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.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',
$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',
$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',
'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\')')
],
]
);
//Продажи
$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))
]);
//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
[
'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
$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'
'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\')')
],
]
);
'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'
$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'
$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'
$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'
'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\')')
],
]
);
]);
$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'
//Продажи
$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))
]);
//Списания
$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))
]);
//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
[
'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
$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',
'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')
],
]
);
$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)))
]);
$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',
//Продажи
$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))
]);
//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
[
'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
$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'
'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\')')
],
]
);
$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)))
]);
$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'
//Продажи
$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))
]);
//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
[
'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
$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',
'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')
],
]
);
$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)))
]);
/* Конец проверки продажи */
$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',
'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))
]
]);
//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
[
'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
$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'
'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\')')
],
]
);
$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)))
]);
/* Конец проверки продажи */
$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'
'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))
]
]);