fix: Schon verbundene Buchungen stehen nicht mehr bei jedem Regel-Lauf unter "uebersprungen"
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
54ff6d6896
commit
f52113e05d
@@ -12,6 +12,7 @@ unangetastet und werden gemeldet. Geraten wird nichts.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from sqlalchemy import select, union
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ..models import (
|
||||
@@ -21,6 +22,7 @@ from ..models import (
|
||||
CategoryGroup,
|
||||
CategoryKind,
|
||||
Transaction,
|
||||
TransferLink,
|
||||
TxnType,
|
||||
User,
|
||||
)
|
||||
@@ -81,11 +83,21 @@ def wende_an(db: Session, user: User, nur_vorschau: bool = True) -> dict:
|
||||
.join(CategoryGroup, CategoryGroup.id == Category.group_id)
|
||||
.filter(Category.owner_id == user.id)
|
||||
}
|
||||
# Verknuepfte Buchungen sind erledigt – genau wie in der Arbeitsliste.
|
||||
# Ohne diesen Ausschluss passen sie weiter auf die Uebertrags-Regel, werden
|
||||
# abgelehnt („schon verbunden“) und stehen bei JEDEM Lauf erneut unter
|
||||
# „uebersprungen“. Dort verdecken sie die wirklich offenen Buchungen und
|
||||
# fuellen obendrein das Limit.
|
||||
verknuepft = union(
|
||||
select(TransferLink.from_txn_id).where(TransferLink.owner_id == user.id),
|
||||
select(TransferLink.to_txn_id).where(TransferLink.owner_id == user.id),
|
||||
)
|
||||
offen = (
|
||||
db.query(Transaction)
|
||||
.filter(Transaction.owner_id == user.id,
|
||||
Transaction.category_id.is_(None),
|
||||
Transaction.type != TxnType.transfer)
|
||||
Transaction.type != TxnType.transfer,
|
||||
Transaction.id.notin_(verknuepft))
|
||||
.order_by(Transaction.date, Transaction.id)
|
||||
.limit(MAX_BUCHUNGEN)
|
||||
.all()
|
||||
|
||||
Reference in New Issue
Block a user