transactions now use their orders total_amount

This commit is contained in:
2026-05-17 11:36:29 +02:00
parent d8ad5f4f0b
commit 7856123bc0
4 changed files with 80 additions and 18 deletions

View File

@@ -1,6 +1,8 @@
import argparse
from collections import defaultdict
import csv
from datetime import datetime, time
from decimal import Decimal
import sys
from sqlalchemy import select
@@ -75,6 +77,10 @@ def import_csv(filepath: str):
"Error: 'Essen Kind' product not found in database. Please create it before importing."
)
orders_by_account_and_date = defaultdict(
lambda: defaultdict(lambda: Order(user_id=1))
)
for row in rows:
transaction_type = row["typ"].lower()
if transaction_type not in [
@@ -107,7 +113,7 @@ def import_csv(filepath: str):
timestamp = datetime.combine(row["datum"], time(18, 30, 0))
order = Order(user_id=1)
order = orders_by_account_and_date[account.id][row["datum"]]
order.items.append(
OrderItem(
@@ -121,21 +127,22 @@ def import_csv(filepath: str):
quantity=quantity,
)
)
transaction = Transaction(
type="order",
timestamp=timestamp,
total_amount=row["betrag"],
quantity=quantity,
account_id=account.id,
order=order,
)
db.add(transaction)
if not order.transaction:
transaction = Transaction(
type="order",
timestamp=timestamp,
quantity=quantity,
account_id=account.id,
order=order,
)
db.add(transaction)
else:
order.transaction._total_amount = Decimal(order.total_amount)
elif transaction_type == "einzahlung" or transaction_type == "einkauf":
transaction = Transaction(
type="deposit",
timestamp=datetime.combine(row["datum"], time(12, 0, 0)),
total_amount=row["betrag"],
_total_amount=row["betrag"],
account_id=account.id,
)
db.add(transaction)
@@ -143,7 +150,7 @@ def import_csv(filepath: str):
transaction = Transaction(
type="withdrawal",
timestamp=datetime.combine(row["datum"], time(12, 0, 0)),
total_amount=row["betrag"],
_total_amount=row["betrag"],
account_id=account.id,
)
db.add(transaction)