소스 검색

fix ricevute

FabioFratini 8 달 전
부모
커밋
5d6ed74c82
2개의 변경된 파일64개의 추가작업 그리고 42개의 파일을 삭제
  1. 1 1
      resources/views/livewire/receipt.blade.php
  2. 63 41
      routes/web.php

+ 1 - 1
resources/views/livewire/receipt.blade.php

@@ -126,7 +126,7 @@
                 @endif
             </tbody>
         </table>
-
+        <br>
     </section>
 
 </div>

+ 63 - 41
routes/web.php

@@ -1434,80 +1434,97 @@ Route::get('/get_course_members', function () {
 });
 
 Route::get('/get_receipts', function () {
-    $receiptColumns = Schema::getColumnListing('receipts');
-    $groupByColumns = array_map(function($column) {
-        return 'receipts.' . $column;
-    }, $receiptColumns);
+    $baseQuery = \App\Models\Receipt::select('receipts.id')
+        ->leftJoin('members', 'receipts.member_id', '=', 'members.id');
 
-    // Add member columns
-    $groupByColumns[] = 'members.first_name';
-    $groupByColumns[] = 'members.last_name';
-
-    $x = \App\Models\Receipt::select('receipts.*', 'members.first_name', 'members.last_name', DB::raw('SUM(receipts_rows.amount) AS totals'))
-        ->leftJoin('members', 'receipts.member_id', '=', 'members.id')
-        ->leftJoin('receipts_rows', 'receipts.id', '=', 'receipts_rows.receip_id')
-        ->groupBy($groupByColumns);
-
-
-    if (isset($_GET["search"]["value"])) {
+    if (isset($_GET["search"]["value"]) && !empty($_GET["search"]["value"])) {
         $v = str_replace("'", "\'", stripcslashes($_GET["search"]["value"]));
         $member_ids = \App\Models\Member::where(function ($query) use ($v) {
             $query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $v . "%'")
                 ->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $v . "%'");
         })->pluck('id');
-        $x = $x->whereIn('member_id', $member_ids);
+        $baseQuery = $baseQuery->whereIn('receipts.member_id', $member_ids);
     }
 
     if (isset($_GET["filterStatus"]) && $_GET["filterStatus"] != '')
-        $x = $x->where('receipts.status', $_GET["filterStatus"]);
+        $baseQuery = $baseQuery->where('receipts.status', $_GET["filterStatus"]);
 
     if (isset($_GET["filterFrom"]) && $_GET["filterFrom"] != "")
-        $x = $x->where('date', '>=', $_GET["filterFrom"]);
+        $baseQuery = $baseQuery->where('receipts.date', '>=', $_GET["filterFrom"]);
 
     if (isset($_GET["filterTo"]) && $_GET["filterTo"] != "")
-        $x = $x->where('date', '<=', $_GET["filterTo"]);
+        $baseQuery = $baseQuery->where('receipts.date', '<=', $_GET["filterTo"]);
 
     if (isset($_GET["filterMember"]) && $_GET["filterMember"] != "")
-        $x = $x->where('receipts.member_id', $_GET["filterMember"]);
-
-    $count = $x->count();
+        $baseQuery = $baseQuery->where('receipts.member_id', $_GET["filterMember"]);
+
+    $count = $baseQuery->count();
+
+    $receiptIds = $baseQuery->pluck('receipts.id');
+
+    $dataQuery = \App\Models\Receipt::select(
+            'receipts.id',
+            'receipts.year',
+            'receipts.number',
+            'receipts.status',
+            'receipts.created_at',
+            'receipts.record_id',
+            'members.first_name',
+            'members.last_name',
+            DB::raw('SUM(receipts_rows.amount) AS totals')
+        )
+        ->leftJoin('members', 'receipts.member_id', '=', 'members.id')
+        ->leftJoin('receipts_rows', 'receipts.id', '=', 'receipts_rows.receip_id')
+        ->whereIn('receipts.id', $receiptIds)
+        ->groupBy(
+            'receipts.id',
+            'receipts.year',
+            'receipts.number',
+            'receipts.status',
+            'receipts.created_at',
+            'receipts.record_id',
+            'members.first_name',
+            'members.last_name'
+        );
 
     if (isset($_GET["order"])) {
         $column = '';
         if ($_GET["order"][0]["column"] == 0)
-            $column = 'year';
+            $column = 'receipts.year';
         if ($_GET["order"][0]["column"] == 1)
-            $column = 'number';
+            $column = 'receipts.number';
         if ($_GET["order"][0]["column"] == 2)
-            $column = 'last_name';
+            $column = 'members.last_name';
         if ($_GET["order"][0]["column"] == 3)
-            $column = 'first_name';
+            $column = 'members.first_name';
         if ($_GET["order"][0]["column"] == 4)
-            $column = 'status';
+            $column = 'receipts.status';
         if ($_GET["order"][0]["column"] == 5)
-            $column = 'date';
-            if ($_GET["order"][0]["column"] == 6)
+            $column = 'receipts.created_at';
+        if ($_GET["order"][0]["column"] == 6)
             $column = 'totals';
+
         if ($column != '')
-            $x = $x->orderBy($column, $_GET["order"][0]["dir"])->orderBy('receipts.id', 'DESC');
+            $dataQuery = $dataQuery->orderBy($column, $_GET["order"][0]["dir"])->orderBy('receipts.id', 'DESC');
         else
-            $x = $x->orderBy('receipts.id', 'DESC');
-    } else
-        $x = $x->orderBy('receipts.id', 'DESC');
+            $dataQuery = $dataQuery->orderBy('receipts.id', 'DESC');
+    } else {
+        $dataQuery = $dataQuery->orderBy('receipts.id', 'DESC');
+    }
 
-    if (isset($_GET["start"]))
-        $x = $x->offset($_GET["start"])->limit($_GET["length"])->get();
-    else
-        $x = $x->get();
+    if (isset($_GET["start"]) && isset($_GET["length"]))
+        $dataQuery = $dataQuery->offset($_GET["start"])->limit($_GET["length"]);
+
+    $results = $dataQuery->get();
 
     $datas = [];
-    foreach ($x as $idx => $r) {
+    foreach ($results as $idx => $r) {
         $ids = $r->id . "|" . $r->record_id;
         $datas[] = array(
             'year' => $r->year,
             'number' => $r->number,
-            'last_name' => $r->member->last_name,
-            'first_name' => $r->member->first_name,
+            'last_name' => $r->last_name ?? '',
+            'first_name' => $r->first_name ?? '',
             'status' => $r->status,
             'date' => date("d/m/Y", strtotime($r->created_at)),
             'totals' => formatPrice($r->totals),
@@ -1515,10 +1532,15 @@ Route::get('/get_receipts', function () {
         );
     }
 
-    return json_encode(array("data" => $datas, "recordsTotal" => $count, "recordsFiltered" => $count));
+    return response()->json([
+        "data" => $datas,
+        "recordsTotal" => $count,
+        "recordsFiltered" => $count
+    ]);
 });
 
 
+
 function getColor($months, $m)
 {
     $class = "wgrey";