Implement semester-based quarterly tracking system
- Update quarterly confirmation deadlines to semester-based schedule: - Q1: March 15 (covers Spring semester Q1+Q2) - Q2: June 15 (auto-approved when Q1 approved) - Q3: September 15 (covers Fall semester Q3+Q4) - Q4: December 15 (auto-approved when Q3 approved) - Add auto-approval functionality: - Q1 approval automatically approves Q2 with same document status - Q3 approval automatically approves Q4 with same document status - New 'auto_geprueft' status with distinct badge UI - Maintain quarterly payment cycle while simplifying document submissions - Remove modal edit functionality, keep full-screen editor only - Update copilot instructions documentation Changes align with academic semester system where students submit documents twice yearly instead of quarterly.
This commit is contained in:
@@ -510,6 +510,10 @@
|
||||
<span class="badge bg-info">Eingereicht</span>
|
||||
{% elif nachweis.status == 'geprueft' %}
|
||||
<span class="badge bg-success">Freigegeben</span>
|
||||
{% elif nachweis.status == 'auto_geprueft' %}
|
||||
<span class="badge bg-success">
|
||||
<i class="fas fa-magic me-1"></i>Auto-Freigabe
|
||||
</span>
|
||||
{% elif nachweis.status == 'nachbesserung' %}
|
||||
<span class="badge bg-warning">Nachbesserung</span>
|
||||
{% elif nachweis.status == 'abgelehnt' %}
|
||||
@@ -589,17 +593,10 @@
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group" role="group" aria-label="Aktionen">
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-outline-primary"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#quartalModal{{ nachweis.id }}"
|
||||
title="Bearbeiten (Modal)">
|
||||
<i class="fas fa-edit"></i>
|
||||
</button>
|
||||
<a href="{% url 'stiftung:quarterly_confirmation_edit' nachweis.id %}"
|
||||
class="btn btn-sm btn-outline-secondary"
|
||||
title="Bearbeiten (Vollbild)">
|
||||
<i class="fas fa-external-link-alt"></i>
|
||||
class="btn btn-sm btn-outline-primary"
|
||||
title="Bearbeiten">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
{% if user.is_staff %}
|
||||
{% if nachweis.status == 'eingereicht' %}
|
||||
@@ -631,135 +628,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Quarterly Confirmation Modals -->
|
||||
{% for nachweis in quarterly_confirmations %}
|
||||
<div class="modal fade" id="quartalModal{{ nachweis.id }}" tabindex="-1" aria-labelledby="quartalModalLabel{{ nachweis.id }}" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="quartalModalLabel{{ nachweis.id }}">
|
||||
<i class="fas fa-calendar-check me-2"></i>
|
||||
Nachweis {{ nachweis.jahr }} {{ nachweis.get_quarter_display }} - {{ destinataer.get_full_name }}
|
||||
</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
|
||||
</div>
|
||||
<form id="quarterlyForm{{ nachweis.id }}" method="post" action="{% url 'stiftung:quarterly_confirmation_update' nachweis.id %}" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<!-- Study Proof Section -->
|
||||
<div class="col-12 mb-4">
|
||||
<h6 class="text-primary border-bottom pb-2">
|
||||
<i class="fas fa-graduation-cap me-2"></i>Studiennachweis
|
||||
</h6>
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" id="studiennachweis_eingereicht{{ nachweis.id }}" name="studiennachweis_eingereicht" {% if nachweis.studiennachweis_eingereicht %}checked{% endif %}>
|
||||
<label class="form-check-label" for="studiennachweis_eingereicht{{ nachweis.id }}">
|
||||
Studiennachweis eingereicht
|
||||
</label>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="studiennachweis_datei{{ nachweis.id }}" class="form-label">Studiennachweis (Datei)</label>
|
||||
<input type="file" class="form-control" id="studiennachweis_datei{{ nachweis.id }}" name="studiennachweis_datei" accept=".pdf,.jpg,.jpeg,.png,.doc,.docx">
|
||||
{% if nachweis.studiennachweis_datei %}
|
||||
<small class="text-muted">Aktuelle Datei: <a href="{{ nachweis.studiennachweis_datei.url }}" target="_blank">{{ nachweis.studiennachweis_datei.name }}</a></small>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="studiennachweis_bemerkung{{ nachweis.id }}" class="form-label">Bemerkung zum Studiennachweis</label>
|
||||
<textarea class="form-control" id="studiennachweis_bemerkung{{ nachweis.id }}" name="studiennachweis_bemerkung" rows="2">{{ nachweis.studiennachweis_bemerkung|default:"" }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Income Situation Section -->
|
||||
<div class="col-12 mb-4">
|
||||
<h6 class="text-success border-bottom pb-2">
|
||||
<i class="fas fa-euro-sign me-2"></i>Einkommenssituation
|
||||
</h6>
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" id="einkommenssituation_bestaetigt{{ nachweis.id }}" name="einkommenssituation_bestaetigt" {% if nachweis.einkommenssituation_bestaetigt %}checked{% endif %}>
|
||||
<label class="form-check-label" for="einkommenssituation_bestaetigt{{ nachweis.id }}">
|
||||
Einkommenssituation bestätigt
|
||||
</label>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="einkommenssituation_text{{ nachweis.id }}" class="form-label">Einkommenssituation (Text)</label>
|
||||
<textarea class="form-control" id="einkommenssituation_text{{ nachweis.id }}" name="einkommenssituation_text" rows="3" placeholder='Z.B. "Keine Änderungen seit letzter Meldung"'>{{ nachweis.einkommenssituation_text|default:"" }}</textarea>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="einkommenssituation_datei{{ nachweis.id }}" class="form-label">Einkommenssituation (Datei)</label>
|
||||
<input type="file" class="form-control" id="einkommenssituation_datei{{ nachweis.id }}" name="einkommenssituation_datei" accept=".pdf,.jpg,.jpeg,.png,.doc,.docx">
|
||||
{% if nachweis.einkommenssituation_datei %}
|
||||
<small class="text-muted">Aktuelle Datei: <a href="{{ nachweis.einkommenssituation_datei.url }}" target="_blank">{{ nachweis.einkommenssituation_datei.name }}</a></small>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Asset Situation Section -->
|
||||
<div class="col-12 mb-4">
|
||||
<h6 class="text-warning border-bottom pb-2">
|
||||
<i class="fas fa-piggy-bank me-2"></i>Vermögenssituation
|
||||
</h6>
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" id="vermogenssituation_bestaetigt{{ nachweis.id }}" name="vermogenssituation_bestaetigt" {% if nachweis.vermogenssituation_bestaetigt %}checked{% endif %}>
|
||||
<label class="form-check-label" for="vermogenssituation_bestaetigt{{ nachweis.id }}">
|
||||
Vermögenssituation bestätigt
|
||||
</label>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="vermogenssituation_text{{ nachweis.id }}" class="form-label">Vermögenssituation (Text)</label>
|
||||
<textarea class="form-control" id="vermogenssituation_text{{ nachweis.id }}" name="vermogenssituation_text" rows="3" placeholder='Z.B. "Keine Änderungen seit letzter Meldung"'>{{ nachweis.vermogenssituation_text|default:"" }}</textarea>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="vermogenssituation_datei{{ nachweis.id }}" class="form-label">Vermögenssituation (Datei)</label>
|
||||
<input type="file" class="form-control" id="vermogenssituation_datei{{ nachweis.id }}" name="vermogenssituation_datei" accept=".pdf,.jpg,.jpeg,.png,.doc,.docx">
|
||||
{% if nachweis.vermogenssituation_datei %}
|
||||
<small class="text-muted">Aktuelle Datei: <a href="{{ nachweis.vermogenssituation_datei.url }}" target="_blank">{{ nachweis.vermogenssituation_datei.name }}</a></small>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Additional Documents Section -->
|
||||
<div class="col-12 mb-4">
|
||||
<h6 class="text-info border-bottom pb-2">
|
||||
<i class="fas fa-file-alt me-2"></i>Weitere Dokumente (optional)
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
<label for="weitere_dokumente{{ nachweis.id }}" class="form-label">Weitere Dokumente</label>
|
||||
<input type="file" class="form-control" id="weitere_dokumente{{ nachweis.id }}" name="weitere_dokumente" accept=".pdf,.jpg,.jpeg,.png,.doc,.docx">
|
||||
{% if nachweis.weitere_dokumente %}
|
||||
<small class="text-muted">Aktuelle Datei: <a href="{{ nachweis.weitere_dokumente.url }}" target="_blank">{{ nachweis.weitere_dokumente.name }}</a></small>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="weitere_dokumente_beschreibung{{ nachweis.id }}" class="form-label">Beschreibung weitere Dokumente</label>
|
||||
<textarea class="form-control" id="weitere_dokumente_beschreibung{{ nachweis.id }}" name="weitere_dokumente_beschreibung" rows="2">{{ nachweis.weitere_dokumente_beschreibung|default:"" }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Internal Notes (Staff Only) -->
|
||||
{% if user.is_staff %}
|
||||
<div class="col-12 mb-3">
|
||||
<h6 class="text-secondary border-bottom pb-2">
|
||||
<i class="fas fa-user-shield me-2"></i>Interne Notizen (nur für Verwaltung)
|
||||
</h6>
|
||||
<textarea class="form-control" name="interne_notizen" rows="3" placeholder="Interne Notizen zur Bearbeitung">{{ nachweis.interne_notizen|default:"" }}</textarea>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Abbrechen</button>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-save me-2"></i>Speichern
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
<!-- Add Quarter Modal -->
|
||||
<div class="modal fade" id="addQuarterModal" tabindex="-1" aria-labelledby="addQuarterModalLabel" aria-hidden="true">
|
||||
|
||||
Reference in New Issue
Block a user