Adding auto creation of opening transaction on create

This commit is contained in:
2025-02-12 23:13:26 +01:00
parent 825fa41bd9
commit f4bf1a2b30
6 changed files with 56 additions and 26 deletions

View File

@@ -1,6 +1,8 @@
from sqlmodel import select
from account.models import Account
from transaction.models import Split, Transaction
class AccountResource:
@classmethod
@@ -18,6 +20,25 @@ class AccountResource:
model.parent_account = cls.get(session, model.parent_account_id)
return model.parent_account
@classmethod
def create_opening_transaction(cls, session, account, schema):
equity_account = cls.get_by_path(session, "/Equity/")
t = Transaction()
split_opening = Split()
split_opening.id = 0
split_opening.transaction = t
split_opening.account = account
split_opening.amount = schema.opening_balance
split_equity = Split()
split_equity.id = 1
split_equity.transaction = t
split_equity.account = equity_account
split_equity.amount = - schema.opening_balance
account.transaction_splits.append(split_opening)
@classmethod
def schema_to_model(cls, session, schema, model=None):
try:
@@ -27,6 +48,7 @@ class AccountResource:
schema.path = ""
schema.family = ""
model = Account.model_validate(schema)
cls.create_opening_transaction(session, model, schema)
except Exception as e:
print(e)
raise
@@ -34,6 +56,7 @@ class AccountResource:
model.compute_family()
cls.validate_parent(session, model)
model.compute_path()
return model
@classmethod
@@ -68,12 +91,10 @@ class AccountResource:
@classmethod
def create_equity_account(cls, session):
account_db = Account(name="Equity", family="Equity", type="Equity", path="/Equity/")
session.add(account_db)
session.commit()
session.refresh(account_db)
return account_db
if cls.get_by_path(session, "/Equity/") is None:
account_db = Account(name="Equity", family="Equity", type="Equity", path="/Equity/")
session.add(account_db)
session.commit()
@classmethod
def select(cls):