]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
суммирование возвратов и вычитание продаж origin/summ_only_sales
authormarina <m.zozirova@gmail.com>
Mon, 26 May 2025 10:02:05 +0000 (13:02 +0300)
committermarina <m.zozirova@gmail.com>
Mon, 26 May 2025 10:02:05 +0000 (13:02 +0300)
erp24/services/AutoPlannogrammaService.php

index 5bb2ddc15f1c80dcc6c7914fe658be091d43d4af..3481cf596de7a72190b9d654d2cd2642f3d944b6 100644 (file)
@@ -83,21 +83,23 @@ class AutoPlannogrammaService
         ]);
 
         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)", [
+            $weightedSumExpression = new Expression("SUM(
+        CASE 
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month3 AND $alias.operation = 'Продажа' THEN $productAlias.summ * 3
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month3 AND $alias.operation = 'Возврат' THEN -$productAlias.summ * 3
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month2 AND $alias.operation = 'Продажа' THEN $productAlias.summ * 2
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month2 AND $alias.operation = 'Возврат' THEN -$productAlias.summ * 2
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month1 AND $alias.operation = 'Продажа' THEN $productAlias.summ * 1
+            WHEN TO_CHAR($alias.date, 'YYYY-MM') = :month1 AND $alias.operation = 'Возврат' THEN -$productAlias.summ * 1
+            ELSE 0 
+        END
+    )", [
                 ':month1' => $month1,
                 ':month2' => $month2,
                 ':month3' => $month3,
             ]);
-
         }
-
+        
         // Основной запрос с CTE
         $query = (new Query())
             ->select([
@@ -212,7 +214,13 @@ class AutoPlannogrammaService
             $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]);
         }
 
-        $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : "SUM(CASE WHEN s.operation = 'Возврат' THEN -sp.summ ELSE sp.summ END)";
+        $sumExpression = $type === self::TYPE_WRITE_OFFS
+            ? 'SUM(wp.summ)'
+            : "SUM(CASE 
+            WHEN s.operation = 'Продажа' THEN sp.summ 
+            WHEN s.operation = 'Возврат' THEN -sp.summ 
+            ELSE 0 
+        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';
@@ -344,7 +352,13 @@ class AutoPlannogrammaService
             $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]);
         }
 
-        $sumExpression = $type === self::TYPE_WRITE_OFFS ? 'SUM(wp.summ)' : "SUM(CASE WHEN s.operation = 'Возврат' THEN -sp.summ ELSE sp.summ END)";
+        $sumExpression = $type === self::TYPE_WRITE_OFFS
+            ? 'SUM(wp.summ)'
+            : "SUM(CASE 
+            WHEN s.operation = 'Продажа' THEN sp.summ 
+            WHEN s.operation = 'Возврат' THEN -sp.summ 
+            ELSE 0 
+        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';