From: marina Date: Tue, 13 May 2025 14:01:22 +0000 (+0300) Subject: ERP-413 Обработка ОС Планограмма (месяц) X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=76d5a4296f6f5de378207350a69016fb25a03302;p=erp24_rep%2Fyii-erp24%2F.git ERP-413 Обработка ОС Планограмма (месяц) --- diff --git a/erp24/services/AutoPlannogrammaService.php b/erp24/services/AutoPlannogrammaService.php index 5a331451..45ee78d8 100644 --- a/erp24/services/AutoPlannogrammaService.php +++ b/erp24/services/AutoPlannogrammaService.php @@ -86,6 +86,22 @@ class AutoPlannogrammaService ':month3' => $month3, ]); + if ($type == self::TYPE_SALES) { + $weightedSumExpression = new Expression("SUM(CASE + WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month3 THEN + CASE WHEN $alias.operation = 'Возврат' THEN -$productAlias.summ * 3 ELSE $productAlias.summ * 3 END + WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month2 THEN + CASE WHEN $alias.operation = 'Возврат' THEN -$productAlias.summ * 2 ELSE $productAlias.summ * 2 END + WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month1 THEN + CASE WHEN $alias.operation = 'Возврат' THEN -$productAlias.summ * 1 ELSE $productAlias.summ * 1 END + ELSE 0 END)", [ + ':month1' => $month1, + ':month2' => $month2, + ':month3' => $month3, + ]); + + } + // Основной запрос с CTE $query = (new Query()) ->select([ @@ -198,7 +214,7 @@ class AutoPlannogrammaService $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]); } - $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : 'SUM(sp.summ)'; + $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : "SUM(CASE WHEN s.operation = 'Возврат' THEN -sp.summ ELSE sp.summ END)"; $fromTable = $type === self::TYPE_WRITE_OFFS ? ['w' => 'write_offs'] : ['s' => 'sales']; $productJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'wp.product_id' : 'sp.product_id'; $storeJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'ex.export_val = w.store_id' : 'ex.export_val = s.store_id_1c'; @@ -339,7 +355,7 @@ class AutoPlannogrammaService $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]); } - $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : 'SUM(sp.summ)'; + $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : "SUM(CASE WHEN s.operation = 'Возврат' THEN -sp.summ ELSE sp.summ END)"; $fromTable = $type === self::TYPE_WRITE_OFFS ? ['w' => 'write_offs'] : ['s' => 'sales']; $productJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'wp.product_id' : 'sp.product_id'; $storeJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'ex.export_val = w.store_id' : 'ex.export_val = s.store_id_1c';