Enhanced quarterly confirmation system with approval workflow and export improvements
Features added: - ✅ Fixed quarterly confirmation approval system with URL pattern - ✅ Added re-approval and status reset functionality for quarterly confirmations - ✅ Synchronized quarterly approval status with support payment system - ✅ Enhanced Destinataer export with missing fields (anrede, titel, mobil) - ✅ Added quarterly confirmation data and documents to export system - ✅ Fixed address field display issues in destinataer template - ✅ Added quarterly statistics dashboard to support payment lists - ✅ Implemented duplicate support payment prevention and cleanup - ✅ Added visual indicators for quarterly-linked support payments Technical improvements: - Enhanced create_quarterly_support_payment() with duplicate detection - Added get_related_support_payment() method to VierteljahresNachweis model - Improved quarterly confirmation workflow with proper status transitions - Added computed address property to Destinataer model - Fixed template field mismatches (anrede, titel, mobil vs strasse, plz, ort) - Enhanced backup system with operation tracking and cancellation Workflow enhancements: - Quarterly confirmations now properly sync with support payments - Single support payment per destinataer per quarter (no duplicates) - Approval button works for both eingereicht and geprueft status - Reset functionality allows workflow restart - Export includes complete quarterly data with uploaded documents
This commit is contained in:
@@ -212,6 +212,47 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quarterly Confirmation Statistics -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header bg-light">
|
||||
<h6 class="card-title mb-0">
|
||||
<i class="fas fa-chart-pie me-2"></i>
|
||||
Vierteljahresnachweis Status Übersicht
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body py-2">
|
||||
<div class="row text-center g-0">
|
||||
<div class="col-lg-2 col-md-3 col-4 mb-2">
|
||||
<div class="px-2">
|
||||
<div class="h5 fw-bold text-primary mb-0">{{ total_quarterly }}</div>
|
||||
<small class="text-muted">Gesamt</small>
|
||||
</div>
|
||||
</div>
|
||||
{% for status_code, status_data in quarterly_stats.items %}
|
||||
<div class="col-lg-2 col-md-3 col-4 mb-2">
|
||||
<div class="px-2">
|
||||
<div class="h6 fw-bold mb-0
|
||||
{% if status_code == 'offen' %}text-secondary
|
||||
{% elif status_code == 'teilweise' %}text-warning
|
||||
{% elif status_code == 'eingereicht' %}text-info
|
||||
{% elif status_code == 'geprueft' %}text-success
|
||||
{% elif status_code == 'nachbesserung' %}text-danger
|
||||
{% elif status_code == 'abgelehnt' %}text-dark
|
||||
{% endif %}">
|
||||
{{ status_data.count }}
|
||||
</div>
|
||||
<small class="text-muted">{{ status_data.name }}</small>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
@@ -258,7 +299,12 @@
|
||||
{{ u.get_status_display }}
|
||||
</span>
|
||||
</td>
|
||||
<td>{{ u.beschreibung }}</td>
|
||||
<td>
|
||||
{{ u.beschreibung }}
|
||||
{% if "Q" in u.beschreibung and "/" in u.beschreibung %}
|
||||
<i class="fas fa-file-contract text-primary ms-2" title="Verknüpft mit Vierteljahresnachweis" data-bs-toggle="tooltip"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<a href="{% url 'stiftung:unterstuetzung_edit' pk=u.pk %}" class="btn btn-outline-warning"><i class="fas fa-edit"></i></a>
|
||||
@@ -424,6 +470,12 @@ document.getElementById('exportForm').addEventListener('submit', function(e) {
|
||||
// Initialize counts on page load
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
updateSelectedCount();
|
||||
|
||||
// Initialize tooltips for quarterly confirmation indicators
|
||||
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
|
||||
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
||||
return new bootstrap.Tooltip(tooltipTriggerEl);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user