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

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; } .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; } </style>";
echo "<div class='container'>";
echo "<div class='header'><h1>Công Cụ Sửa Chữa Đặc Biệt (Reset Giá Vốn)</h1>";
echo "<p>Kịch bản này tìm các sản phẩm có GVBQ (`prd_average_cost`) khác với Giá Nhập Gần Nhất (`prd_origin_price`).</p>";
echo "<p>Nó sẽ dùng để 'Reset' lại GVBQ và Tổng Giá Trị Kho về đúng theo Giá Nhập Gần Nhất. Hữu ích cho các sản phẩm bị hỏng dữ liệu như ID 1268.</p>";
echo "</div>";

$products_to_update = isset($_POST['selected_products']) ? $_POST['selected_products'] : [];
$specific_product_id = isset($_GET['product_id']) ? intval($_GET['product_id']) : 0;

try {
    
    $base_sql = "SELECT ID, prd_name, prd_sls, prd_average_cost, prd_origin_price, prd_total_value
                 FROM cms_products
                 WHERE prd_sls > 0 AND (ABS(prd_average_cost - prd_origin_price) > 0.01)";

    if ($specific_product_id > 0) {
         $base_sql = "SELECT ID, prd_name, prd_sls, prd_average_cost, prd_origin_price, prd_total_value
                      FROM cms_products
                      WHERE ID = " . $specific_product_id;
    }

    $mismatch_result = $conn->query($base_sql);
    
    if ($mismatch_result === false) {
        throw new Exception("Lỗi CSDL: " . $conn->error);
    }
    
    $all_mismatch_products = $mismatch_result->fetch_all(MYSQLI_ASSOC);
    $products_to_fix = [];

    foreach ($all_mismatch_products as $product) {
        $product_id = $product['ID'];
        $current_sls = floatval($product['prd_sls']);
        $new_avg_cost = floatval($product['prd_origin_price']);
        $new_total_value = $current_sls * $new_avg_cost;
        
        $product['new_avg_cost'] = $new_avg_cost;
        $product['new_total_value'] = $new_total_value;
        $products_to_fix[$product_id] = $product;
    }

    echo "<div class='report'>";
    
    if ($specific_product_id > 0 && empty($products_to_fix)) {
        echo "<h2>Không tìm thấy sản phẩm ID $specific_product_id, hoặc sản phẩm này không cần sửa.</h2>";
    }
    else if (empty($products_to_fix)) {
        echo "<h2><span class='success'>Tuyệt vời!</span> Không tìm thấy sản phẩm nào có GVBQ khác Giá nhập gần nhất.</h2>";
    } else {
        if (empty($products_to_update)) {
            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ó GVBQ bị lệch so với Giá Nhập Gần Nhất:</p>";
            
            echo "<form method='post' action=''>";
            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 (Hỏng)</th><th class='success'>GVBQ (Reset về)</th><th class='success'>Tổng GT (Reset về)</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'], 2) . "</td>";
                echo "<td class='error'>" . number_format($product['prd_average_cost'], 2) . "</td>";
                echo "<td class='success'>" . number_format($product['new_avg_cost'], 2) . "</td>";
                echo "<td class='success'>" . number_format($product['new_total_value'], 2) . "</td>";
                echo "</tr>";
            }
            
            echo "</tbody></table>";
            echo "<p><b>Lưu ý:</b> Sản phẩm ID 1268 của bạn sẽ có trong danh sách này.</p>";
            echo "<p>Hãy sao lưu CSDL rồi nhấn vào nút bên dưới để thực hiện RESET.</p>";
            echo "<button type='submit' class='action-button' onclick='return confirm(\"Hành động này sẽ GHI ĐÈ GVBQ và Tổng Giá Trị Kho! Bạn có chắc chắn không?\");'>RESET 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 {
            echo "<h2>Chế độ Thực Thi - Đang cập nhật CSDL...</h2>";
            
            $conn->begin_transaction();
            try {
                $stmt_update = $conn->prepare("UPDATE cms_products SET prd_total_value = ?, prd_average_cost = ? WHERE ID = ?");
                $updated_count = 0;
                
                foreach ($products_to_fix as $product_id => $product) {
                    if (in_array($product_id, $products_to_update)) {
                        
                        $new_total_value = $product['new_total_value'];
                        $new_avg_cost = $product['new_avg_cost'];
                        
                        $stmt_update->bind_param("ddi", $new_total_value, $new_avg_cost, $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>Đã RESET thành công giá vố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 "<h2><span class='error'>ĐÃ CÓ LỖI XẢY RA!</span></h2>";
    echo "<p>Lỗi: " . htmlspecialchars($e->getMessage()) . "</p>";
}
echo "</div>";
?>