= ?"; $params[] = $dateFrom; } if ($dateTo) { $whereConditions[] = "e.expense_date <= ?"; $params[] = $dateTo; } if ($segmentFilter) { $whereConditions[] = "e.segment_id = ?"; $params[] = $segmentFilter; } if ($categoryFilter) { $whereConditions[] = "e.category_id = ?"; $params[] = $categoryFilter; } if ($search) { $whereConditions[] = "(e.title LIKE ? OR e.vendor LIKE ? OR e.description LIKE ?)"; $params[] = "%$search%"; $params[] = "%$search%"; $params[] = "%$search%"; } // User-specific filter for non-admin users if ($currentUser['role'] !== 'admin' && !hasPermission('manage_expenses')) { $whereConditions[] = "e.created_by = ?"; $params[] = $currentUser['id']; } $whereClause = !empty($whereConditions) ? 'WHERE ' . implode(' AND ', $whereConditions) : ''; // Get expenses data for export $exportQuery = " SELECT e.title as 'Description', e.amount as 'Amount', e.expense_date as 'Expense Date', e.vendor as 'Vendor/Supplier', e.payment_method as 'Payment Method', bs.name as 'Business Segment', c.name as 'Category', e.description as 'Additional Notes', e.receipt_image as 'Receipt Attached', u.full_name as 'Created By', e.created_at as 'Created Date' FROM expenses e LEFT JOIN business_segments bs ON e.segment_id = bs.id LEFT JOIN categories c ON e.category_id = c.id LEFT JOIN users u ON e.created_by = u.id {$whereClause} ORDER BY e.expense_date DESC, e.created_at DESC "; $expensesData = fetchAll($exportQuery, $params); // Format data for CSV export $exportData = []; foreach ($expensesData as $row) { $formattedRow = []; foreach ($row as $key => $value) { // Format specific fields switch ($key) { case 'Amount': $formattedRow[$key] = number_format((float)$value, 2); break; case 'Expense Date': case 'Created Date': $formattedRow[$key] = $value ? date('d-m-Y H:i', strtotime($value)) : ''; break; case 'Receipt Attached': $formattedRow[$key] = $value ? 'Yes' : 'No'; break; case 'Payment Method': $formattedRow[$key] = $value ? ucfirst(str_replace('_', ' ', $value)) : ''; break; default: $formattedRow[$key] = $value ?? ''; } } $exportData[] = $formattedRow; } // Generate filename $filename = 'expenses_export_' . date('Y-m-d_H-i-s') . '.csv'; // Log export activity logSystemActivity('Export Expenses', "Exported " . count($exportData) . " expense records"); // Export to CSV exportToCSV($exportData, $filename); ?>