This commit is contained in:
+19
-8
@@ -9108,11 +9108,15 @@ def admin_add_invoice_correction(borrow_id):
|
|||||||
def library_item_invoices(item_id):
|
def library_item_invoices(item_id):
|
||||||
"""Show all stored invoices for one specific library item."""
|
"""Show all stored invoices for one specific library item."""
|
||||||
if 'username' not in session:
|
if 'username' not in session:
|
||||||
flash('Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!', 'error')
|
flash(
|
||||||
|
'Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!',
|
||||||
|
'error')
|
||||||
return redirect(url_for('login'))
|
return redirect(url_for('login'))
|
||||||
|
|
||||||
if not cfg.MODULES.is_enabled('library'):
|
if not cfg.MODULES.is_enabled('library'):
|
||||||
flash('Bibliotheks-Modul ist deaktiviert.', 'error')
|
flash('Bibliotheks-Modul ist deaktiviert.', 'error')
|
||||||
return redirect(url_for('home_admin'))
|
return redirect(url_for('home_admin'))
|
||||||
|
|
||||||
current_permissions = us.get_effective_permissions(session['username'])
|
current_permissions = us.get_effective_permissions(session['username'])
|
||||||
|
|
||||||
if not current_permissions['pages'].get('library_loans_admin', False):
|
if not current_permissions['pages'].get('library_loans_admin', False):
|
||||||
@@ -9135,13 +9139,11 @@ def library_item_invoices(item_id):
|
|||||||
flash('Bibliotheksmedium nicht gefunden.', 'error')
|
flash('Bibliotheksmedium nicht gefunden.', 'error')
|
||||||
return redirect(url_for('library_loans_admin'))
|
return redirect(url_for('library_loans_admin'))
|
||||||
|
|
||||||
# Hole die ID sowohl als ObjectId als auch als String
|
|
||||||
item_id_obj = item_doc.get('_id')
|
item_id_obj = item_doc.get('_id')
|
||||||
item_id_str = str(item_id_obj)
|
item_id_str = str(item_id_obj)
|
||||||
|
|
||||||
borrow_docs = list(ausleihungen.find(
|
borrow_docs = list(ausleihungen.find(
|
||||||
{
|
{
|
||||||
# $in sucht nach Treffern, egal ob die ID als String oder ObjectId in der DB steht
|
|
||||||
'Item': {'$in': [item_id_str, item_id_obj]},
|
'Item': {'$in': [item_id_str, item_id_obj]},
|
||||||
'InvoiceData': {'$exists': True, '$ne': {}}
|
'InvoiceData': {'$exists': True, '$ne': {}}
|
||||||
},
|
},
|
||||||
@@ -9157,19 +9159,27 @@ def library_item_invoices(item_id):
|
|||||||
entries = []
|
entries = []
|
||||||
for borrow_doc in borrow_docs:
|
for borrow_doc in borrow_docs:
|
||||||
invoice_data = borrow_doc.get('InvoiceData') or {}
|
invoice_data = borrow_doc.get('InvoiceData') or {}
|
||||||
|
|
||||||
created_at = invoice_data.get('created_at')
|
created_at = invoice_data.get('created_at')
|
||||||
created_at_display = created_at.strftime('%d.%m.%Y %H:%M') if isinstance(created_at, datetime.datetime) else (str(created_at) if created_at else '')
|
created_at_display = created_at.strftime('%d.%m.%Y %H:%M') if isinstance(created_at,
|
||||||
|
datetime.datetime) else (
|
||||||
|
str(created_at) if created_at else '')
|
||||||
|
|
||||||
paid_at = invoice_data.get('paid_at')
|
paid_at = invoice_data.get('paid_at')
|
||||||
paid_at_display = paid_at.strftime('%d.%m.%Y %H:%M') if isinstance(paid_at, datetime.datetime) else (str(paid_at) if paid_at else '')
|
paid_at_display = paid_at.strftime('%d.%m.%Y %H:%M') if isinstance(paid_at, datetime.datetime) else (
|
||||||
|
str(paid_at) if paid_at else '')
|
||||||
|
|
||||||
entries.append({
|
entries.append({
|
||||||
'borrow_id': str(borrow_doc.get('_id')),
|
'borrow_id': str(borrow_doc.get('_id')),
|
||||||
'borrow_status': borrow_doc.get('Status', ''),
|
'borrow_status': borrow_doc.get('Status', ''),
|
||||||
'borrow_user': borrow_doc.get('User', ''),
|
'borrow_user': borrow_doc.get('User', ''),
|
||||||
'borrow_start': borrow_doc.get('Start').strftime('%d.%m.%Y %H:%M') if isinstance(borrow_doc.get('Start'), datetime.datetime) else '',
|
'borrow_start': borrow_doc.get('Start').strftime('%d.%m.%Y %H:%M') if isinstance(
|
||||||
'borrow_end': borrow_doc.get('End').strftime('%d.%m.%Y %H:%M') if isinstance(borrow_doc.get('End'), datetime.datetime) else '',
|
borrow_doc.get('Start'), datetime.datetime) else '',
|
||||||
|
'borrow_end': borrow_doc.get('End').strftime('%d.%m.%Y %H:%M') if isinstance(borrow_doc.get('End'),
|
||||||
|
datetime.datetime) else '',
|
||||||
'invoice_number': invoice_data.get('invoice_number', ''),
|
'invoice_number': invoice_data.get('invoice_number', ''),
|
||||||
'invoice_amount': _format_money_value(invoice_data.get('amount')),
|
'invoice_amount': _format_money_value(invoice_data.get('amount')) if hasattr(invoice_data,
|
||||||
|
'get') else '0,00',
|
||||||
'invoice_reason': invoice_data.get('damage_reason', ''),
|
'invoice_reason': invoice_data.get('damage_reason', ''),
|
||||||
'invoice_created_at': created_at_display,
|
'invoice_created_at': created_at_display,
|
||||||
'invoice_created_by': invoice_data.get('created_by', ''),
|
'invoice_created_by': invoice_data.get('created_by', ''),
|
||||||
@@ -9192,6 +9202,7 @@ def library_item_invoices(item_id):
|
|||||||
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
|
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
|
||||||
mail_module_enabled=cfg.MODULES.is_enabled('mail')
|
mail_module_enabled=cfg.MODULES.is_enabled('mail')
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
app.logger.error(f"Error loading invoice history for item {item_id}: {e}")
|
app.logger.error(f"Error loading invoice history for item {item_id}: {e}")
|
||||||
flash('Fehler beim Laden der Rechnungshistorie.', 'error')
|
flash('Fehler beim Laden der Rechnungshistorie.', 'error')
|
||||||
|
|||||||
Reference in New Issue
Block a user