Handle missing supplier_invoices.sag_id in supplier invoice listing

This commit is contained in:
Christian 2026-06-11 09:45:11 +02:00
parent 1e84ba267c
commit 96f4a36724

View File

@ -9,7 +9,7 @@ from typing import List, Dict, Optional
from datetime import datetime, date, timedelta from datetime import datetime, date, timedelta
from decimal import Decimal from decimal import Decimal
from pathlib import Path from pathlib import Path
from app.core.database import execute_query, execute_insert, execute_update, execute_query_single from app.core.database import execute_query, execute_insert, execute_update, execute_query_single, table_has_column
from app.core.config import settings from app.core.config import settings
from app.services.economic_service import get_economic_service from app.services.economic_service import get_economic_service
from app.services.ollama_service import ollama_service from app.services.ollama_service import ollama_service
@ -710,8 +710,29 @@ async def list_supplier_invoices(
params.append(vendor_id) params.append(vendor_id)
if sag_id: if sag_id:
query += " AND si.sag_id = %s" if table_has_column("supplier_invoices", "sag_id"):
params.append(sag_id) query += " AND si.sag_id = %s"
params.append(sag_id)
elif (
table_has_column("supplier_invoice_relations", "supplier_invoice_id")
and table_has_column("supplier_invoice_relations", "relation_type")
and table_has_column("supplier_invoice_relations", "relation_id")
):
query += """
AND EXISTS (
SELECT 1
FROM supplier_invoice_relations sir
WHERE sir.supplier_invoice_id = si.id
AND sir.relation_type = 'sag'
AND sir.relation_id = %s
)
"""
params.append(sag_id)
else:
logger.warning(
"⚠️ supplier invoice sag filter requested, but no schema link available (sag_id column/relation table missing)"
)
query += " AND 1 = 0"
if overdue_only: if overdue_only:
query += " AND si.due_date < CURRENT_DATE AND si.paid_date IS NULL" query += " AND si.due_date < CURRENT_DATE AND si.paid_date IS NULL"