]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-235] Чек возврата без order_id может быть по доставке, если sales_check по доставке origin/feature_smirnov_erp-235_return_sales_not_delivery_even_if_sales_check_is_delivery
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 1 Nov 2024 12:43:57 +0000 (15:43 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 1 Nov 2024 12:43:57 +0000 (15:43 +0300)
erp24/records/Sales.php
erp24/services/DashboardService.php
erp24/services/SalesService.php

index 626d7db8a3571c0cb924d5b709de51bce6abd389..32670e438a486bc1fa62751c9d1b1e77dda6db1d 100755 (executable)
@@ -139,4 +139,9 @@ class Sales extends \yii\db\ActiveRecord
     public function getUsers() {
         return $this->hasOne(Users::class, ['phone' => 'phone']);
     }
+
+    public function getSaleCheck() {
+        return $this->hasOne(self::class, ['id' => 'sales_check'])
+            ->from(self::tableName() . ' sc');
+    }
 }
\ No newline at end of file
index 03083c5ed7acfcc82444b9d015bdd3fa198646ac..f5ba83f0ef6549838d5c18d38aafda99d1b5908e 100755 (executable)
@@ -72,7 +72,7 @@ class DashboardService
         uasort(
             $sales,
             function ($a, $b) {
-                return ($a['percent'] < $b['percent']);
+                return (-$a['percent'] + $b['percent']);
             }
         );
 
index f6179f28586729faa1c365b3105af9adf63560ad..e33e4296cb35fd5a5256378272a40c97bfa7d6b8 100755 (executable)
@@ -95,19 +95,32 @@ class SalesService
     public function getSalesSum($dateFrom, $dateTo, $salesDelivery = false, $salesTotal = false, $storeId1c = null, $payType = null) : array
     {
         $query = Sales::find()
+            ->alias('s')
             ->select([
-                'summ' => new \yii\db\Expression("SUM(summ - skidka)"),
-                'store_id_1c',
-                'operation'
+                'summ' => new \yii\db\Expression("SUM(s.summ - s.skidka)"),
+                's.store_id_1c',
+                's.operation'
             ])
-            ->andWhere(['>=', 'date', DateHelper::getDateTimeStartDay($dateFrom, true)])
-            ->andWhere(['<=', 'date', DateHelper::getDateTimeEndDay($dateTo, true)]);
+            ->joinWith('saleCheck')
+            ->andWhere(['>=', 's.date', DateHelper::getDateTimeStartDay($dateFrom, true)])
+            ->andWhere(['<=', 's.date', DateHelper::getDateTimeEndDay($dateTo, true)]);
 
         if (!$salesTotal) {
             if ($salesDelivery) {
-                $query->andWhere(['not in', 'order_id', ['', '0']]);
+                $query->andFilterWhere(['or',
+                    ['not in', 's.order_id', ['', '0']],
+                    ['not in', 'sc.order_id', ['', '0']]
+                ]);
             } else {
-                $query->andWhere(['order_id' => ['', '0']]);
+                $query->andWhere([
+                    'and',
+                    ['s.order_id' => ['', '0']],
+                    [
+                        'or',
+                        'sc.order_id IS NULL',
+                        ['sc.order_id' => ['', '0']]
+                    ]
+                ]);
             }
         }
 
@@ -116,15 +129,15 @@ class SalesService
                 $payType = ['1', '3', '1,3', '3,1' ];
             }
 
-            $query->andWhere(['pay_arr' => $payType]);
+            $query->andWhere(['s.pay_arr' => $payType]);
         }
 
 
         if (!empty($storeId1c)) {
-            $query->andWhere(['store_id_1c' => $storeId1c]);
+            $query->andWhere(['s.store_id_1c' => $storeId1c]);
         }
 
-        $query->groupBy(['store_id_1c', 'operation']);
+        $query->groupBy(['s.store_id_1c', 's.operation']);
 
         $action = $query->createCommand()->getRawSql();