diff --git a/Web/app.py b/Web/app.py index 742ed38..c063cda 100755 --- a/Web/app.py +++ b/Web/app.py @@ -9108,11 +9108,15 @@ def admin_add_invoice_correction(borrow_id): def library_item_invoices(item_id): """Show all stored invoices for one specific library item.""" 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')) + if not cfg.MODULES.is_enabled('library'): flash('Bibliotheks-Modul ist deaktiviert.', 'error') return redirect(url_for('home_admin')) + current_permissions = us.get_effective_permissions(session['username']) 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') 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_str = str(item_id_obj) 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]}, 'InvoiceData': {'$exists': True, '$ne': {}} }, @@ -9157,19 +9159,27 @@ def library_item_invoices(item_id): entries = [] for borrow_doc in borrow_docs: invoice_data = borrow_doc.get('InvoiceData') or {} + 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_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({ 'borrow_id': str(borrow_doc.get('_id')), 'borrow_status': borrow_doc.get('Status', ''), '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_end': borrow_doc.get('End').strftime('%d.%m.%Y %H:%M') if isinstance(borrow_doc.get('End'), datetime.datetime) else '', + 'borrow_start': borrow_doc.get('Start').strftime('%d.%m.%Y %H:%M') if isinstance( + 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_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_created_at': created_at_display, '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'), mail_module_enabled=cfg.MODULES.is_enabled('mail') ) + except Exception as e: app.logger.error(f"Error loading invoice history for item {item_id}: {e}") flash('Fehler beim Laden der Rechnungshistorie.', 'error')