<?php
require("../../classes/autoload.php");

// ── AJAX: return invoice line items as JSON ───────────────────────────────────
if (isset($_GET['get_items']) && isset($_GET['invoice_id'])) {
    $invoice_id = (int) $_GET['invoice_id'];
    $res = $db->query("invoice_list", "
        SELECT il.size_m, il.pannels, s.code, s.name AS stock_name
        FROM invoice_list il
        JOIN stock s ON s.record_id = il.stock_id
        WHERE il.invoice_id = '$invoice_id'
        ");
    $rows = [];
    while ($row = $res->fetch_assoc()) {
        $rows[] = $row;
    }
    header('Content-Type: application/json');
    echo json_encode($rows);
    exit;
}

$html = new html("ADD DELIVERY NOTE");
$app  = new inner_app();
$app->quick_bar("/app/delivery_note/");
$app->app_start();

$function->get_invoices_list_as_record_id('invoice_list');
?>

<script>
// When an invoice is selected from the datalist, look up its record_id
// then fire AJAX to fetch line items and populate the table
document.addEventListener('DOMContentLoaded', function () {

        document.getElementById('invoice_name').addEventListener('change', function () {
                var input   = this.value;
                var options = document.querySelectorAll('#invoice_list option');
                var hidden  = document.getElementById('invoice_id');

                var found = false;
                options.forEach(function (opt) {
                        if (opt.value === input) {
                            hidden.value = opt.dataset.id;
                            found = true;
                        }
                    });

                if (!found) {
                    hidden.value = '';
                    return;
                }

                // Fetch line items for this invoice
                var xhr = new XMLHttpRequest();
                xhr.open('GET', 'add_delivery_note.php?get_items=1&invoice_id=' + hidden.value, true);
                xhr.onreadystatechange = function () {
                    if (xhr.readyState === 4 && xhr.status === 200) {
                        var items = JSON.parse(xhr.responseText);
                        var tbody = document.querySelector('#items_table tbody');
                        tbody.innerHTML = '';

                        if (items.length === 0) {
                            tbody.innerHTML = '<tr><td colspan="4" style="text-align:center;color:#888;">No items found for this invoice.</td></tr>';
                            return;
                        }

                        items.forEach(function (item) {
                                var tr = document.createElement('tr');
                                tr.innerHTML =
                                '<td><input class="background_1 padding_minmal border_1" style="color:white;width:8vw;font-size:0.9em;" name="stock_code[]" value="' + escHtml(item.code) + '"></td>' +
                                '<td><input class="background_1 padding_minmal border_1" style="color:white;width:20vw;font-size:0.9em;" name="description[]" value="' + escHtml(item.stock_name) + '"></td>' +
                                '<td><input class="background_1 padding_minmal border_1" style="color:white;width:6vw;font-size:0.9em;" type="number" min="0" step="0.001" name="size_m[]" value="' + escHtml(item.size_m) + '"></td>' +
                                '<td><input class="background_1 padding_minmal border_1" style="color:white;width:6vw;font-size:0.9em;" type="number" min="0" name="pannels[]" value="' + escHtml(item.pannels) + '"></td>' +
                                '<td><button type="button" onclick="delete_row(this)">DELETE</button></td>';
                                tbody.appendChild(tr);
                            });
                    }
                };
                xhr.send();
            });
    });

function escHtml(str) {
    return String(str)
    .replace(/&/g, '&amp;')
    .replace(/"/g, '&quot;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;');
}

function add_row() {
    var tbody = document.querySelector('#items_table tbody');
    var tr = document.createElement('tr');
    tr.innerHTML =
    '<td><input class="background_1 padding_minmal border_1" style="color:white;width:8vw;font-size:0.9em;" name="stock_code[]" value=""></td>' +
    '<td><input class="background_1 padding_minmal border_1" style="color:white;width:20vw;font-size:0.9em;" name="description[]" value=""></td>' +
    '<td><input class="background_1 padding_minmal border_1" style="color:white;width:6vw;font-size:0.9em;" type="number" min="0" step="0.001" name="size_m[]" value="0"></td>' +
    '<td><input class="background_1 padding_minmal border_1" style="color:white;width:6vw;font-size:0.9em;" type="number" min="0" name="pannels[]" value="0"></td>' +
    '<td><button type="button" onclick="delete_row(this)">DELETE</button></td>';
    tbody.appendChild(tr);
}

function delete_row(el) {
    el.closest('tr').remove();
}

function save() {
    var payload = {};
    var inputs  = document.querySelectorAll('input, select, textarea');
    inputs.forEach(function (el) {
            if (!el.name) return;
            if (el.name.endsWith('[]')) {
                if (!payload[el.name]) payload[el.name] = [];
                payload[el.name].push(el.value);
            } else {
                payload[el.name] = el.value;
            }
        });

    var form = document.createElement('form');
    form.method = 'POST';
    form.action = 'save_delivery_note.php';

    for (var key in payload) {
        if (Array.isArray(payload[key])) {
            payload[key].forEach(function (v) {
                    var input = document.createElement('input');
                    input.type  = 'hidden';
                    input.name  = key;
                    input.value = v;
                    form.appendChild(input);
                });
        } else {
            var input = document.createElement('input');
            input.type  = 'hidden';
            input.name  = key;
            input.value = payload[key];
            form.appendChild(input);
        }
    }

    document.body.appendChild(form);
    form.submit();
}
</script>

<div class="column width_90 background_1 border_radius">

<h1>ADD DELIVERY NOTE</h1>

<div class="row column_gap_2 width_80">
<div class="column width_50">
<label>INVOICE</label>
<input class="width_80" id="invoice_name" name="invoice_name" autocomplete="off"
list="invoice_list" placeholder="Select invoice..." required>
<input type="hidden" name="invoice_id" id="invoice_id">
</div>
<div class="column width_50">
<label>NOTE</label>
<input class="width_80" name="note" id="note" placeholder="Optional note...">
</div>
</div>

<br>
<button class="width_90" type="button" onclick="add_row()">ADD NEW ROW</button>
<br>

<table class="width_80" id="items_table">
<thead>
<tr>
<th>Code</th>
<th>Description</th>
<th>Size (m)</th>
<th>Panels</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5" style="text-align:center;color:#888;">Select an invoice above to load items.</td>
</tr>
</tbody>
</table>

<br>
<button class="width_90" type="button" onclick="save()">SAVE</button>
<br>

</div>
