feat: add comprehensive GitHub workflow and development tools
This commit is contained in:
260
app/templates/stiftung/land_abrechnung_list.html
Normal file
260
app/templates/stiftung/land_abrechnung_list.html
Normal file
@@ -0,0 +1,260 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Landabrechnungen - Stiftungsverwaltung{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<!-- Header -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<h1 class="h3">
|
||||
<i class="fas fa-calculator text-success me-2"></i>
|
||||
Landabrechnungen verwalten
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-md-6 text-end">
|
||||
<a href="{% url 'stiftung:land_abrechnung_create' %}" class="btn btn-success">
|
||||
<i class="fas fa-plus me-2"></i>Neue Abrechnung
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Search and Filters -->
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">
|
||||
<i class="fas fa-filter me-2"></i>Filter & Suche
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="get" class="row g-3">
|
||||
<div class="col-md-4">
|
||||
<label for="jahr" class="form-label">Jahr</label>
|
||||
<select class="form-select" id="jahr" name="jahr">
|
||||
<option value="">Alle Jahre</option>
|
||||
{% for jahr in jahre %}
|
||||
<option value="{{ jahr }}" {% if jahr_filter == jahr|stringformat:"s" %}selected{% endif %}>
|
||||
{{ jahr }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label for="land" class="form-label">Länderei</label>
|
||||
<select class="form-select" id="land" name="land">
|
||||
<option value="">Alle Ländereien</option>
|
||||
{% for land in laendereien %}
|
||||
<option value="{{ land.pk }}" {% if land_filter == land.pk|stringformat:"s" %}selected{% endif %}>
|
||||
{{ land }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="paechter" class="form-label">Pächter</label>
|
||||
<select class="form-select" id="paechter" name="paechter">
|
||||
<option value="">Alle Pächter</option>
|
||||
{% for paechter in paechter_list %}
|
||||
<option value="{{ paechter.pk }}" {% if paechter_filter == paechter.pk|stringformat:"s" %}selected{% endif %}>
|
||||
{{ paechter.get_full_name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label"> </label>
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-search me-2"></i>Filtern
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Statistics -->
|
||||
{% if stats %}
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-4">
|
||||
<div class="card border-left-success shadow h-100 py-2">
|
||||
<div class="card-body">
|
||||
<div class="row no-gutters align-items-center">
|
||||
<div class="col mr-2">
|
||||
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">
|
||||
Gesamteinnahmen
|
||||
</div>
|
||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
||||
€{{ stats.total_einnahmen|default:0|floatformat:2 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fas fa-euro-sign fa-2x text-gray-300"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card border-left-danger shadow h-100 py-2">
|
||||
<div class="card-body">
|
||||
<div class="row no-gutters align-items-center">
|
||||
<div class="col mr-2">
|
||||
<div class="text-xs font-weight-bold text-danger text-uppercase mb-1">
|
||||
Gesamtausgaben
|
||||
</div>
|
||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
||||
€{{ stats.total_ausgaben|default:0|floatformat:2 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fas fa-receipt fa-2x text-gray-300"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card border-left-info shadow h-100 py-2">
|
||||
<div class="card-body">
|
||||
<div class="row no-gutters align-items-center">
|
||||
<div class="col mr-2">
|
||||
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">
|
||||
Anzahl Abrechnungen
|
||||
</div>
|
||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
||||
{{ stats.anzahl_abrechnungen|default:0 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<i class="fas fa-calculator fa-2x text-gray-300"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Abrechnungen Liste -->
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">
|
||||
<i class="fas fa-list me-2"></i>Landabrechnungen
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if abrechnungen %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Jahr</th>
|
||||
<th>Länderei</th>
|
||||
<th>Pächter</th>
|
||||
<th>Einnahmen</th>
|
||||
<th>Ausgaben</th>
|
||||
<th>Nettoergebnis</th>
|
||||
<th>USt</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for abrechnung in abrechnungen %}
|
||||
<tr>
|
||||
<td><strong>{{ abrechnung.abrechnungsjahr }}</strong></td>
|
||||
<td>
|
||||
<a href="{% url 'stiftung:land_detail' abrechnung.land.pk %}">
|
||||
{{ abrechnung.land }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if abrechnung.land.aktueller_paechter %}
|
||||
<a href="{% url 'stiftung:paechter_detail' abrechnung.land.aktueller_paechter.pk %}">
|
||||
{{ abrechnung.land.aktueller_paechter.get_full_name }}
|
||||
</a>
|
||||
{% else %}
|
||||
<span class="text-muted">Kein Pächter</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-success">€{{ abrechnung.einnahmen_gesamt|floatformat:2 }}</td>
|
||||
<td class="text-danger">€{{ abrechnung.ausgaben_gesamt|floatformat:2 }}</td>
|
||||
<td>
|
||||
<strong class="{% if abrechnung.nettoergebnis >= 0 %}text-success{% else %}text-danger{% endif %}">
|
||||
€{{ abrechnung.nettoergebnis|floatformat:2 }}
|
||||
</strong>
|
||||
</td>
|
||||
<td>
|
||||
{% if abrechnung.ust_pacht_betrag > 0 %}
|
||||
€{{ abrechnung.ust_pacht_betrag|floatformat:2 }}
|
||||
{% else %}
|
||||
<span class="text-muted">-</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{% url 'stiftung:land_abrechnung_detail' abrechnung.pk %}"
|
||||
class="btn btn-sm btn-outline-primary" title="Anzeigen">
|
||||
<i class="fas fa-eye"></i>
|
||||
</a>
|
||||
<a href="{% url 'stiftung:land_abrechnung_update' abrechnung.pk %}"
|
||||
class="btn btn-sm btn-outline-warning" title="Bearbeiten">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a href="{% url 'stiftung:land_abrechnung_delete' abrechnung.pk %}"
|
||||
class="btn btn-sm btn-outline-danger" title="Löschen">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Pagination -->
|
||||
{% if abrechnungen.has_other_pages %}
|
||||
<nav aria-label="Abrechnungen Pagination">
|
||||
<ul class="pagination justify-content-center">
|
||||
{% if abrechnungen.has_previous %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="?page={{ abrechnungen.previous_page_number }}{% if jahr_filter %}&jahr={{ jahr_filter }}{% endif %}{% if land_filter %}&land={{ land_filter }}{% endif %}{% if paechter_filter %}&paechter={{ paechter_filter }}{% endif %}">Zurück</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% for num in abrechnungen.paginator.page_range %}
|
||||
{% if abrechnungen.number == num %}
|
||||
<li class="page-item active">
|
||||
<span class="page-link">{{ num }}</span>
|
||||
</li>
|
||||
{% elif num > abrechnungen.number|add:'-3' and num < abrechnungen.number|add:'3' %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="?page={{ num }}{% if jahr_filter %}&jahr={{ jahr_filter }}{% endif %}{% if land_filter %}&land={{ land_filter }}{% endif %}{% if paechter_filter %}&paechter={{ paechter_filter }}{% endif %}">{{ num }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if abrechnungen.has_next %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="?page={{ abrechnungen.next_page_number }}{% if jahr_filter %}&jahr={{ jahr_filter }}{% endif %}{% if land_filter %}&land={{ land_filter }}{% endif %}{% if paechter_filter %}&paechter={{ paechter_filter }}{% endif %}">Weiter</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="text-center py-5">
|
||||
<i class="fas fa-calculator fa-3x text-muted mb-3"></i>
|
||||
<h5 class="text-muted">Keine Landabrechnungen vorhanden</h5>
|
||||
<p class="text-muted">Erstellen Sie die erste Landabrechnung.</p>
|
||||
<a href="{% url 'stiftung:land_abrechnung_create' %}" class="btn btn-success">
|
||||
<i class="fas fa-plus me-2"></i>Erste Abrechnung erstellen
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user