<?php
// stock_return.php - Công cụ hoàn kho an toàn
ini_set('display_errors', 1);
error_reporting(E_ALL);

// Nạp các thiết lập và kết nối CSDL
require_once __DIR__ . '/../core/init.php';

// Xử lý tìm kiếm sản phẩm cho autocomplete
if (isset($_GET['action']) && $_GET['action'] == 'search_products') {
    header('Content-Type: application/json; charset=utf-8');
    $term = "%" . ($_GET['term'] ?? '') . "%";
    $stmt = $conn->prepare("SELECT ID, prd_code, prd_name FROM cms_products WHERE (prd_name LIKE ? OR prd_code LIKE ?) AND deleted = 0 LIMIT 10");
    $stmt->bind_param("ss", $term, $term);
    $stmt->execute();
    $result = $stmt->get_result();
    $products = [];
    while ($row = $result->fetch_assoc()) {
        $products[] = [
            'id' => $row['ID'],
            'label' => $row['prd_code'] . ' - ' . $row['prd_name'],
            'value' => $row['prd_name'],
        ];
    }
    $stmt->close();
    echo json_encode($products);
    exit;
}

$message = '';
// Xử lý khi người dùng gửi form hoàn kho
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'process_return') {
    $product_ids = $_POST['product_id'] ?? [];
    $quantities = $_POST['quantity'] ?? [];

    if (!empty($product_ids)) {
        $conn->begin_transaction();
        try {
            // Chuẩn bị câu lệnh SQL an toàn
            $sql = "UPDATE cms_products 
                    SET 
                        prd_sls = prd_sls + ?, 
                        prd_total_value = prd_total_value + (? * IF(prd_average_cost > 0, prd_average_cost, prd_origin_price))
                    WHERE ID = ?";
            $stmt = $conn->prepare($sql);

            $total_items_returned = 0;
            for ($i = 0; $i < count($product_ids); $i++) {
                $pid = intval($product_ids[$i]);
                $qty = floatval($quantities[$i]);

                if ($pid > 0 && $qty > 0) {
                    // Gán tham số và thực thi
                    // Ghi chú: biến $qty được dùng 2 lần trong câu lệnh SQL
                    $stmt->bind_param("ddi", $qty, $qty, $pid);
                    if (!$stmt->execute()) {
                        throw new Exception("Lỗi khi cập nhật sản phẩm ID: " . $pid . " - " . $stmt->error);
                    }
                    $total_items_returned++;
                }
            }
            $stmt->close();
            
            $conn->commit();
            $message = "<div class='message success'>Đã hoàn kho thành công cho {$total_items_returned} sản phẩm!</div>";

        } catch (Exception $e) {
            $conn->rollback();
            $message = "<div class='message error'>Đã xảy ra lỗi và toàn bộ giao dịch đã được hủy bỏ: " . $e->getMessage() . "</div>";
        }
    } else {
        $message = "<div class='message error'>Vui lòng thêm ít nhất một sản phẩm để hoàn kho.</div>";
    }
}
?>
<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Công Cụ Hoàn Kho An Toàn</title>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
    <style>
        body { font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 20px; }
        .container { max-width: 800px; margin: auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1, h2 { text-align: center; color: #333; }
        .btn { display: inline-block; background-color: #28a745; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; }
        .btn-primary { background-color: #007bff; }
        .btn-danger { background-color: #dc3545; }
        .message { padding: 15px; margin-bottom: 20px; border-radius: 4px; text-align: center; font-weight: bold; }
        .success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
        .ui-autocomplete { max-height: 200px; overflow-y: auto; overflow-x: hidden; }
        input[type="number"] { width: 100%; padding: 8px; box-sizing: border-box; }
    </style>
</head>
<body>
<div class="container">
    <h1>Công Cụ Hoàn Kho An Toàn</h1>
    <p style="text-align: center; color: #555;">Sử dụng công cụ này để hoàn trả lại số lượng tồn kho sau khi đã xóa nhầm đơn hàng.</p>
    <?php echo $message; ?>

    <form action="stock_return.php" method="POST">
        <input type="hidden" name="action" value="process_return">
        
        <h3>Danh Sách Sản Phẩm Cần Hoàn Kho</h3>
        <table id="product-table">
            <thead>
                <tr>
                    <th>Sản Phẩm (gõ mã hoặc tên)</th>
                    <th width="25%">Số Lượng Hoàn Trả</th>
                    <th width="5%"></th>
                </tr>
            </thead>
            <tbody id="product-list">
                </tbody>
        </table>
        <button type="button" id="add-product" class="btn" style="margin-top: 10px;">+ Thêm Sản Phẩm</button>
        
        <div style="margin-top: 20px; text-align: right;">
            <button type="submit" class="btn btn-primary">Thực Hiện Hoàn Kho</button>
        </div>
    </form>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
    let rowIdx = 0;

    function addProductRow() {
        let html = `
            <tr id="row-${rowIdx}">
                <td>
                    <input type="hidden" name="product_id[]" class="product-id" required>
                    <input type="text" name="product_name[]" class="product-search" placeholder="Gõ để tìm sản phẩm..." required style="width: 100%; padding: 8px; box-sizing: border-box;">
                </td>
                <td><input type="number" name="quantity[]" class="quantity" value="1" min="0" step="any" required></td>
                <td><button type="button" class="btn btn-danger remove-row">-</button></td>
            </tr>
        `;
        $('#product-list').append(html);
        initAutocomplete(rowIdx);
        rowIdx++;
    }

    function initAutocomplete(idx) {
        $(`#row-${idx} .product-search`).autocomplete({
            source: 'stock_return.php?action=search_products',
            minLength: 2,
            select: function(event, ui) {
                $(this).closest('tr').find('.product-id').val(ui.item.id);
            }
        });
    }

    $('#add-product').on('click', function() {
        addProductRow();
    });

    $('#product-table').on('click', '.remove-row', function() {
        $(this).closest('tr').remove();
    });

    // Thêm một dòng đầu tiên khi tải trang
    addProductRow();
});
</script>
</body>
</html>