where('business_id', auth()->user()->business_id) ->whereIn('type', ['debit', 'credit']); // Date Filter $duration = request('custom_days') ?: 'today'; $this->applyDateFilter($query, $duration, 'date', request('from_date'), request('to_date')); // Search filter if (request('search')) { $query->where(function ($query) { $query->where('date', 'like', '%' . request('search') . '%') ->orWhere('invoice_no', 'like', '%' . request('search') . '%') ->orWhere('platform', 'like', '%' . request('search') . '%') ->orWhere('amount', 'like', '%' . request('search') . '%') ->orWhere('transaction_type', 'like', '%' . request('search') . '%') ->orWhereHas('paymentType', function ($q) { $q->where('name', 'like', '%' . request('search') . '%'); }); }); } // Platform filter if (request('platform')) { $query->where('platform', request('platform')); } // Paginate data $cash_flows = $query->limit(request('per_page') ?? 20)->get(); $firstDate = $cash_flows->first()?->date; if ($firstDate) { $opening_balance = (clone $query) ->whereDate('date', '<', $firstDate) ->selectRaw("SUM(CASE WHEN type='credit' THEN amount ELSE 0 END) - SUM(CASE WHEN type='debit' THEN amount ELSE 0 END) as balance") ->value('balance') ?? 0; } else { $opening_balance = 0; } return view('business::cash-flow.excel-csv', compact('cash_flows', 'opening_balance')); } }