Added support for Streamdeck Pedal and updated UI to better fit the Packed UI style
This commit is contained in:
159
pirp/public/journal_search.php
Normal file
159
pirp/public/journal_search.php
Normal file
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../src/config.php';
|
||||
require_once __DIR__ . '/../src/auth.php';
|
||||
require_once __DIR__ . '/../src/db.php';
|
||||
require_once __DIR__ . '/../src/journal_functions.php';
|
||||
require_once __DIR__ . '/../src/icons.php';
|
||||
require_login();
|
||||
|
||||
$q = trim($_GET['q'] ?? '');
|
||||
$from = trim($_GET['from'] ?? '');
|
||||
$to = trim($_GET['to'] ?? '');
|
||||
$year_id = isset($_GET['year_id']) ? (int)$_GET['year_id'] : 0;
|
||||
|
||||
$years = get_journal_years();
|
||||
|
||||
$entries = [];
|
||||
$searched = false;
|
||||
|
||||
if ($q !== '' || $from !== '' || $to !== '' || $year_id) {
|
||||
$searched = true;
|
||||
$pdo = get_db();
|
||||
|
||||
$sql = "SELECT e.id, e.entry_date, e.month, e.description, e.attachment_note,
|
||||
e.amount, e.year_id, y.year AS journal_year,
|
||||
s.name AS supplier_name
|
||||
FROM journal_entries e
|
||||
JOIN journal_years y ON y.id = e.year_id
|
||||
LEFT JOIN journal_suppliers s ON s.id = e.supplier_id
|
||||
WHERE 1=1";
|
||||
$params = [];
|
||||
|
||||
if ($q !== '') {
|
||||
$sql .= " AND (e.description ILIKE :q OR e.attachment_note ILIKE :q2)";
|
||||
$params[':q'] = '%' . $q . '%';
|
||||
$params[':q2'] = '%' . $q . '%';
|
||||
}
|
||||
if ($from !== '') {
|
||||
$sql .= " AND e.entry_date >= :from";
|
||||
$params[':from'] = $from;
|
||||
}
|
||||
if ($to !== '') {
|
||||
$sql .= " AND e.entry_date <= :to";
|
||||
$params[':to'] = $to;
|
||||
}
|
||||
if ($year_id) {
|
||||
$sql .= " AND e.year_id = :year_id";
|
||||
$params[':year_id'] = $year_id;
|
||||
}
|
||||
|
||||
$sql .= " ORDER BY e.entry_date DESC, e.id DESC LIMIT 200";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
$entries = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Journal-Suche</title>
|
||||
<link rel="stylesheet" href="assets/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>PIRP</h1>
|
||||
<nav>
|
||||
<a href="<?= url_for('index.php') ?>"><?= icon_dashboard() ?>Dashboard</a>
|
||||
<a href="<?= url_for('invoices.php') ?>"><?= icon_invoices() ?>Rechnungen</a>
|
||||
<a href="<?= url_for('customers.php') ?>"><?= icon_customers() ?>Kunden</a>
|
||||
<a href="<?= url_for('expenses.php') ?>"><?= icon_expenses() ?>Ausgaben</a>
|
||||
<a href="<?= url_for('belegarchiv.php') ?>"><?= icon_archive() ?>Belege</a>
|
||||
<a href="<?= url_for('journal.php') ?>" class="active"><?= icon_journal() ?>Journal</a>
|
||||
<a href="<?= url_for('euer.php') ?>"><?= icon_euer() ?>EÜR</a>
|
||||
<a href="<?= url_for('settings.php') ?>"><?= icon_settings() ?>Einstellungen</a>
|
||||
<a href="<?= url_for('logout.php') ?>"><?= icon_logout() ?>Logout (<?= htmlspecialchars($_SESSION['username'] ?? '') ?>)</a>
|
||||
<span class="cmd-k-hint" onclick="document.dispatchEvent(new KeyboardEvent('keydown',{key:'k',ctrlKey:true}))"><kbd>Ctrl+K</kbd></span>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<div class="journal-subnav">
|
||||
<a href="<?= url_for('journal.php') ?>">Monatsansicht</a>
|
||||
<a href="<?= url_for('journal_summary.php') ?>">Jahressummen</a>
|
||||
<a href="<?= url_for('journal_search.php') ?>" class="active">Suche</a>
|
||||
</div>
|
||||
|
||||
<form method="get" class="filters">
|
||||
<label>Suche:
|
||||
<input type="text" name="q" value="<?= htmlspecialchars($q) ?>" placeholder="Beschreibung, Beleg..." autofocus>
|
||||
</label>
|
||||
<label>Von:
|
||||
<input type="date" name="from" value="<?= htmlspecialchars($from) ?>">
|
||||
</label>
|
||||
<label>Bis:
|
||||
<input type="date" name="to" value="<?= htmlspecialchars($to) ?>">
|
||||
</label>
|
||||
<?php if ($years): ?>
|
||||
<label>Jahr:
|
||||
<select name="year_id">
|
||||
<option value="">Alle Jahre</option>
|
||||
<?php foreach ($years as $y): ?>
|
||||
<option value="<?= $y['id'] ?>" <?= $y['id'] == $year_id ? 'selected' : '' ?>><?= (int)$y['year'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</label>
|
||||
<?php endif; ?>
|
||||
<button type="submit">Suchen</button>
|
||||
<a href="<?= url_for('journal_search.php') ?>">Zurücksetzen</a>
|
||||
</form>
|
||||
|
||||
<?php if ($searched): ?>
|
||||
<section>
|
||||
<h2>Suchergebnisse <?php if ($entries): ?><span style="font-weight:normal;font-size:12px;color:var(--text-muted);">(<?= count($entries) ?> Treffer<?= count($entries) >= 200 ? ', max. 200' : '' ?>)</span><?php endif; ?></h2>
|
||||
|
||||
<?php if (empty($entries)): ?>
|
||||
<p style="color:var(--text-muted);">Keine Buchungen gefunden.</p>
|
||||
<?php else: ?>
|
||||
<div class="journal-table-wrap">
|
||||
<table class="journal-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="journal-col-date">Datum</th>
|
||||
<th class="journal-col-att">B</th>
|
||||
<th class="journal-col-text">Beschreibung</th>
|
||||
<th class="journal-col-betrag">Betrag</th>
|
||||
<th>Jahr / Monat</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($entries as $e): ?>
|
||||
<tr>
|
||||
<td class="journal-col-date"><?= date('d.m.Y', strtotime($e['entry_date'])) ?></td>
|
||||
<td class="journal-col-att"><?= htmlspecialchars($e['attachment_note'] ?? '') ?></td>
|
||||
<td class="journal-col-text">
|
||||
<a href="<?= url_for('journal_entry.php?id=' . $e['id']) ?>" style="color:inherit;">
|
||||
<?= htmlspecialchars($e['description']) ?>
|
||||
</a>
|
||||
<?php if ($e['supplier_name']): ?>
|
||||
<span style="color:var(--text-dim);font-size:10px;"> · <?= htmlspecialchars($e['supplier_name']) ?></span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td class="journal-col-betrag"><?= number_format((float)$e['amount'], 2, ',', '.') ?></td>
|
||||
<td>
|
||||
<a href="<?= url_for('journal.php?year_id=' . $e['year_id'] . '&month=' . $e['month']) ?>"
|
||||
style="font-size:11px;color:var(--text-muted);">
|
||||
<?= (int)$e['journal_year'] ?> / <?= journal_month_name_full((int)$e['month']) ?>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
</main>
|
||||
<script src="assets/command-palette.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user