40281-vm/order_detail.php
2026-06-18 09:37:21 +00:00

21 lines
4.3 KiB
PHP

<?php
require_once __DIR__ . '/db/config.php';
@date_default_timezone_set('Asia/Jakarta');
function e(string $value): string { return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); }
function rupiah(float $value): string { return 'Rp ' . number_format($value, 0, ',', '.'); }
function badge(string $status): string { return match ($status) { 'SPK dibuat' => 'info', 'Produksi berjalan' => 'primary', 'QC / Finishing' => 'warning', 'Barang selesai' => 'success', 'Invoice / Tagihan' => 'dark', default => 'secondary' }; }
$pdo = db();
$id = max(0, (int)($_GET['id'] ?? 0));
$stmt = $pdo->prepare('SELECT * FROM print_orders WHERE id = :id LIMIT 1');
$stmt->execute([':id' => $id]);
$order = $stmt->fetch();
if (!$order) { http_response_code(404); echo 'Order tidak ditemukan.'; exit; }
$statuses = ['Order diterima', 'SPK dibuat', 'Produksi berjalan', 'QC / Finishing', 'Barang selesai', 'Invoice / Tagihan'];
$amount = ((float)$order['quantity'] * (float)$order['unit_price']) - (float)$order['discount'];
$remaining = max(0, $amount - (float)$order['paid_amount']);
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Detail order percetakan Kenanga Kreasindo.';
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
?>
<!doctype html><html lang="id"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Detail <?= e($order['order_no']) ?> — Kenanga Kreasindo</title><meta name="description" content="<?= e($projectDescription) ?>"><?php if ($projectImageUrl): ?><meta property="og:image" content="<?= e($projectImageUrl) ?>"><meta property="twitter:image" content="<?= e($projectImageUrl) ?>"><?php endif; ?><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"><link rel="stylesheet" href="assets/css/custom.css?v=<?= time() ?>"></head>
<body><main class="container py-4"><a class="btn btn-outline-dark btn-sm mb-3" href="index.php#produksi">← Kembali</a><div class="panel"><div class="d-flex justify-content-between flex-wrap gap-3"><div><p class="eyebrow">Detail Order</p><h1><?= e($order['order_no']) ?></h1><p class="text-muted mb-0"><?= e($order['customer_name']) ?> · <?= e($order['customer_phone']) ?></p></div><span class="badge text-bg-<?= e(badge($order['status'])) ?> align-self-start"><?= e($order['status']) ?></span></div><hr><div class="row g-4"><div class="col-lg-7"><h2 class="h5">Pekerjaan</h2><dl class="detail-grid"><dt>Project</dt><dd><?= e($order['project_name']) ?></dd><dt>Kategori</dt><dd><?= e($order['category']) ?></dd><dt>Qty</dt><dd><?= (int)$order['quantity'] ?></dd><dt>Ukuran</dt><dd><?= e((string)($order['size_info'] ?: '-')) ?></dd><dt>Bahan</dt><dd><?= e((string)($order['material'] ?: '-')) ?></dd><dt>Finishing</dt><dd><?= e((string)($order['finishing'] ?: '-')) ?></dd><dt>Deadline</dt><dd><?= e($order['deadline'] ? date('d M Y', strtotime($order['deadline'])) : '-') ?></dd></dl></div><div class="col-lg-5"><h2 class="h5">Keuangan</h2><dl class="detail-grid"><dt>Invoice</dt><dd><?= e($order['invoice_no']) ?></dd><dt>Total</dt><dd><?= e(rupiah(max(0, $amount))) ?></dd><dt>Terbayar</dt><dd><?= e(rupiah((float)$order['paid_amount'])) ?></dd><dt>Sisa Tagihan</dt><dd><strong><?= e(rupiah($remaining)) ?></strong></dd></dl></div></div><hr><form method="post" action="index.php#produksi" class="row g-3"><input type="hidden" name="action" value="update_status"><input type="hidden" name="id" value="<?= (int)$order['id'] ?>"><div class="col-md-4"><label class="form-label">Update Status</label><select class="form-select" name="status"><?php foreach ($statuses as $status): ?><option value="<?= e($status) ?>" <?= $status === $order['status'] ? 'selected' : '' ?>><?= e($status) ?></option><?php endforeach; ?></select></div><div class="col-md-8"><label class="form-label">Catatan Progress</label><textarea class="form-control" rows="3" name="progress_note"><?= e((string)$order['progress_note']) ?></textarea></div><div class="col-12 d-flex gap-2 flex-wrap"><button class="btn btn-dark" type="submit">Simpan Status</button><a class="btn btn-outline-dark" href="spk.php?id=<?= (int)$order['id'] ?>">Cetak SPK</a><a class="btn btn-outline-dark" href="invoice.php?id=<?= (int)$order['id'] ?>">Cetak Invoice</a></div></form></div></main><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script></body></html>