$sales = Sales::find()->alias('s')->select(["COUNT(*) as cnt",
"sum(CASE WHEN operation='Продажа' THEN s.summ ELSE (CASE WHEN operation='Возврат' THEN -s.summ ELSE 0 END) END) as total",
"sum(CASE WHEN s.phone is null THEN 0 ELSE 1 END) as bonusUserCount",
- "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.sale_cnt IS NULL) OR u.sale_cnt < 2) THEN 1 ELSE 0 END) as newBonusUserCount",
- "sum(CASE WHEN (s.phone IS NOT NULL) AND u.sale_cnt > 1 THEN 1 ELSE 0 END) as repeatBonusUserCount",
+ "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.date_first_sale IS NOT NULL) AND (u.date_first_sale = s.date)) THEN 1 ELSE 0 END) as newBonusUserCount",
+ "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.date_first_sale IS NULL) OR (u.date_first_sale < s.date)) THEN 1 ELSE 0 END) as repeatBonusUserCount",
"s.store_id",
"s.admin_id"])
->leftJoin('users u', 'u.phone = s.phone::varchar(20) AND u.phone IN (\''
$sales = Sales::find()->alias('s')->select(["COUNT(*) as cnt",
"sum(CASE WHEN operation='Продажа' THEN s.summ ELSE (CASE WHEN operation='Возврат' THEN -s.summ ELSE 0 END) END) as total",
"sum(CASE WHEN s.phone is null THEN 0 ELSE 1 END) as bonusUserCount",
- "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.sale_cnt IS NULL) OR u.sale_cnt < 2) THEN 1 ELSE 0 END) as newBonusUserCount",
- "sum(CASE WHEN (s.phone IS NOT NULL) AND u.sale_cnt > 1 THEN 1 ELSE 0 END) as repeatBonusUserCount",
+ "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.date_first_sale IS NOT NULL) AND (u.date_first_sale = s.date)) THEN 1 ELSE 0 END) as newBonusUserCount",
+ "sum(CASE WHEN (s.phone IS NOT NULL) AND ((u.date_first_sale IS NULL) OR (u.date_first_sale < s.date)) THEN 1 ELSE 0 END) as repeatBonusUserCount",
'store_id_1c',
])
->leftJoin('users u', 'u.phone = s.phone::varchar(20) AND u.phone IN (\''