<?php
// FILE: fix_zero_cost_final.php
// CHỨC NĂNG: Quét và sửa tất cả sản phẩm có giá vốn bằng 0, BAO GỒM CẢ SẢN PHẨM CÓ TỒN KHO BẰNG 0.

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

$selected_products_to_update = isset($_POST['selected_products']) ? $_POST['selected_products'] : [];
$is_execution_mode = !empty($selected_products_to_update);

// Hàm tìm giá nhập gần nhất
function get_true_latest_price($product_id, $conn) {
    $like_term = '%"id":"' . $product_id . '"%';
    $sql = "SELECT detail_input FROM cms_input WHERE detail_input LIKE ? AND deleted = 0 ORDER BY id DESC LIMIT 10";
    $stmt = $conn->prepare($sql);
    if (!$stmt) return null;
    $stmt->bind_param("s", $like_term);
    $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;
}

// --- 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: 95%; 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; }
    .warning { background-color: #fff3cd; color: #856404; padding: 1rem; border: 1px solid #ffeeba; border-radius: 5px; margin-bottom: 1rem; }
    table { border-collapse: collapse; width: 100%; margin: 20px 0; font-size: 14px; }
    th, td { border: 1px solid #dee2e6; padding: 12px; text-align: left; vertical-align: middle; }
    th { background-color: #f2f2f2; }
    .table-responsive { max-height: 70vh; overflow-y: auto; }
    .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: #28a745; }
    .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">
HTML;

try {
    if ($is_execution_mode) {
        // --- CHẾ ĐỘ 2: THỰC THI CẬP NHẬT ---
        $conn->begin_transaction();
        try {
            $stmt_update = $conn->prepare("UPDATE cms_products SET prd_total_value = ?, prd_average_cost = ?, prd_origin_price = ? WHERE ID = ?");
            $updated_count = 0;

            foreach ($selected_products_to_update as $product_id => $new_cost) {
                $product_id = intval($product_id);
                $new_cost = floatval($new_cost);

                if ($new_cost > 0) {
                    $stmt_get_stock = $conn->prepare("SELECT prd_sls FROM cms_products WHERE ID = ?");
                    $stmt_get_stock->bind_param("i", $product_id);
                    $stmt_get_stock->execute();
                    $prod_data = $stmt_get_stock->get_result()->fetch_assoc();
                    $stmt_get_stock->close();

                    if ($prod_data) {
                        // Nếu tồn kho là 0, tổng giá trị mới cũng là 0. GVBQ vẫn được cập nhật.
                        $new_total_value = floatval($prod_data['prd_sls']) * $new_cost; 
                        $stmt_update->bind_param("dddi", $new_total_value, $new_cost, $new_cost, $product_id);
                        $stmt_update->execute();
                        $updated_count++;
                    }
                }
            }
            $stmt_update->close();
            $conn->commit();
            echo "<div class='success'>HOÀN TẤT! Đã cập nhật giá trị cho <b>$updated_count</b> sản phẩm.</div>";
            echo '<a href="">Quay lại trang quét</a>';

        } catch (Exception $e) {
            $conn->rollback();
            echo "<div class='error'>Lỗi khi cập nhật CSDL: " . $e->getMessage() . "</div>";
        }

    } else {
        // --- CHẾ ĐỘ 1: QUÉT VÀ HIỂN THỊ ---
        echo '<div class="header"><h1>Công Cụ Sửa Lỗi Giá Vốn Bằng 0 (Quét Toàn Bộ)</h1><p>Kịch bản sẽ quét các sản phẩm có giá vốn bằng 0, bao gồm cả sản phẩm có tồn kho bằng 0.</p></div>';
        
        // THAY ĐỔI CHÍNH: Sửa "prd_sls > 0" thành "prd_sls >= 0" để lấy cả sản phẩm tồn kho bằng 0
        $sql = "SELECT ID, prd_name, prd_sls, prd_sell_price FROM cms_products WHERE prd_average_cost = 0 AND prd_sls >= 0 AND deleted = 0";
        $products_with_zero_cost = $conn->query($sql)->fetch_all(MYSQLI_ASSOC);
        
        $products_to_fix = [];
        foreach ($products_with_zero_cost as $product) {
            $latest_price = get_true_latest_price($product['ID'], $conn);
            if ($latest_price !== null && $latest_price > 0) {
                $product['latest_price'] = $latest_price;
                $products_to_fix[] = $product;
            }
        }
        
        if (empty($products_to_fix)) {
            echo "<div class='success'>Không tìm thấy sản phẩm nào có giá vốn bằng 0 và có lịch sử nhập hàng để tự động sửa.</div>";
        } else {
            echo '<div class="warning">Đã tìm thấy <b>'.count($products_to_fix).'</b> sản phẩm có thể tự động sửa. Vui lòng kiểm tra và xác nhận.</div>';
            echo '<form method="post">';
            echo '<div class="table-responsive">';
            echo '<table><thead><tr><th><input type="checkbox" id="select_all" checked></th><th>ID</th><th>Tên Sản Phẩm</th><th>Tồn Kho</th><th>Giá Bán</th><th style="color: #007bff;">Giá Nhập Gần Nhất (Đề xuất)</th></tr></thead><tbody>';

            foreach ($products_to_fix as $product) {
                echo '<tr>';
                echo '<td><input type="checkbox" name="selected_products['.$product['ID'].']" value="'.$product['latest_price'].'" checked></td>';
                echo '<td>' . $product['ID'] . '</td>';
                echo '<td>' . htmlspecialchars($product['prd_name']) . '</td>';
                echo '<td>' . number_format($product['prd_sls']) . '</td>';
                echo '<td>' . number_format($product['prd_sell_price']) . '</td>';
                echo '<td style="color: #28a745; font-weight: bold;">' . number_format($product['latest_price'], 2) . '</td>';
                echo '</tr>';
            }
            
            echo '</tbody></table></div>';
            echo '<button type="submit" class="action-button" onclick="return confirm(\'Bạn có chắc chắn muốn cập nhật giá vốn cho các sản phẩm đã chọn không?\');">CẬP NHẬT CHO CÁC MỤC ĐÃ CHỌN</button>';
            echo '</form>';
echo "<script>document.getElementById('select_all').onclick = function() { var checkboxes = document.querySelectorAll(\"input[type='checkbox']\"); checkboxes.forEach(checkbox => checkbox.checked = this.checked); }</script>";        }
    }
} catch (Exception $e) {
    echo "<div class='error'>Lỗi Hệ Thống: " . $e->getMessage() . "</div>";
}

echo "</div>";
?>