Laporan Keuangan Bulanan

Saldo Saat Ini

Rp 0

Total Pemasukan

+Rp 0

Total Pengeluaran

-Rp 0

Tambah Transaksi Baru

*Gunakan tanda (-) untuk pengeluaran, contoh: -50000

Analisis Keuangan

Riwayat Transaksi

Semua Bulan - 2024

Belum ada transaksi.

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Get action parameter $action = $_GET['action'] ?? ''; switch ($action) { case 'add': addTransaction($pdo); break; case 'get': getTransactions($pdo); break; case 'delete': deleteTransaction($pdo); break; default: echo json_encode(['success' => false, 'message' => 'Invalid action']); } } catch (PDOException $e) { echo json_encode(['success' => false, 'message' => 'Database connection failed: ' . $e->getMessage()]); } function addTransaction($pdo) { $data = json_decode(file_get_contents('php://input'), true); if (!isset($data['text']) || !isset($data['amount']) || !isset($data['month']) || !isset($data['year'])) { echo json_encode(['success' => false, 'message' => 'Missing required fields']); return; } $text = trim($data['text']); $amount = floatval($data['amount']); $month = intval($data['month']); $year = intval($data['year']); if (empty($text)) { echo json_encode(['success' => false, 'message' => 'Description cannot be empty']); return; } if ($month < 1 || $month > 12) { echo json_encode(['success' => false, 'message' => 'Invalid month value']); return; } if ($year < 2000 || $year > date('Y') + 5) { echo json_encode(['success' => false, 'message' => 'Invalid year value']); return; } try { $stmt = $pdo->prepare("INSERT INTO transactions (description, amount, month, year, created_at) VALUES (?, ?, ?, ?, NOW())"); $stmt->execute([$text, $amount, $month, $year]); echo json_encode([ 'success' => true, 'message' => 'Transaction added successfully', 'id' => $pdo->lastInsertId() ]); } catch (PDOException $e) { echo json_encode(['success' => false, 'message' => 'Failed to add transaction: ' . $e->getMessage()]); } } function getTransactions($pdo) { $year = isset($_GET['year']) ? intval($_GET['year']) : date('Y'); try { $stmt = $pdo->prepare("SELECT * FROM transactions WHERE year = ? ORDER BY year DESC, month DESC, created_at DESC"); $stmt->execute([$year]); $transactions = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode([ 'success' => true, 'transactions' => $transactions ]); } catch (PDOException $e) { echo json_encode(['success' => false, 'message' => 'Failed to fetch transactions: ' . $e->getMessage()]); } } function deleteTransaction($pdo) { $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if ($id <= 0) { echo json_encode(['success' => false, 'message' => 'Invalid transaction ID']); return; } try { $stmt = $pdo->prepare("DELETE FROM transactions WHERE id = ?"); $result = $stmt->execute([$id]); if ($stmt->rowCount() > 0) { echo json_encode(['success' => true, 'message' => 'Transaction deleted successfully']); } else { echo json_encode(['success' => false, 'message' => 'Transaction not found']); } } catch (PDOException $e) { echo json_encode(['success' => false, 'message' => 'Failed to delete transaction: ' . $e->getMessage()]); } } ?>