Files
2026-07-13 21:46:29 +02:00

119 lines
5.4 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?= $this->extend('layout/main') ?>
<?= $this->section('content') ?>
<?php $fmt = static fn ($v) => number_format((float) $v, 2, ',', ' ') . ' zł'; ?>
<div class="d-flex flex-column flex-sm-row justify-content-between align-items-sm-center gap-2 mb-3">
<h1 class="h4 mb-0">Operacje inwestycyjne</h1>
<a href="<?= site_url('investments/operations/new') ?>" class="btn btn-primary">+ Nowa operacja</a>
</div>
<div class="card shadow-sm mb-3">
<div class="card-body">
<?= form_open('investments/operations', ['method' => 'get', 'class' => 'row g-2 align-items-end']) ?>
<div class="col-6 col-md-3">
<label class="form-label small mb-1">Od</label>
<input type="date" name="from" class="form-control" value="<?= esc($filter['from'] ?? '') ?>">
</div>
<div class="col-6 col-md-3">
<label class="form-label small mb-1">Do</label>
<input type="date" name="to" class="form-control" value="<?= esc($filter['to'] ?? '') ?>">
</div>
<div class="col-6 col-md-3">
<label class="form-label small mb-1">Instrument</label>
<select name="instrument_id" class="form-select">
<option value="">— wszystkie —</option>
<?php foreach ($instruments as $i): ?>
<option value="<?= $i['id'] ?>" <?= (string) ($filter['instrument_id'] ?? '') === (string) $i['id'] ? 'selected' : '' ?>>
<?= esc($i['name']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-6 col-md-2">
<label class="form-label small mb-1">Typ</label>
<select name="type" class="form-select">
<option value="">— oba —</option>
<option value="deposit" <?= ($filter['type'] ?? '') === 'deposit' ? 'selected' : '' ?>>Wpłata</option>
<option value="withdraw" <?= ($filter['type'] ?? '') === 'withdraw' ? 'selected' : '' ?>>Wypłata</option>
</select>
</div>
<div class="col-md-1">
<button class="btn btn-outline-primary w-100">Filtruj</button>
</div>
<?= form_close() ?>
</div>
</div>
<div class="card shadow-sm">
<div class="table-responsive">
<table class="table table-hover mb-0 align-middle inv-operation-history">
<thead class="table-light">
<tr>
<th>Data</th>
<th>Instrument</th>
<th>Typ</th>
<th>Opis</th>
<th class="text-end">Kwota</th>
<th class="text-end">Akcje</th>
</tr>
</thead>
<tbody>
<?php if (empty($operations)): ?>
<tr><td colspan="6" class="text-center text-muted py-4">Brak operacji dla wybranych filtrów.</td></tr>
<?php else: foreach ($operations as $o): ?>
<?php $isDep = $o['type'] === 'deposit'; ?>
<tr class="operation-row">
<td data-label="Data"><?= esc($o['date']) ?></td>
<td data-label="Instrument"><?= esc($o['instrument_name'] ?? '—') ?></td>
<td data-label="Typ">
<span class="badge <?= $isDep ? 'bg-success' : 'bg-secondary' ?>">
<?= $isDep ? 'Wpłata' : 'Wypłata' ?>
</span>
</td>
<td data-label="Opis" class="text-muted"><?= esc($o['description'] ?? '') ?></td>
<td data-label="Kwota" class="text-end <?= $isDep ? 'amount-income' : 'amount-expense' ?>">
<?= $isDep ? '+' : '' ?><?= $fmt($o['amount']) ?>
</td>
<td data-label="Akcje" class="text-end operation-actions">
<a href="<?= site_url('investments/operations/' . $o['id'] . '/edit') ?>" class="btn btn-sm btn-outline-secondary">Edytuj</a>
<a href="<?= site_url('investments/operations/' . $o['id'] . '/delete') ?>" class="btn btn-sm btn-outline-danger"
onclick="return confirm('Usunąć operację?')">Usuń</a>
</td>
</tr>
<?php endforeach; endif; ?>
</tbody>
</table>
</div>
</div>
<style>
@media (max-width: 767.98px) {
.inv-operation-history thead { display: none; }
.inv-operation-history, .inv-operation-history tbody,
.inv-operation-history .operation-row, .inv-operation-history .operation-row td {
display: block;
width: 100%;
}
.inv-operation-history .operation-row { padding: .75rem; border-bottom: 1px solid var(--bs-border-color); }
.inv-operation-history .operation-row td {
display: flex;
justify-content: space-between;
gap: 1rem;
padding: .3rem 0;
border: 0;
text-align: right !important;
overflow-wrap: anywhere;
}
.inv-operation-history .operation-row td::before {
content: attr(data-label);
flex: 0 0 auto;
color: var(--bs-secondary-color);
font-size: .875em;
text-align: left;
}
.inv-operation-history .operation-actions { align-items: center; flex-wrap: wrap; }
}
</style>
<?= $this->endSection() ?>