prepare("SELECT * FROM sales WHERE id = ?"); $stmt->bind_param("i", $saleId); $stmt->execute(); $result = $stmt->get_result(); $sale = $result->fetch_assoc(); $stmt->close(); if (!$sale) { $_SESSION['error'] = "Sale not found."; header("Location: sales.php"); exit(); } $buyersQuery = "SELECT id, name FROM buyers ORDER BY name"; $buyers = $conn->query($buyersQuery)->fetch_all(MYSQLI_ASSOC); if ($_SERVER["REQUEST_METHOD"] == "POST") { try { // Validate and sanitize inputs $date = trim($_POST['date']); $buyer_id = intval($_POST['buyer_id']); $weight_tilapia = floatval($_POST['weight_tilapia']); $weight_small_fish = floatval($_POST['weight_small_fish']); $weight_big_fish = floatval($_POST['weight_big_fish']); $include_delivery = isset($_POST['include_delivery']) ? 1 : 0; $final_amount = floatval($_POST['final_amount']); $final_amount_override = floatval($_POST['final_amount_override']); // Calculate harvesting charges for dashboard display only $buyer_query = "SELECT harvesting_fee_tilapia, harvesting_fee_small_fish, harvesting_fee_big_fish FROM buyers WHERE id = ?"; $stmt = $conn->prepare($buyer_query); $stmt->bind_param("i", $buyer_id); $stmt->execute(); $buyer_result = $stmt->get_result(); $buyer = $buyer_result->fetch_assoc(); $stmt->close(); if (!$buyer) { throw new Exception("Buyer not found"); } // Calculate harvesting charges with null checks $harvesting_charges = ($weight_tilapia * floatval($buyer['harvesting_fee_tilapia'] ?? 0)) + ($weight_small_fish * floatval($buyer['harvesting_fee_small_fish'] ?? 0)) + ($weight_big_fish * floatval($buyer['harvesting_fee_big_fish'] ?? 0)); // Update the sale $stmt = $conn->prepare("UPDATE sales SET date = ?, buyer_id = ?, weight_tilapia = ?, weight_small_fish = ?, weight_big_fish = ?, include_delivery = ?, final_amount = ?, final_amount_override = ?, harvesting_charges = ? WHERE id = ?"); if (!$stmt) { throw new Exception("Prepare statement failed: " . $conn->error); } $stmt->bind_param("sidddidddi", $date, $buyer_id, $weight_tilapia, $weight_small_fish, $weight_big_fish, $include_delivery, $final_amount, $final_amount_override, $harvesting_charges, $saleId ); if (!$stmt->execute()) { throw new Exception("Execute failed: " . $stmt->error); } $stmt->close(); $_SESSION['success'] = "Sale updated successfully!"; header("Location: sales.php"); exit(); } catch (Exception $e) { $_SESSION['error'] = "Error updating sale: " . $e->getMessage(); error_log("Edit sale error: " . $e->getMessage()); header("Location: sales.php"); exit(); } } $buyerOptions = ''; foreach ($buyers as $buyer) { $selected = $buyer['id'] == $sale['buyer_id'] ? 'selected' : ''; $buyerOptions .= ""; } $includeDeliveryChecked = $sale['include_delivery'] ? 'checked' : ''; $overrideAmount = ($sale['final_amount_override'] != null && $sale['final_amount_override'] > 0) ? $sale['final_amount_override'] : $sale['final_amount']; $content = <<

Edit Sale

Cancel
HTML; include 'main_layout.php'; $conn->close(); ?>