first Commit
This commit is contained in:
314
templates/print_transaction.html
Normal file
314
templates/print_transaction.html
Normal file
@@ -0,0 +1,314 @@
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Druckbeleg</title>
|
||||
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}">
|
||||
<style>
|
||||
@page {
|
||||
size: A4 portrait;
|
||||
margin: 10mm;
|
||||
}
|
||||
|
||||
:root {
|
||||
--ccm-bg: #f4f6f8;
|
||||
--ccm-text: #212121;
|
||||
--ccm-primary: #da002d;
|
||||
--ccm-primary-hover: #b00024;
|
||||
--ccm-header: #2b2f36;
|
||||
--ccm-surface: #ffffff;
|
||||
--ccm-border: #d9dee3;
|
||||
--ccm-muted: #6b7280;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: "Segoe UI", Arial, sans-serif;
|
||||
color: var(--ccm-text);
|
||||
background: var(--ccm-bg);
|
||||
}
|
||||
|
||||
.page {
|
||||
max-width: 960px;
|
||||
margin: 0 auto;
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
.sheet {
|
||||
background: var(--ccm-surface);
|
||||
border: 1px solid var(--ccm-border);
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0 12px 30px rgba(43, 47, 54, 0.08);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.topbar {
|
||||
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
||||
padding: 1rem 1.5rem;
|
||||
}
|
||||
|
||||
.logo-row {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
padding: 1.25rem 1.5rem 0;
|
||||
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
||||
color: #ffffff;
|
||||
padding: 1.5rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.header img {
|
||||
height: 28px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.print-logo {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
margin-top: 0.35rem;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.details {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.details th,
|
||||
.details td {
|
||||
text-align: left;
|
||||
padding: 0.75rem 0;
|
||||
border-bottom: 1px solid var(--ccm-border);
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.details th {
|
||||
width: 30%;
|
||||
color: var(--ccm-muted);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.note-box {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem 1.25rem;
|
||||
border-left: 4px solid var(--ccm-primary);
|
||||
background: rgba(218, 0, 45, 0.06);
|
||||
border-radius: 0.75rem;
|
||||
}
|
||||
|
||||
.signature-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 2rem;
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
.signature-box {
|
||||
min-height: 120px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.signature-line {
|
||||
border-top: 1px solid var(--ccm-text);
|
||||
padding-top: 0.75rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.signature-date {
|
||||
margin-top: 0.5rem;
|
||||
color: var(--ccm-muted);
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.print-actions {
|
||||
display: flex;
|
||||
gap: 0.75rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.button {
|
||||
display: inline-block;
|
||||
padding: 0.75rem 1rem;
|
||||
border-radius: 0.5rem;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.button-primary {
|
||||
background: var(--ccm-primary);
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.button-secondary {
|
||||
background: var(--ccm-bg);
|
||||
color: var(--ccm-text);
|
||||
}
|
||||
|
||||
@media print {
|
||||
html,
|
||||
body {
|
||||
width: 210mm;
|
||||
min-height: 297mm;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
body {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.print-actions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.page {
|
||||
width: 100%;
|
||||
max-width: 190mm;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
width: 100%;
|
||||
min-height: 277mm;
|
||||
}
|
||||
|
||||
.print-logo {
|
||||
filter: brightness(0) saturate(100%);
|
||||
}
|
||||
|
||||
.topbar {
|
||||
padding: 0 8mm 8mm;
|
||||
}
|
||||
|
||||
.logo-row {
|
||||
padding: 0 8mm 6mm;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 8mm;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 8mm;
|
||||
}
|
||||
|
||||
.signature-grid {
|
||||
margin-top: 26mm;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.page {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.header {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.signature-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main class="page">
|
||||
<section class="sheet">
|
||||
<div class="topbar"></div>
|
||||
<div class="logo-row">
|
||||
<img class="print-logo" src="{{ url_for('static', filename='cancom.svg') }}" alt="CANCOM Logo">
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="header-content">
|
||||
<h1>{{ action_labels[transaction.action] }} {{ asset_labels[transaction.asset_type] }}</h1>
|
||||
<div class="subtitle">{{ print_descriptions[transaction.action] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<table class="details">
|
||||
<tr>
|
||||
<th>Datum</th>
|
||||
<td>{{ transaction.created_at }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Anwender</th>
|
||||
<td>{{ transaction.full_name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>E-Mail</th>
|
||||
<td>{{ transaction.email or "-" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Abteilung</th>
|
||||
<td>{{ transaction.department or "-" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Medium</th>
|
||||
<td>{{ asset_labels[transaction.asset_type] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Kennung</th>
|
||||
<td>{{ transaction.asset_code }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Bearbeiter</th>
|
||||
<td>{{ transaction.handled_by or "-" }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="note-box">
|
||||
Mit den untenstehenden Unterschriften bestaetigen Bearbeiter und Anwender die korrekte {{ action_labels[transaction.action] | lower }} des angegebenen Mediums.
|
||||
</div>
|
||||
|
||||
<div class="signature-grid">
|
||||
<div class="signature-box">
|
||||
<div class="signature-line">{{ transaction.handled_by or "Bearbeiter" }}</div>
|
||||
<div class="signature-date">Datum: {{ transaction.created_at }}</div>
|
||||
</div>
|
||||
<div class="signature-box">
|
||||
<div class="signature-line">{{ transaction.full_name }}</div>
|
||||
<div class="signature-date">Datum: {{ transaction.created_at }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="print-actions">
|
||||
<a class="button button-primary" href="#" onclick="window.print(); return false;">Drucken</a>
|
||||
<a class="button button-secondary" href="{{ url_for('index') }}">Zur Uebersicht</a>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user