<?php
require_once __DIR__ . '/../../config/database.php';
require_once __DIR__ . '/../../vendor/autoload.php';
 // Đường dẫn đến file autoload của Composer

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// --- Phần lấy dữ liệu từ database của bạn (giữ nguyên) ---
$picking_slip_id = intval($_GET['id'] ?? 0);
if ($picking_slip_id <= 0) {
    die('ID phiếu soạn hàng không hợp lệ.');
}

$stmt_slip = $conn->prepare("SELECT ps.output_code, ps.detail_order_id FROM cms_output ps WHERE ps.ID = ?");
$stmt_slip->bind_param("i", $picking_slip_id);
$stmt_slip->execute();
$slip = $stmt_slip->get_result()->fetch_assoc();
$stmt_slip->close();

if (!$slip) {
    die('Không tìm thấy phiếu soạn hàng.');
}

$orders_snapshot = json_decode($slip['detail_order_id'], true) ?: [];
$live_orders_to_print = [];
$order_ids = array_map(function($item) {
    return is_array($item) ? ($item['id'] ?? $item['order_id'] ?? null) : null;
}, $orders_snapshot);
$order_ids = array_filter(array_unique($order_ids), 'is_numeric');

if (!empty($order_ids)) {
    $placeholders = implode(',', array_fill(0, count($order_ids), '?'));
    $sql_live = "SELECT o.id, o.output_code, o.total_quantity, o.total_money, 
                      c.customer_name, c.customer_phone, c.customer_addr 
                 FROM cms_orders o 
                 LEFT JOIN cms_customers c ON o.customer_id = c.id 
                 WHERE o.id IN ($placeholders) AND o.deleted = 0";
    $stmt_live = $conn->prepare($sql_live);
    if ($stmt_live) {
        $stmt_live->bind_param(str_repeat('i', count($order_ids)), ...$order_ids);
        $stmt_live->execute();
        $live_orders_to_print = $stmt_live->get_result()->fetch_all(MYSQLI_ASSOC);
        $stmt_live->close();
    }
}
// --- Hết phần lấy dữ liệu ---


// --- Bắt đầu phần tạo file Excel chuyên nghiệp ---
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Tạo hàng tiêu đề
$header = ['STT', 'Mã đơn hàng', 'Khách hàng', 'Địa chỉ', 'Tổng SL', 'Tổng tiền', 'Người giao', 'Ghi chú'];
$sheet->fromArray($header, NULL, 'A1');
$sheet->getStyle('A1:H1')->getFont()->setBold(true); // In đậm tiêu đề

// Đổ dữ liệu vào file
if (!empty($live_orders_to_print)) {
    $stt = 1;
    $rowIndex = 2; // Bắt đầu từ hàng số 2
    $total_amount_sum = 0;
    $total_qty_sum = 0;
    
    foreach ($live_orders_to_print as $order) {
        // Mảng dữ liệu sạch, không chứa dấu phẩy hay ngoặc kép
        $rowData = [
            $stt++,
            $order['output_code'] ?? 'N/A',
            $order['customer_name'] ?? 'Không rõ',
            $order['customer_addr'] ?? '',
            $order['total_quantity'] ?? 0,
            $order['total_money'] ?? 0,
            '', 
            ''
        ];
        $sheet->fromArray($rowData, NULL, 'A' . $rowIndex);
        $total_qty_sum += ($order['total_quantity'] ?? 0);
        $total_amount_sum += ($order['total_money'] ?? 0);
        $rowIndex++;
    }

    // Thêm hàng tổng cộng
    $totalRowData = ['', '', '', 'Tổng cộng', $total_qty_sum, $total_amount_sum, '', ''];
    $sheet->fromArray($totalRowData, NULL, 'A' . $rowIndex);
    $sheet->getStyle('A' . $rowIndex . ':H' . $rowIndex)->getFont()->setBold(true); // In đậm hàng tổng
}

// Tự động giãn cột cho vừa dữ liệu
foreach (range('A', 'H') as $columnID) {
    $sheet->getColumnDimension($columnID)->setAutoSize(true);
}

// Xuất file ra trình duyệt
$filename = "DS_Giao_Hang_" . ($slip['output_code'] ?? $picking_slip_id) . ".xlsx";
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit();
?>