<?php include "../../root.class.php";
$html = new html();
$html->add_styles_page();
$db = new db_safeguard();

$record_id = $_GET['record_id'];

$booked_stock_res = $db->query("book_stock", "SELECT * FROM book_stock WHERE record_id = '$record_id'");
$booked_stock = $booked_stock_res->fetch_assoc();
$order_no = $booked_stock['order_no'];

/* ── Build line items with already returned, already used, outstanding ── */
$all_complete = true;
$line_items   = [];

$booked_data_res = $db->query("book_stock_list", "SELECT * FROM book_stock_list WHERE order_no = '$order_no'");
while ($row = $booked_data_res->fetch_assoc()) {
    $sn = $row['stock_no'];

    $ret_res = $db->query("stock_trans",
        "SELECT COALESCE(SUM(quantity), 0) AS total
         FROM stock_trans
         WHERE stock_no = '$sn' AND status = 'RETURNED' AND order_no = '$order_no'"
    );
    $already_returned = (int) $ret_res->fetch_assoc()['total'];

    $used_res = $db->query("stock_trans",
        "SELECT COALESCE(SUM(quantity), 0) AS total
         FROM stock_trans
         WHERE stock_no = '$sn' AND status = 'USED' AND order_no = '$order_no'"
    );
    $already_used = (int) $used_res->fetch_assoc()['total'];

    $outstanding = max(0, (int) $row['amount'] - $already_returned - $already_used);

    $stock_type_res  = $db->query("stock_types", "SELECT * FROM stock_types WHERE record_id = '{$row['stock_type_id']}'");
    $stock_type_data = $stock_type_res->fetch_assoc();

    $row['_already_returned'] = $already_returned;
    $row['_already_used']     = $already_used;
    $row['_outstanding']      = $outstanding;
    $row['_type_name']        = $stock_type_data['name'];

    if ($outstanding > 0) $all_complete = false;

    $line_items[] = $row;
}

$total_rows = count($line_items);
?>

<style>
    :root {
        --blue: #1e3a8a;
        --light-blue: #eaf0ff;
        --orange: #f97316;
        --white: #ffffff;
        --border: #d1d5db;
        --text: #0f172a;
        --green: #16a34a;
        --green-light: #dcfce7;
        --purple: #7c3aed;
    }

    body { margin: 0; background: #f8fafc; font-family: "Segoe UI", Roboto, Arial, sans-serif; color: var(--text); }
    .form_down { width: 95%; margin: auto; padding-bottom: 3vw; }
    h1 { font-size: 2vw; color: var(--blue); margin: 1.5vw 0 0.8vw; }

    table { width: 100%; border-collapse: collapse; background: var(--white); border-radius: 10px; overflow: hidden; box-shadow: 0 6px 20px rgba(0,0,0,0.07); margin-bottom: 1.5vw; }
    thead th { background: var(--blue); color: var(--white); text-align: left; padding: 0.6vw 0.8vw; font-size: 1.1vw; }
    thead th.col-used { background: var(--purple); }
    tbody td { padding: 0.5vw 0.8vw; font-size: 1vw; border-bottom: 1px solid var(--border); }
    tbody tr:nth-child(even) td { background: var(--light-blue); }

    .inputs {
        width: 100%; box-sizing: border-box; border: 1px solid #cbd5e1;
        border-radius: 6px; padding: 6px 8px; font-size: 0.95vw;
        background: var(--white); color: var(--text);
    }
    .inputs:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,0.15); }
    .inputs[readonly] { background: #f1f5f9; color: #64748b; }
    .inputs.used-input { border-color: var(--purple); }
    .inputs.used-input:focus { box-shadow: 0 0 0 2px rgba(124,58,237,0.15); }

    .badge-complete {
        display: inline-block; background: var(--green-light); color: var(--green);
        border: 1px solid var(--green); border-radius: 20px; padding: 4px 14px;
        font-weight: 700; font-size: 0.9vw;
    }
    .badge-outstanding {
        display: inline-block; background: #fef3c7; color: #92400e;
        border: 1px solid #f59e0b; border-radius: 20px; padding: 4px 14px;
        font-weight: 700; font-size: 0.9vw;
    }

    .all-complete-banner {
        background: var(--green-light); border: 2px solid var(--green);
        color: var(--green); border-radius: 12px; padding: 1.5vw 2vw;
        font-size: 1.8vw; font-weight: 700; text-align: center; margin: 1.5vw 0;
    }

    .submit_btn {
        background: var(--orange); color: var(--white); border: none;
        padding: 0.8vw 2vw; font-size: 1.1vw; font-weight: 700;
        border-radius: 8px; cursor: pointer; margin-top: 1vw;
        transition: background 0.2s ease;
    }
    .submit_btn:hover { background: #ea580c; }

    .field-row { display: flex; flex-direction: row; align-items: center; gap: 1vw; margin-bottom: 0.6vw; }
    .field-label { font-size: 1.2vw; font-weight: 600; color: var(--blue); width: 18%; }
    .field-input { width: 40%; }
    .hint { font-size: 0.85vw; color: #64748b; margin: 0 0 1vw; }
</style>

<div class="form_down">

    <h1>STOCK ASSIGNED — <?= htmlspecialchars($order_no) ?></h1>

    <div class="field-row">
        <span class="field-label">ORDER NO :</span>
        <input class="inputs field-input" type="text" value="<?= htmlspecialchars($order_no) ?>" readonly>
    </div>
    <div class="field-row">
        <span class="field-label">BOOKING DATE :</span>
        <input class="inputs field-input" type="text" value="<?= htmlspecialchars($booked_stock['booking_date']) ?>" readonly>
    </div>

    <!-- ── Booked out reference ── -->
    <h1>BOOKED OUT</h1>
    <table>
        <thead>
            <tr>
                <th>Type</th>
                <th>Stock No</th>
                <th>Item Name</th>
                <th>Booked Qty</th>
                <th>Registration No</th>
                <th>Open Balance</th>
                <th>Close Balance</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($line_items as $item): ?>
            <tr>
                <td><?= htmlspecialchars($item['_type_name']) ?></td>
                <td><?= htmlspecialchars($item['stock_no']) ?></td>
                <td><?= htmlspecialchars($item['item_name']) ?></td>
                <td><?= htmlspecialchars($item['amount']) ?></td>
                <td><?= htmlspecialchars($item['registration_no']) ?></td>
                <td><?= htmlspecialchars($item['open_balance']) ?></td>
                <td><?= htmlspecialchars($item['close_balance']) ?></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

    <?php if ($all_complete): ?>
        <div class="all-complete-banner">✔ ALL STOCK RETURNED / USED — ORDER COMPLETE</div>
    <?php else: ?>

    <h1>RETURN STOCK</h1>
    <p class="hint">
        <strong>Return Qty</strong> = stock coming back to the warehouse &nbsp;|&nbsp;
        <span style="color:var(--purple);font-weight:700;">Used Qty</span> = stock consumed on the job.
        Return + Used cannot exceed Outstanding.
    </p>

    <form action="return_stock.ajax.php" method="post">
        <input type="hidden" name="record_id" value="<?= htmlspecialchars($record_id) ?>">
        <input type="hidden" name="order_no"  value="<?= htmlspecialchars($order_no) ?>">
        <input type="hidden" name="user_id"   value="<?= $_SESSION['user_id'] ?>">
        <input type="hidden" name="rows"      value="<?= $total_rows ?>">

        <div class="field-row">
            <span class="field-label">DATE RETURNED :</span>
            <input class="inputs field-input" type="datetime-local" name="date_returned" id="date_returned" required>
        </div>

        <br>

        <table>
            <thead>
                <tr>
                    <th>Type</th>
                    <th>Stock No</th>
                    <th>Item Name</th>
                    <th>Booked</th>
                    <th>Returned</th>
                    <th>Used</th>
                    <th>Outstanding</th>
                    <th>Return Qty</th>
                    <th class="col-used">Used Qty</th>
                    <th>Status</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($line_items as $i => $item):
                    $n = $i + 1;
                ?>
                <tr>
                    <input type="hidden" name="stock_no_<?= $n ?>"    value="<?= htmlspecialchars($item['stock_no']) ?>">
                    <input type="hidden" name="item_name_<?= $n ?>"   value="<?= htmlspecialchars($item['item_name']) ?>">
                    <input type="hidden" name="outstanding_<?= $n ?>" value="<?= $item['_outstanding'] ?>">

                    <td><?= htmlspecialchars($item['_type_name']) ?></td>
                    <td><?= htmlspecialchars($item['stock_no']) ?></td>
                    <td><?= htmlspecialchars($item['item_name']) ?></td>
                    <td><?= htmlspecialchars($item['amount']) ?></td>
                    <td><?= $item['_already_returned'] ?></td>
                    <td><?= $item['_already_used'] ?></td>
                    <td><?= $item['_outstanding'] ?></td>

                    <!-- Return Qty -->
                    <td>
                        <?php if ($item['_outstanding'] > 0): ?>
                            <input type="number" class="inputs"
                                name="return_qty_<?= $n ?>"
                                id="return_qty_<?= $n ?>"
                                min="0" max="<?= $item['_outstanding'] ?>" value="0"
                                oninput="validateRow(<?= $n ?>, <?= $item['_outstanding'] ?>)">
                        <?php else: ?>
                            <input type="number" class="inputs" value="0" readonly>
                        <?php endif; ?>
                    </td>

                    <!-- Used Qty -->
                    <td>
                        <?php if ($item['_outstanding'] > 0): ?>
                            <input type="number" class="inputs used-input"
                                name="used_qty_<?= $n ?>"
                                id="used_qty_<?= $n ?>"
                                min="0" max="<?= $item['_outstanding'] ?>" value="0"
                                oninput="validateRow(<?= $n ?>, <?= $item['_outstanding'] ?>)">
                        <?php else: ?>
                            <input type="number" class="inputs" value="0" readonly>
                        <?php endif; ?>
                    </td>

                    <!-- Status -->
                    <td>
                        <?php if ($item['_outstanding'] == 0): ?>
                            <span class="badge-complete">COMPLETE</span>
                        <?php else: ?>
                            <span class="badge-outstanding" id="status_badge_<?= $n ?>">
                                <?= $item['_outstanding'] ?> OUTSTANDING
                            </span>
                        <?php endif; ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>

        <button type="submit" class="submit_btn">SUBMIT RETURN</button>
    </form>

    <?php endif; ?>

</div>

<script>
    function validateRow(n, max) {
        const retField  = document.getElementById('return_qty_' + n);
        const usedField = document.getElementById('used_qty_'   + n);
        const badge     = document.getElementById('status_badge_' + n);

        let ret  = parseInt(retField.value)  || 0;
        let used = parseInt(usedField.value) || 0;

        if (ret  < 0) ret  = 0;
        if (used < 0) used = 0;

        /* if combined exceeds outstanding, reduce the field that triggered the input */
        if (ret + used > max) {
            if (document.activeElement === retField) {
                ret = max - used;
                if (ret < 0) ret = 0;
            } else {
                used = max - ret;
                if (used < 0) used = 0;
            }
            retField.value  = ret;
            usedField.value = used;
        }

        /* live badge update */
        const remaining = max - ret - used;
        if (remaining <= 0) {
            badge.className   = 'badge-complete';
            badge.textContent = 'COMPLETE';
        } else {
            badge.className   = 'badge-outstanding';
            badge.textContent = remaining + ' OUTSTANDING';
        }
    }
</script>