Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ceb50ab29c | |||
| d6ecf419ea | |||
| dceea0b047 |
+32
-8
@@ -7327,7 +7327,7 @@ def zurueckgeben(id):
|
|||||||
|
|
||||||
current_permissions = us.get_effective_permissions(session['username'])
|
current_permissions = us.get_effective_permissions(session['username'])
|
||||||
|
|
||||||
if not item.get('Verfuegbar', True) and (current_permissions['actions'].get('can_manage_users', False)) or item.get('User') == username):
|
if not item.get('Verfuegbar', True) and (current_permissions['actions'].get('can_manage_users', False)) or item.get('User') == username:
|
||||||
try:
|
try:
|
||||||
# Get ALL active borrowing records for this item and complete them
|
# Get ALL active borrowing records for this item and complete them
|
||||||
client = MongoClient(MONGODB_HOST, MONGODB_PORT)
|
client = MongoClient(MONGODB_HOST, MONGODB_PORT)
|
||||||
@@ -8620,17 +8620,41 @@ def admin_create_invoice(borrow_id):
|
|||||||
flash('Für diese Ausleihe existiert bereits eine Rechnung. Bitte Korrekturbuchung verwenden.', 'warning')
|
flash('Für diese Ausleihe existiert bereits eine Rechnung. Bitte Korrekturbuchung verwenden.', 'warning')
|
||||||
return redirect(url_for('admin_borrowings'))
|
return redirect(url_for('admin_borrowings'))
|
||||||
|
|
||||||
client = MongoClient(cfg.MONGODB_HOST, cfg.MONGODB_PORT)
|
# ACHTUNG: Keine neue client-Verbindung aufbauen!
|
||||||
db = client[cfg.MONGODB_DB]
|
# Wir nutzen einfach die 'db' Variable von ganz oben weiter.
|
||||||
student_cards = db['student_cards']
|
student_cards = db['student_cards']
|
||||||
card = student_cards.find_one({'_id': ObjectId(borrow_id)})
|
|
||||||
card = _decrypt_student_card_doc(card)
|
student_id = borrow_doc.get('AusweisId')
|
||||||
client.close()
|
borrower = "Unbekannt"
|
||||||
borrower = card['SchülerName']
|
|
||||||
|
# 1. Prüfen: Gibt es eine AusweisId?
|
||||||
|
if student_id:
|
||||||
|
try:
|
||||||
|
card = student_cards.find_one({'_id': ObjectId(student_id)})
|
||||||
|
except Exception:
|
||||||
|
card = student_cards.find_one({'_id': student_id})
|
||||||
|
|
||||||
|
if not card:
|
||||||
|
# Wir rufen hier KEIN client.close() mehr auf, das macht der finally-Block am Ende automatisch!
|
||||||
|
flash('Der zugehörige Schülerausweis wurde in der Datenbank nicht gefunden.', 'error')
|
||||||
|
return redirect(url_for('admin_borrowings'))
|
||||||
|
|
||||||
|
card = _decrypt_student_card_doc(card)
|
||||||
|
borrower = card.get('SchülerName', 'Unbekannt')
|
||||||
|
|
||||||
|
# 2. Fallback: Wenn keine AusweisId da ist, schauen wir, ob ein Name unter 'User' gespeichert wurde
|
||||||
|
else:
|
||||||
|
fallback_user = borrow_doc.get('User')
|
||||||
|
if fallback_user:
|
||||||
|
borrower = str(fallback_user)
|
||||||
|
else:
|
||||||
|
# Auch hier: KEIN client.close() manuell aufrufen.
|
||||||
|
flash('Dieser Ausleihe ist weder eine AusweisId noch ein Benutzername zugeordnet.', 'error')
|
||||||
|
return redirect(url_for('admin_borrowings'))
|
||||||
|
|
||||||
|
|
||||||
invoice_number = existing_invoice.get('invoice_number') or _build_invoice_number(borrow_doc['_id'], now)
|
invoice_number = existing_invoice.get('invoice_number') or _build_invoice_number(borrow_doc['_id'], now)
|
||||||
item_name = item_doc.get('Name', '')
|
item_name = item_doc.get('Name', '')
|
||||||
item_code = item_doc.get('Code_4', '')
|
|
||||||
|
|
||||||
invoice_data = {
|
invoice_data = {
|
||||||
'invoice_number': invoice_number,
|
'invoice_number': invoice_number,
|
||||||
|
|||||||
Reference in New Issue
Block a user