mirror of
https://github.com/Zproger/Aurum.git
synced 2026-10-14 03:26:40 +07:00
Один чек часто смешивает несколько категорий трат (гипермаркет: часть — продукты, часть — бытовая химия). Раньше такую транзакцию приходилось огрублять до одной категории или дробить вручную на несколько записей. Теперь у транзакции есть второй режим: 2+ доли (TransactionSplit) с суммами по разным категориям, которые обязаны в точности складываться в сумму транзакции. - Новая модель TransactionSplit + миграция. - split_rule_violation() проверяет инварианты на создании и редактировании. - category_rollup.py — общий helper, которым теперь пользуются Dashboard, отчёт по категориям и бюджеты, учитывая доли сплитов наравне с обычными транзакциями. - Фильтр по категории в списке транзакций находит и сплит-транзакции. - Сплиты попадают в полный бэкап/восстановление БД. - 13 новых backend-тестов. - Фронтенд: переключатель «Разбить на несколько категорий» в форме транзакции с повторяемыми строками и индикатором остатка суммы; строка транзакции в списке показывает все категории сплита.
29 lines
794 B
Python
29 lines
794 B
Python
from app.models.account import Account
|
|
from app.models.asset import Asset, AssetValuation
|
|
from app.models.budget import Budget
|
|
from app.models.category import Category
|
|
from app.models.crypto import CryptoHolding, CryptoSyncState, CryptoTransaction
|
|
from app.models.goal import Goal, GoalContribution
|
|
from app.models.recurring import RecurringTransaction
|
|
from app.models.settings import AppSettings
|
|
from app.models.tag import Tag
|
|
from app.models.transaction import Transaction, TransactionSplit
|
|
|
|
__all__ = [
|
|
"Account",
|
|
"AppSettings",
|
|
"Asset",
|
|
"AssetValuation",
|
|
"Budget",
|
|
"Category",
|
|
"CryptoHolding",
|
|
"CryptoSyncState",
|
|
"CryptoTransaction",
|
|
"Goal",
|
|
"GoalContribution",
|
|
"RecurringTransaction",
|
|
"Tag",
|
|
"Transaction",
|
|
"TransactionSplit",
|
|
]
|