<?php
// Đảm bảo đường dẫn này đúng với cấu trúc thư mục của bạn
require_once __DIR__ . '/core/init.php';

// --- Hàm Lấy Giá Nhập Gần Nhất (Giữ nguyên) ---
function get_true_latest_price($product_id, $conn) {
    $like_term = '%"id":' . $product_id . ',%';
    $like_term_end = '%"id":' . $product_id . '}%';

    $sql = "SELECT detail_input FROM cms_input
            WHERE (detail_input LIKE ? OR detail_input LIKE ?) AND deleted = 0
            ORDER BY id DESC";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return null;

    $stmt->bind_param("ss", $like_term, $like_term_end);
    $stmt->execute();
    $result = $stmt->get_result();

    while ($row = $result->fetch_assoc()) {
        $items = json_decode($row['detail_input'], true);
        if (is_array($items)) {
            foreach (array_reverse($items) as $item) {
                if (isset($item['id']) && $item['id'] == $product_id && isset($item['price'])) {
                    $stmt->close();
                    return floatval($item['price']);
                }
            }
        }
    }
    $stmt->close();
    return null;
}

$products_to_update = isset($_POST['selected_products']) ? $_POST['selected_products'] : [];
$product_codes_input = isset($_POST['product_codes']) ? trim($_POST['product_codes']) : '';

// --- Giao diện HTML (Không thay đổi) ---
echo "<style> body { font-family: sans-serif; padding: 20px; } table { border-collapse: collapse; width: 100%; margin: 20px auto; font-size: 14px; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } .container { max-width: 1200px; margin: auto; } .header { background-color: #e9ecef; padding: 20px; border-radius: 5px; margin-bottom: 20px;} .report { border: 1px solid #ccc; padding: 20px; } .action-button { font-size: 18px; padding: 10px 20px; color: white; background-color: #dc3545; border: none; border-radius: 5px; text-decoration: none; display: inline-block; margin-top: 20px; cursor: pointer; } .action-button.dry-run { background-color: #007bff; } .success { color: green; font-weight: bold; } .error { color: red; font-weight: bold; } .warning { color: orange; } .no-change { color: #6c757d; } input[type='text'] { width: 100%; padding: 10px; font-size: 16px; margin-bottom: 10px; } </style>";
echo "<div class='container'>";
echo "<div class='header'><h1>Công Cụ Sửa Chữa Giá Vốn Bình Quân (Theo Mã Sản Phẩm)</h1>";
echo "<p>Nhập ID hoặc Mã sản phẩm (cách nhau bởi dấu phẩy), kịch bản sẽ so sánh giá vốn hiện tại với giá nhập gần nhất.</p>";
echo "</div>";

// Form nhập liệu
echo "<div class='report'>";
echo "<form method='post' action=''>";
echo "<label for='product_codes'><b>Nhập ID hoặc Mã sản phẩm (VD: 1483, 447, DOVE10):</b></label>";
echo "<input type='text' name='product_codes' id='product_codes' value='" . htmlspecialchars($product_codes_input) . "'>";
echo "<button type='submit' class='action-button dry-run'>KIỂM TRA GIÁ</button>";
echo "</form>";
echo "</div>";


// --- Xử lý Logic ---
if (!empty($product_codes_input)) {
    try {
        $product_codes = array_map('trim', explode(',', $product_codes_input));
        $placeholders = implode(',', array_fill(0, count($product_codes), '?'));
        $types = str_repeat('s', count($product_codes));

        // ## BƯỚC 1: LẤY THÔNG TIN SẢN PHẨM ##
        // THAY ĐỔI: Đã xóa điều kiện "AND prd_sls > 0" để quét cả sản phẩm hết hàng
        $sql_find_products = "SELECT ID, prd_code, prd_name, prd_sls, prd_average_cost 
                              FROM cms_products 
                              WHERE (ID IN ($placeholders) OR prd_code IN ($placeholders))";
        
        $stmt_find = $conn->prepare($sql_find_products);
        $stmt_find->bind_param($types . $types, ...$product_codes, ...$product_codes);
        $stmt_find->execute();
        $products_result = $stmt_find->get_result();
        $products_to_check = $products_result->fetch_all(MYSQLI_ASSOC);
        $stmt_find->close();

        // Bước 2: Lặp qua từng sản phẩm để kiểm tra giá
        $products_to_fix = [];
        foreach ($products_to_check as $product) {
            $true_latest_price = get_true_latest_price($product['ID'], $conn);
            
            if ($true_latest_price !== null && abs($product['prd_average_cost'] - $true_latest_price) > 0.01) {
                $product['true_latest_price'] = $true_latest_price;
                $products_to_fix[] = $product;
            }
        }

        echo "<div class='report' style='margin-top: 20px;'>";
        if (empty($products_to_update)) { // Chế độ Phân tích
            if (empty($products_to_fix)) {
                echo "<h2><span class='success'>OK!</span> Không tìm thấy chênh lệch giá cho các sản phẩm đã nhập.</h2>";
            } else {
                echo "<h2>Chế độ Phân Tích (An toàn - Chưa cập nhật CSDL)</h2>";
                echo "<p>Tìm thấy <b>" . count($products_to_fix) . "</b> sản phẩm có giá vốn không khớp. Hãy chọn sản phẩm cần cập nhật:</p>";
                
                echo "<form method='post' action=''>";
                echo "<input type='hidden' name='product_codes' value='" . htmlspecialchars($product_codes_input) . "'>";
                
                echo "<table><thead><tr><th><input type='checkbox' id='select_all'></th><th>ID</th><th>Tên Sản Phẩm</th><th>Tồn Kho</th><th class='error'>GVBQ (Hiện tại)</th><th class='success'>GVBQ (Đề Xuất)</th></tr></thead><tbody>";
                foreach ($products_to_fix as $product) {
                    echo "<tr>";
                    echo "<td><input type='checkbox' name='selected_products[]' value='" . $product['ID'] . "'></td>";
                    echo "<td>" . $product['ID'] . "</td>";
                    echo "<td>" . htmlspecialchars($product['prd_name']) . "</td>";
                    echo "<td>" . number_format($product['prd_sls']) . "</td>";
                    echo "<td class='error'>" . number_format($product['prd_average_cost'], 2) . "</td>";
                    echo "<td class='success'>" . number_format($product['true_latest_price'], 2) . "</td>";
                    echo "</tr>";
                }
                echo "</tbody></table>";
                echo "<p><b>Lưu ý:</b> Hãy sao lưu CSDL trước khi thực hiện cập nhật.</p>";
                echo "<button type='submit' class='action-button' onclick='return confirm(\"Hành động này sẽ thay đổi dữ liệu trong CSDL! Bạn có chắc chắn muốn tiếp tục?\");'>CẬP NHẬT CÁC SẢN PHẨM ĐÃ CHỌN</button>";
                echo "</form>";

                echo "<script>
                    document.getElementById('select_all').onclick = function() {
                        var checkboxes = document.querySelectorAll('input[type=\"checkbox\"][name=\"selected_products[]\"]');
                        for (var i = 0; i < checkboxes.length; i++) {
                            checkboxes[i].checked = this.checked;
                        }
                    }
                </script>";
            }
        } else { // Chế độ Thực thi cập nhật
            echo "<h2>Chế độ Thực Thi - Đang cập nhật CSDL...</h2>";
            
            $conn->begin_transaction();
            try {
                // Chú ý: Cột prd_total_value sẽ bằng 0 nếu tồn kho là 0
                $stmt_update = $conn->prepare("UPDATE cms_products SET prd_total_value = ?, prd_average_cost = ?, prd_origin_price = ? WHERE ID = ?");
                $updated_count = 0;
                
                foreach ($products_to_fix as $product) {
                    if (in_array($product['ID'], $products_to_update)) {
                        $true_latest_price = $product['true_latest_price'];
                        $new_total_value = floatval($product['prd_sls']) * $true_latest_price;
                        $product_id = intval($product['ID']);
                        
                        $stmt_update->bind_param("dddi", $new_total_value, $true_latest_price, $true_latest_price, $product_id);
                        $stmt_update->execute();
                        $updated_count++;
                    }
                }
                
                $stmt_update->close();
                $conn->commit();

                echo "<h3><span class='success'>THÀNH CÔNG!</span></h3>";
                echo "<p>Đã cập nhật lại giá trị kho và giá vốn bình quân cho <b>" . $updated_count . "</b> sản phẩm.</p>";
                echo "<a href='/quanlybanhang/modules/products/list.php' class='action-button dry-run'>Quay lại danh sách sản phẩm</a>";

            } catch (Exception $e) {
                $conn->rollback();
                throw $e;
            }
        }
        echo "</div>";

    } catch (Exception $e) {
        echo "<div class='report' style='margin-top: 20px;'>";
        echo "<h2><span class='error'>ĐÃ CÓ LỖI XẢY RA!</span></h2>";
        echo "<p>Lỗi: " . htmlspecialchars($e->getMessage()) . "</p>";
        echo "</div>";
    }
}
echo "</div>";
?>