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

/* --- THÔNG TIN CẤU HÌNH QR CODE --- */
// Vui lòng điền chính xác thông tin tài khoản ngân hàng của bạn vào đây.
$bankBin     = "970403";      // Mã BIN của ngân hàng. Vd: Sacombank là 970403, Vietcombank là 970448. (Xem danh sách mã BIN tại: https://api.vietqr.io/v2/banks)
$accountNo   = "0932905151";   // Số tài khoản ngân hàng của bạn.
$accountName = "VO NGUYEN LY"; // Tên chủ tài khoản (viết không dấu).
/* --- KẾT THÚC CẤU HÌNH --- */

$order_id = intval($_GET['order_id'] ?? 0);
if ($order_id <= 0) die("ID đơn hàng không hợp lệ.");

$stmt_order = $conn->prepare("SELECT o.*, c.customer_name, c.customer_phone, c.customer_addr, c.notes as customer_tax_id, u.display_name as staff_name FROM cms_orders o LEFT JOIN cms_customers c ON o.customer_id = c.ID LEFT JOIN cms_users u ON o.user_init = u.id WHERE o.ID = ?");
$stmt_order->bind_param("i", $order_id);
$stmt_order->execute();
$order = $stmt_order->get_result()->fetch_assoc();
$stmt_order->close();

if (!$order) { die("Không tìm thấy đơn hàng."); }

$order_items = json_decode($order['detail_order'], true);
if (!is_array($order_items)) {
    $order_items = [];
}

$product_ids = array_map(function($item) { return $item['id'] ?? 0; }, $order_items);
$products_data = [];
if (!empty($product_ids)) {
    $valid_product_ids = array_filter($product_ids, function($id) { return $id > 0; });
    
    if (!empty($valid_product_ids)) {
        $sql_products = "SELECT p.id, p.prd_code, p.prd_name, p.prd_quycach, u.prd_unit_name 
                         FROM cms_products p
                         LEFT JOIN cms_products_unit u ON p.prd_unit_id = u.id
                         WHERE p.id IN (". implode(',', array_fill(0, count($valid_product_ids), '?')) .")";
        $stmt_products = $conn->prepare($sql_products);
        
        $types = str_repeat('i', count($valid_product_ids));
        $stmt_products->bind_param($types, ...$valid_product_ids);
        
        $stmt_products->execute();
        $result = $stmt_products->get_result();
        while ($row = $result->fetch_assoc()) { 
            $products_data[$row['id']] = $row; 
        }
        $stmt_products->close();
    }
}

function numberToWords($number) {
    $hyphen      = ' '; $conjunction = ' '; $separator   = ' '; $negative    = 'âm '; $decimal     = ' phẩy ';
    $dictionary  = array(0 => 'không', 1 => 'một', 2 => 'hai', 3 => 'ba', 4 => 'bốn', 5 => 'năm', 6 => 'sáu', 7 => 'bảy', 8 => 'tám', 9 => 'chín', 10 => 'mười', 11 => 'mười một', 12 => 'mười hai', 13 => 'mười ba', 14 => 'mười bốn', 15 => 'mười lăm', 16 => 'mười sáu', 17 => 'mười bảy', 18 => 'mười tám', 19 => 'mười chín', 20 => 'hai mươi', 30 => 'ba mươi', 40 => 'bốn mươi', 50 => 'năm mươi', 60 => 'sáu mươi', 70 => 'bảy mươi', 80 => 'tám mươi', 90 => 'chín mươi', 100 => 'trăm', 1000 => 'nghìn', 1000000 => 'triệu', 1000000000 => 'tỷ');
    if (!is_numeric($number)) { return false; }
    if ($number < 0) { return $negative . numberToWords(abs($number)); }
    $string = '';
    if (strpos($number, '.') !== false) { list($number, $fraction) = explode('.', $number); }
    switch (true) {
        case $number < 21: $string = $dictionary[$number]; break;
        case $number < 100: $tens = ((int) ($number / 10)) * 10; $units  = $number % 10; $string = $dictionary[$tens]; if ($units) { $string .= $hyphen . ($units == 1 ? 'mốt' : ($units == 5 ? 'lăm' : $dictionary[$units])); } break;
        case $number < 1000: $hundreds  = $number / 100; $remainder = $number % 100; $string = $dictionary[(int)$hundreds] . ' ' . $dictionary[100]; if ($remainder) { $string .= $conjunction . ($remainder < 10 ? 'linh ' : '') . numberToWords($remainder); } break;
        default: $baseUnit = pow(1000, floor(log($number, 1000))); $numBaseUnits = (int) ($number / $baseUnit); $remainder = $number % $baseUnit; $string = numberToWords($numBaseUnits) . ' ' . $dictionary[$baseUnit]; if ($remainder) { $string .= $remainder < 100 ? $conjunction . 'không trăm ' . ($remainder < 10 ? 'linh ' : '') : $conjunction; $string .= numberToWords($remainder); } break;
    }
    return $string;
}

// === HÀM MỚI ĐƯỢC THÊM VÀO ===
// Hàm để xóa dấu tiếng Việt và các ký tự đặc biệt
function remove_vietnamese_diacritics($str) {
    $str = preg_replace('/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/', 'a', $str);
    $str = preg_replace('/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/', 'e', $str);
    $str = preg_replace('/(ì|í|ị|ỉ|ĩ)/', 'i', $str);
    $str = preg_replace('/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/', 'o', $str);
    $str = preg_replace('/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/', 'u', $str);
    $str = preg_replace('/(ỳ|ý|ỵ|ỷ|ỹ)/', 'y', $str);
    $str = preg_replace('/(đ)/', 'd', $str);
    $str = preg_replace('/(À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)/', 'A', $str);
    $str = preg_replace('/(È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)/', 'E', $str);
    $str = preg_replace('/(Ì|Í|Ị|Ỉ|Ĩ)/', 'I', $str);
    $str = preg_replace('/(Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)/', 'O', $str);
    $str = preg_replace('/(Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)/', 'U', $str);
    $str = preg_replace('/(Ỳ|Ý|Ỵ|Ỷ|Ỹ)/', 'Y', $str);
    $str = preg_replace('/(Đ)/', 'D', $str);
    // Loại bỏ các ký tự đặc biệt không phải chữ hoặc số
    $str = preg_replace('/[^A-Za-z0-9\s]/', '', $str);
    // Thay thế nhiều khoảng trắng bằng một khoảng trắng duy nhất
    $str = preg_replace('/\s+/', ' ', $str);
    return trim($str);
}


// === THAY ĐỔI QUAN TRỌNG Ở ĐÂY ===
// Tạo URL cho mã QR theo cú pháp Quick Link, thêm Tên Khách Hàng vào nội dung
$qrAmount = $order['total_money'];
$qrAccountName = rawurlencode($accountName);
$template = "compact2";

// Lấy và chuẩn hóa Tên Khách Hàng + Mã Hóa Đơn cho nội dung chuyển khoản
$customerName = $order['customer_name'] ?? 'Khach le';
$invoiceCode = $order['output_code'];
$cleanCustomerName = remove_vietnamese_diacritics($customerName);
$transferContent = $cleanCustomerName . ' ' . $invoiceCode;
$qrContent = rawurlencode($transferContent); // URL-encode toàn bộ nội dung

$qrImageUrl = "https://img.vietqr.io/image/{$bankBin}-{$accountNo}-{$template}.png?amount={$qrAmount}&addInfo={$qrContent}&accountName={$qrAccountName}";

?>
<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Hóa đơn <?php echo htmlspecialchars($order['output_code']); ?></title>
    <style>
        body { font-family: 'Times New Roman', Times, serif; font-size: 12pt; margin: 0; background-color: #eee; }
        .page { background: white; width: 14.8cm; min-height: 20cm; padding: 1cm; margin: 1cm auto; display: flex; flex-direction: column; box-shadow: 0 0 5px rgba(0,0,0,0.1); }
        .main-content { flex-grow: 1; }
        .title { text-align: center; font-size: 16pt; font-weight: bold; margin: 10px 0; }
        
        .info-grid { display: flex; width: 100%; font-size: 11pt; flex-wrap: wrap; margin-bottom: 10px; }
        .info-grid p { margin: 2px 0; line-height: 1.4; }
        
        .info-col { width: 50%; }
        .items-table { width: 100%; border-collapse: collapse; font-size: 11pt; }
        .items-table th, .items-table td { border: 1px solid #000; padding: 3px; text-align: center; vertical-align: middle; }
        
        .items-table .text-left { text-align: left; } .items-table .text-right { text-align: right; }
        .summary-section { margin-top: 10px; font-size: 11pt; }
        .summary-details { width: 60%; margin-left: auto; }
        .summary-row { display: flex; justify-content: space-between; padding: 2px 0; }
        .summary-words { margin-top: 8px; font-style: italic; }
        
        .qr-section { text-align: center; margin-top: 20px; }
        .qr-section img { width: 150px; height: 150px; }
        .qr-section p { margin: 5px 0 0 0; font-size: 10pt; font-weight: bold; }

        .signatures { display: table; width: 100%; margin-top: auto; padding-top: 30px; text-align: center; font-weight: bold; }
        .signatures .signer { display: table-cell; font-size: 11pt; }
        .signatures p { margin-top: 50px; font-style: italic; font-weight: normal; font-size: 10pt; }
        .print-controls { position: fixed; top: 1rem; right: 1rem; z-index: 1050; }
        .custom-btn { font-family: Arial, sans-serif; display: inline-block; font-weight: bold; border: none; border-radius: 5px; padding: 10px 20px; cursor: pointer; text-decoration: none; margin: 5px; }
        .btn-back { background-color: #6c757d; color: white; }
        .btn-print { background-color: #007bff; color: white; }
        @media print {
            body, .page { margin: 0; padding: 0.5cm; box-shadow: none; border: none; }
            .print-controls { display: none; }
        }
    </style>
</head>
<body>
    <div class="print-controls">
        <a href="javascript:window.history.back()" class="custom-btn btn-back">Trở lại</a>
        <button onclick="window.print()" class="custom-btn btn-print">In Phiếu</button>
    </div>

    <div class="page">
        <?php if(file_exists(__DIR__ . '/../../templates/print_header_template.php')) { require_once __DIR__ . '/../../templates/print_header_template.php'; } ?>

        <div class="main-content">
            <h1 class="title">PHIẾU GIAO HÀNG</h1>
            <div class="info-grid">
                <div class="info-col">
                    <p><strong>Khách hàng:</strong> <?php echo htmlspecialchars($order['customer_name'] ?? 'Khách lẻ'); ?></p>
                    <p><strong>Điện thoại:</strong> <?php echo htmlspecialchars($order['customer_phone']); ?></p>
                </div>
                <div class="info-col">
                    <p><strong>Hóa đơn số:</strong> <?php echo htmlspecialchars($order['output_code']); ?></p>
                    <p><strong>Ngày HĐ:</strong> <?php echo date('d/m/Y H:i:s', strtotime($order['sell_date'])); ?></p>
                </div>
                <div class="info-col">
                     <p><strong>Nhân viên bán hàng:</strong> <?php echo htmlspecialchars($order['staff_name'] ?? 'N/A'); ?></p>
                </div>
                <div class="info-col">
                    <p><strong>Địa chỉ giao hàng:</strong> <?php echo htmlspecialchars($order['customer_addr']); ?></p>
                </div>
            </div>

            <table class="items-table">
                <thead>
                    <tr>
                        <th>STT</th><th>Mã hàng</th><th class="text-left">Miêu tả</th><th>Quy cách</th><th>Thùng</th><th>Lẻ</th><th>Tổng SL</th><th class="text-right">Giá thùng</th><th class="text-right">Giá lẻ</th><th class="text-right">Thành tiền</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (empty($order_items)): ?>
                        <tr><td colspan="10" style="text-align: center; padding: 20px;">(Không có sản phẩm trong đơn hàng)</td></tr>
                    <?php else: ?>
                        <?php 
                        $stt = 1; $total_quantity = 0; $total_packs = 0; $total_loose = 0; $sub_total = 0;
                        foreach ($order_items as $item): 
                            $product = $products_data[$item['id']] ?? ['prd_name' => 'N/A', 'prd_quycach' => 0, 'prd_code' => 'N/A'];
                            $item_code = $item['code'] ?? $product['prd_code'];
                            $item_name = $item['name'] ?? $product['prd_name'];
                            $spec_size = (int)($product['prd_quycach'] ?? 0);
                            $quantity = (int)($item['quantity'] ?? 0);
                            $price_loose = (float)($item['price'] ?? 0);
                            $packs = ($spec_size > 0) ? floor($quantity / $spec_size) : 0;
                            $loose = ($spec_size > 0) ? $quantity % $spec_size : $quantity;
                            $price_pack = ($spec_size > 0) ? $price_loose * $spec_size : 0;
                            $line_total = $quantity * $price_loose;
                            $total_quantity += $quantity; $total_packs += $packs; $total_loose += $loose; $sub_total += $line_total;
                        ?>
                        <tr>
                            <td><?php echo $stt++; ?></td>
                            <td><?php echo htmlspecialchars($item_code); ?></td>
                            <td class="text-left"><?php echo htmlspecialchars($item_name); ?></td>
                            <td><?php echo $spec_size > 0 ? $spec_size : ''; ?></td>
                            <td><?php echo $packs > 0 ? number_format($packs) : ''; ?></td>
                            <td><?php echo $loose > 0 ? number_format($loose) : ''; ?></td>
                            <td><strong><?php echo number_format($quantity); ?></strong></td>
                            <td class="text-right"><?php echo $price_pack > 0 ? number_format($price_pack) : ''; ?></td>
                            <td class="text-right"><?php echo number_format($price_loose); ?></td>
                            <td class="text-right"><strong><?php echo number_format($line_total); ?></strong></td>
                        </tr>
                        <?php endforeach; ?>
                        <tr>
                            <td colspan="4" class="text-right"><strong>Tổng cộng</strong></td>
                            <td><strong><?php echo $total_packs > 0 ? number_format($total_packs) : ''; ?></strong></td>
                            <td><strong><?php echo $total_loose > 0 ? number_format($total_loose) : ''; ?></strong></td>
                            <td><strong><?php echo number_format($total_quantity); ?></strong></td>
                            <td colspan="2"></td>
                            <td class="text-right"><strong><?php echo number_format($sub_total); ?></strong></td>
                        </tr>
                    <?php endif; ?>
                </tbody>
            </table>
            
            <div class="summary-section">
                <div class="summary-details">
                    <div class="summary-row"><span>Cộng tiền hàng:</span> <span><?php echo number_format($sub_total); ?></span></div>
                    <?php if (isset($order['discount_item']) && $order['discount_item'] > 0): ?>
                    <div class="summary-row"><span>Chiết khấu:</span> <span>- <?php echo number_format($order['discount_item']); ?></span></div>
                    <?php endif; ?>
                     <?php if (isset($order['vat']) && $order['vat'] > 0): 
                         $vat_amount = ($sub_total - ($order['discount_item'] ?? 0)) * ($order['vat'] / 100);
                     ?>
                    <div class="summary-row"><span>VAT (<?php echo $order['vat']; ?>%):</span> <span>+ <?php echo number_format($vat_amount); ?></span></div>
                    <?php endif; ?>
                    <div class="summary-row" style="font-weight: bold; border-top: 1px solid #ccc; padding-top: 5px;"><span>Thành tiền:</span> <span><?php echo number_format($order['total_money']); ?></span></div>
                </div>
                <div class="summary-words">
                    <strong>Bằng chữ (Thành tiền đơn này):</strong> <?php echo ucfirst(numberToWords($order['total_money'])) . ' đồng chẵn'; ?>.
                </div>
            </div>
        </div>

        <div class="qr-section">
            <img src="<?php echo $qrImageUrl; ?>" alt="VietQR Code">
            <p>Quét mã để thanh toán</p>
        </div>

        <footer class="signatures">
            <div class="signer">Kế toán bán hàng<p>(Ký, ghi rõ họ tên)</p></div>
            <div class="signer">Nhân viên bán hàng<p>(Ký, ghi rõ họ tên)</p></div>
            <div class="signer">Nhân viên giao hàng<p>(Ký, ghi rõ họ tên)</p></div>
            <div class="signer">Khách hàng<p>(Ký, ghi rõ họ tên)</p></div>
        </footer>
    </div>
</body>
</html>