Add .gitignore and project files
This commit is contained in:
208
print_order.php
Normal file
208
print_order.php
Normal file
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
// print_order.php
|
||||
session_start();
|
||||
require_once 'config/database.php';
|
||||
|
||||
// Проверка прав администратора
|
||||
if (!isset($_SESSION['isAdmin']) || $_SESSION['isAdmin'] !== true) {
|
||||
die('Доступ запрещен');
|
||||
}
|
||||
|
||||
$orderId = $_GET['id'] ?? 0;
|
||||
|
||||
$db = Database::getInstance()->getConnection();
|
||||
|
||||
try {
|
||||
$orderStmt = $db->prepare("
|
||||
SELECT o.*, u.email, u.full_name
|
||||
FROM orders o
|
||||
LEFT JOIN users u ON o.user_id = u.user_id
|
||||
WHERE o.order_id = ?
|
||||
");
|
||||
$orderStmt->execute([$orderId]);
|
||||
$order = $orderStmt->fetch();
|
||||
|
||||
if (!$order) {
|
||||
die('Заказ не найден');
|
||||
}
|
||||
|
||||
$itemsStmt = $db->prepare("
|
||||
SELECT * FROM order_items
|
||||
WHERE order_id = ?
|
||||
");
|
||||
$itemsStmt->execute([$orderId]);
|
||||
$order_items = $itemsStmt->fetchAll();
|
||||
|
||||
} catch (PDOException $e) {
|
||||
die('Ошибка базы данных: ' . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Печать заказа #<?= $order['order_number'] ?></title>
|
||||
<style>
|
||||
@media print {
|
||||
.no-print { display: none !important; }
|
||||
}
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 20px;
|
||||
color: #000;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.company-name {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.order-info {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.order-details {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 20px 0;
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid #000;
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
th {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
.total-row {
|
||||
font-weight: bold;
|
||||
}
|
||||
.footer {
|
||||
margin-top: 50px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
}
|
||||
.print-button {
|
||||
margin: 20px;
|
||||
padding: 10px 20px;
|
||||
background: #453227;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="window.print()" class="print-button no-print">
|
||||
<i class="fas fa-print"></i> Печать
|
||||
</button>
|
||||
|
||||
<div class="header">
|
||||
<div class="company-name">AETERNA</div>
|
||||
<div>г. Москва, ул. Примерная, д. 123</div>
|
||||
<div>Телефон: +7(912)999-12-23 | Email: aeterna@mail.ru</div>
|
||||
<div>ИНН: 1234567890 | ОГРН: 1234567890123</div>
|
||||
</div>
|
||||
|
||||
<div class="order-info">
|
||||
<h2>Заказ #<?= htmlspecialchars($order['order_number']) ?></h2>
|
||||
<p>Дата: <?= date('d.m.Y H:i', strtotime($order['created_at'])) ?></p>
|
||||
<p>Статус: <?= $order['status'] ?></p>
|
||||
</div>
|
||||
|
||||
<div class="order-details">
|
||||
<div>
|
||||
<h3>Информация о клиенте</h3>
|
||||
<p><strong>ФИО:</strong> <?= htmlspecialchars($order['customer_name']) ?></p>
|
||||
<p><strong>Email:</strong> <?= htmlspecialchars($order['customer_email']) ?></p>
|
||||
<p><strong>Телефон:</strong> <?= htmlspecialchars($order['customer_phone']) ?></p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3>Информация о доставке</h3>
|
||||
<p><strong>Адрес:</strong> <?= nl2br(htmlspecialchars($order['delivery_address'])) ?></p>
|
||||
<p><strong>Способ доставки:</strong> <?= $order['delivery_method'] == 'courier' ? 'Курьер' : 'Самовывоз' ?></p>
|
||||
<p><strong>Способ оплаты:</strong> <?= $order['payment_method'] == 'card' ? 'Карта' : 'Наличные' ?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Состав заказа</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Товар</th>
|
||||
<th>Кол-во</th>
|
||||
<th>Цена</th>
|
||||
<th>Сумма</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $counter = 1; ?>
|
||||
<?php foreach ($order_items as $item): ?>
|
||||
<tr>
|
||||
<td><?= $counter++ ?></td>
|
||||
<td><?= htmlspecialchars($item['product_name']) ?></td>
|
||||
<td><?= $item['quantity'] ?></td>
|
||||
<td><?= number_format($item['unit_price'], 0, '', ' ') ?> ₽</td>
|
||||
<td><?= number_format($item['total_price'], 0, '', ' ') ?> ₽</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="total-row">
|
||||
<td colspan="4" style="text-align: right;">Сумма товаров:</td>
|
||||
<td><?= number_format($order['total_amount'], 0, '', ' ') ?> ₽</td>
|
||||
</tr>
|
||||
<?php if ($order['discount_amount'] > 0): ?>
|
||||
<tr class="total-row">
|
||||
<td colspan="4" style="text-align: right;">Скидка:</td>
|
||||
<td>-<?= number_format($order['discount_amount'], 0, '', ' ') ?> ₽</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<?php if ($order['delivery_cost'] > 0): ?>
|
||||
<tr class="total-row">
|
||||
<td colspan="4" style="text-align: right;">Доставка:</td>
|
||||
<td><?= number_format($order['delivery_cost'], 0, '', ' ') ?> ₽</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr class="total-row">
|
||||
<td colspan="4" style="text-align: right; font-size: 16px;">Итого к оплате:</td>
|
||||
<td style="font-size: 16px;"><?= number_format($order['final_amount'], 0, '', ' ') ?> ₽</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<?php if ($order['notes']): ?>
|
||||
<div style="margin-top: 30px;">
|
||||
<h3>Примечания</h3>
|
||||
<p><?= nl2br(htmlspecialchars($order['notes'])) ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="footer">
|
||||
<p>Заказ создан в системе AETERNA</p>
|
||||
<p>Дата печати: <?= date('d.m.Y H:i') ?></p>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Автоматическая печать при загрузке
|
||||
window.onload = function() {
|
||||
setTimeout(function() {
|
||||
window.print();
|
||||
}, 500);
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user