<?php
// FILE: repair_order.php
// CHỨC NĂNG: Sửa chữa tiền vốn (total_origin_price) bị tính sai cho một đơn hàng cụ thể.

require_once __DIR__ . '/core/init.php';

$order_code_to_check = isset($_REQUEST['order_code']) ? trim($_REQUEST['order_code']) : '';
$action = isset($_POST['action']) ? $_POST['action'] : '';

// --- GIAO DIỆN HTML ---
echo <<<HTML
<style>
    body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; padding: 20px; line-height: 1.6; background-color: #f8f9fa; color: #212529; }
    .container { max-width: 900px; margin: auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.05); }
    .header { background-color: #e9ecef; padding: 2rem; border-radius: 5px; margin-bottom: 2rem; text-align: center; }
    .header h1 { margin: 0; }
    form { display: flex; align-items: flex-end; gap: 15px; background-color: #f7f7f9; padding: 15px; border-radius: 5px; margin-bottom: 1rem;}
    .form-group { display: flex; flex-direction: column; }
    .form-group label { margin-bottom: 5px; font-weight: bold; font-size: 14px; }
    .form-control, .btn { padding: 8px 12px; border-radius: 5px; border: 1px solid #ced4da; }
    .btn-primary { background-color: #007bff; color: white; border-color: #007bff; cursor: pointer; }
    .report-table { width: 100%; margin-top: 1.5rem; }
    .report-table td { padding: 10px; border-bottom: 1px solid #eee; }
    .report-table td:first-child { font-weight: bold; width: 40%; }
    .current-data { color: #dc3545; font-weight: bold; }
    .new-data { color: #28a745; font-weight: bold; }
    .action-button { font-size: 18px; padding: 12px 24px; color: white; border: none; border-radius: 5px; cursor: pointer; text-decoration: none; display: inline-block; margin-top: 20px; background-color: #dc3545; }
    .success, .error { padding: 1rem; border: 1px solid; border-radius: 5px; text-align: center; margin-bottom: 1rem;}
    .success { background-color: #d4edda; color: #155724; border-color: #c3e6cb; }
    .error { background-color: #f8d7da; color: #721c24; border-color: #f5c6cb; }
</style>
<div class="container">
<div class="header"><h1>Công Cụ "Phẫu Thuật" Tiền Vốn Đơn Hàng</h1></div>
HTML;

echo '<form method="GET">';
echo '<div class="form-group"><label for="order_code">Nhập Mã Đơn Hàng Cần Sửa</label><input type="text" id="order_code" name="order_code" class="form-control" value="'.htmlspecialchars($order_code_to_check).'" placeholder="VD: BH022539" required></div>';
echo '<div class="form-group"><button type="submit" class="btn btn-primary">Kiểm Tra Đơn Hàng</button></div>';
echo '</form>';

if (!empty($order_code_to_check)) {
    try {
        if ($action === 'execute_fix') {
            // --- THỰC THI SỬA LỖI ---
            $order_id = intval($_POST['order_id']);
            $new_cost = floatval($_POST['new_cost']);
            $new_detail_json = $_POST['new_detail_json'];

            if ($order_id > 0 && !empty($new_detail_json)) {
                $conn->begin_transaction();
                // Cập nhật lại tiền vốn và cả chi tiết đơn hàng (để "chữa lành" dữ liệu)
                $stmt_update = $conn->prepare("UPDATE cms_orders SET total_origin_price = ?, detail_order = ? WHERE ID = ?");
                $stmt_update->bind_param("dsi", $new_cost, $new_detail_json, $order_id);
                $stmt_update->execute();
                $stmt_update->close();
                $conn->commit();
                echo "<div class='success'>Thành công! Đã sửa lại tiền vốn cho đơn hàng <b>".htmlspecialchars($order_code_to_check)."</b>.</div>";
            } else {
                throw new Exception("Dữ liệu sửa lỗi không hợp lệ.");
            }
        }

        // --- PHÂN TÍCH ĐƠN HÀNG ---
        $stmt_get = $conn->prepare("SELECT ID, detail_order, total_money, total_origin_price FROM cms_orders WHERE output_code = ? AND deleted = 0");
        $stmt_get->bind_param("s", $order_code_to_check);
        $stmt_get->execute();
        $order = $stmt_get->get_result()->fetch_assoc();
        $stmt_get->close();

        if (!$order) {
            echo "<div class='error'>Không tìm thấy đơn hàng nào có mã là <b>".htmlspecialchars($order_code_to_check)."</b>.</div>";
        } else {
            $items = json_decode($order['detail_order'], true);
            if (!is_array($items)) {
                throw new Exception("Không thể đọc chi tiết sản phẩm của đơn hàng này.");
            }

            // Lấy giá vốn hiện tại của tất cả sản phẩm trong đơn
            $product_ids = array_column($items, 'id');
            $product_costs = [];
            if (!empty($product_ids)) {
                $ids_placeholder = implode(',', array_fill(0, count($product_ids), '?'));
                $sql_costs = "SELECT ID, IF(prd_average_cost > 0, prd_average_cost, prd_origin_price) as cost FROM cms_products WHERE ID IN ($ids_placeholder)";
                $stmt_costs = $conn->prepare($sql_costs);
                $stmt_costs->bind_param(str_repeat('i', count($product_ids)), ...$product_ids);
                $stmt_costs->execute();
                $product_costs = array_column($stmt_costs->get_result()->fetch_all(MYSQLI_ASSOC), 'cost', 'ID');
                $stmt_costs->close();
            }

            // Tính toán lại tiền vốn
            $recalculated_cost = 0;
            $updated_items = [];
            foreach ($items as $item) {
                $cost = floatval($product_costs[$item['id']] ?? 0);
                $recalculated_cost += floatval($item['quantity']) * $cost;
                $item['origin_price'] = $cost; // Cập nhật giá vốn đúng vào từng sản phẩm
                $updated_items[] = $item;
            }
            $updated_detail_json = json_encode($updated_items);

            echo "<h3>Kết quả chẩn đoán cho đơn hàng: " . htmlspecialchars($order_code_to_check) . "</h3>";
            echo "<table class='report-table'>";
            echo "<tr><td>Doanh Số</td><td>" . number_format($order['total_money']) . "</td></tr>";
            echo "<tr><td>Tiền Vốn (Đã lưu trong CSDL)</td><td class='current-data'>" . number_format($order['total_origin_price']) . "</td></tr>";
            echo "<tr><td>Lợi Nhuận (Hiện tại)</td><td class='current-data'>" . number_format($order['total_money'] - $order['total_origin_price']) . "</td></tr>";
            
            echo "<tr><td colspan='2' style='background-color:#f8f9fa; font-weight: bold;'>ĐỀ XUẤT SỬA CHỮA</td></tr>";
            echo "<tr><td>Tiền Vốn (Tính toán lại)</td><td class='new-data'>" . number_format($recalculated_cost) . "</td></tr>";
            echo "<tr><td>Lợi Nhuận (Sau khi sửa)</td><td class='new-data'>" . number_format($order['total_money'] - $recalculated_cost) . "</td></tr>";
            
            echo "</table>";
            
            // Nút thực hiện sửa, chỉ hiển thị nếu có sự chênh lệch
            if (abs(floatval($order['total_origin_price']) - $recalculated_cost) > 1) {
                 echo '<form method="post" style="text-align:center;">';
                 echo '<input type="hidden" name="order_code" value="'.htmlspecialchars($order_code_to_check).'">';
                 echo '<input type="hidden" name="order_id" value="'.$order['ID'].'">';
                 echo '<input type="hidden" name="new_cost" value="'.$recalculated_cost.'">';
                 echo '<input type="hidden" name="new_detail_json" value="'.htmlspecialchars($updated_detail_json, ENT_QUOTES, 'UTF-8').'">';
                 echo '<input type="hidden" name="action" value="execute_fix">';
                 echo '<button type="submit" class="action-button" onclick="return confirm(\'Bạn có chắc chắn muốn sửa lại tiền vốn cho đơn hàng này không?\')">THỰC HIỆN SỬA LỖI</button>';
                 echo '</form>';
            } else {
                echo "<div class='success'>Tiền vốn của đơn hàng này có vẻ đã chính xác.</div>";
            }
        }
    } catch (Exception $e) {
        echo "<div class='error'>Lỗi: " . $e->getMessage() . "</div>";
    }
}

echo "</div>";
?>