where('business_id', auth()->user()->business_id) ->where('type', '!=', 'Supplier') ->when($request->search, function ($query) use ($request) { $query->where(function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%'); }); }) ->latest() ->paginate($request->per_page ?? 20) ->appends($request->query()); $totalSaleAmount = $parties->sum(fn($party) => $party->sales?->sum('totalAmount') ?? 0); $totalProfit = $parties->sum(fn($party) => $party->sales?->where('lossProfit', '>', 0)->sum('lossProfit') ?? 0); $totalLoss = $parties->sum(fn($party) => $party->sales?->where('lossProfit', '<', 0)->sum('lossProfit') ?? 0); if ($request->ajax()) { return response()->json([ 'data' => view('business::party-reports.loss-profit.datas', compact('parties', 'totalSaleAmount', 'totalProfit', 'totalLoss'))->render(), 'totalSaleAmount' => currency_format($totalSaleAmount, currency: business_currency()), 'totalProfit' => currency_format($totalProfit, currency: business_currency()), 'totalLoss' => currency_format($totalLoss, currency: business_currency()), ]); } return view('business::party-reports.loss-profit.index', compact('parties', 'totalSaleAmount', 'totalProfit', 'totalLoss')); } public function exportExcel() { return Excel::download(new ExportPartyLossProfit, 'party-loss-profit.xlsx'); } public function exportCsv() { return Excel::download(new ExportPartyLossProfit, 'party-loss-profit.csv'); } public function exportPdf(Request $request) { $parties = Party::with('sales') ->where('business_id', auth()->user()->business_id) ->where('type', '!=', 'Supplier') ->when($request->search, function ($query) use ($request) { $query->where(function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%'); }); }) ->latest() ->limit($request->per_page ?? 20) ->get(); return PdfService::render('business::party-reports.loss-profit.pdf', compact('parties'),'party-loss-profit-report.pdf'); } public function view(string $id) { $party = Party::with('sales.details', 'sales.details.product') ->where('id', $id) ->where('business_id', auth()->user()->business_id) ->firstOrFail(); return response()->json([ 'sales' => $party->sales ]); } }