user(); $businessId = $user->business_id; $activeBranch = $user->active_branch; $query = Party::where('business_id', $businessId) ->where('type', 'Supplier') ->when(request('search'), function ($q) { $q->where(function ($q2) { $q2->where('type', 'like', '%' . request('search') . '%') ->orWhere('name', 'like', '%' . request('search') . '%') ->orWhere('phone', 'like', '%' . request('search') . '%') ->orWhere('credit_limit', 'like', '%' . request('search') . '%'); }); }) ->with('purchases_dues') ->latest(); $parties = $query->get(); if ($activeBranch) { $parties = $parties ->transform(function ($supplier) use ($activeBranch) { $party_due = $supplier->purchases_dues ->where('branch_id', $activeBranch->id) ->sum('dueAmount'); if ($supplier->branch_id === $activeBranch->id) { $openingBalanceDue = $supplier->opening_balance_type === 'due' ? ($supplier->opening_balance ?? 0) : 0; $supplier->due = $openingBalanceDue + $party_due; } else { $supplier->due = $party_due; } return $supplier; }) ->filter(fn($supplier) => $supplier->due > 0) ->take(request('per_page') ?? 20) ->values(); } else { $parties = $parties ->filter(fn($supplier) => ($supplier->due ?? 0) > 0) ->take(request('per_page') ?? 20) ->values(); } return view('business::reports.supplier-due.excel-csv', compact('parties')); } }