where('business_id', auth()->user()->business_id) ->whereIn('type', ['debit', 'credit']); // Apply date filter $duration = $request->custom_days ?: 'today'; [$filter_from_date, $filter_to_date] = $this->applyDateRange($duration, $request->from_date, $request->to_date); $this->applyDateFilter($query, $duration, 'date', $request->from_date, $request->to_date); // Search filter if ($request->filled('search')) { $query->where(function ($query) use ($request) { $query->where('date', 'like', '%' . $request->search . '%') ->orWhere('invoice_no', 'like', '%' . $request->search . '%') ->orWhere('platform', 'like', '%' . $request->search . '%') ->orWhere('amount', 'like', '%' . $request->search . '%') ->orWhere('type', 'like', '%' . $request->search . '%') ->orWhere('transaction_type', 'like', '%' . $request->search . '%') ->orWhereHas('paymentType', function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%'); }); }); } // Platform filter if ($request->filled('platform')) { $query->where('platform', $request->platform); } // Paginate data $perPage = $request->input('per_page', 20); $day_books = $query->latest()->paginate($perPage)->appends($request->query()); // Calculate summary data $total_money_in = (clone $query) ->where('type', 'credit') ->sum('amount'); $total_money_out = (clone $query) ->where('type', 'debit') ->sum('amount'); $total_money_in_out_amount = $total_money_in + $total_money_out; if ($request->ajax()) { return response()->json([ 'data' => view('business::day-book.datas', compact('day_books', 'total_money_in_out_amount', 'total_money_in', 'total_money_out', 'filter_from_date', 'filter_to_date', 'duration'))->render(), 'total_money_in' => currency_format($total_money_in, 'icon', 2, business_currency()), 'total_money_out' => currency_format($total_money_out, 'icon', 2, business_currency()), 'total_money_in_out_amount' => currency_format($total_money_in_out_amount, 'icon', 2, business_currency()), ]); } return view('business::day-book.index', compact('day_books', 'total_money_in_out_amount', 'total_money_in', 'total_money_out', 'filter_from_date', 'filter_to_date', 'duration')); } public function exportExcel() { return Excel::download(new ExportDayBookReport, 'day-book.xlsx'); } public function exportCsv() { return Excel::download(new ExportDayBookReport, 'day-book.csv'); } public function exportPdf(Request $request) { $query = Transaction::with([ 'paymentType:id,name', 'sale:id,user_id,party_id,totalAmount', 'sale.party:id,name', 'sale.user:id,name', 'saleReturn:id,sale_id', 'purchase:id,user_id,party_id,totalAmount', 'purchase.party:id,name', 'purchase.user:id,name', 'purchaseReturn:id,purchase_id', 'dueCollect:id,user_id,party_id,totalDue', 'dueCollect.party:id,name', 'dueCollect.user:id,name', ]) ->where('business_id', auth()->user()->business_id) ->whereIn('type', ['debit', 'credit']); // Apply date filter $duration = $request->custom_days ?: 'today'; [$filter_from_date, $filter_to_date] = $this->applyDateRange($duration, $request->from_date, $request->to_date); $this->applyDateFilter($query, $duration, 'date', $request->from_date, $request->to_date); // Search filter if ($request->filled('search')) { $query->where(function ($query) use ($request) { $query->where('date', 'like', '%' . $request->search . '%') ->orWhere('invoice_no', 'like', '%' . $request->search . '%') ->orWhere('platform', 'like', '%' . $request->search . '%') ->orWhere('amount', 'like', '%' . $request->search . '%') ->orWhere('type', 'like', '%' . $request->search . '%') ->orWhere('transaction_type', 'like', '%' . $request->search . '%') ->orWhereHas('paymentType', function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%'); }); }); } // Platform filter if ($request->filled('platform')) { $query->where('platform', $request->platform); } // Paginate data $day_books = $query->latest()->limit($request->per_page ?? 20)->get(); return PdfService::render('business::day-book.pdf', compact('day_books', 'duration', 'filter_from_date', 'filter_to_date'),'day-book-report.pdf'); } }