Verified Commit a1e8106e authored by Jakob Moser's avatar Jakob Moser
Browse files

Introduce BudgetarySubItem type

parent 67e1c554
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
from dataclasses import dataclass
from decimal import Decimal
from typing import Any

from .BudgetarySubItem import BudgetarySubItem


@dataclass(frozen=True, eq=False)
@@ -10,12 +13,20 @@ class BudgetaryItem:
    740.0208, Projekte und Veranstaltungen kultureller Art, 550.00 €

    Every payment order needs to reference a budgetary item out of which the money is taken.

    An item in a budget plan can have sub items.
    """

    id: str
    name: str
    amount: Decimal
    sub_items: tuple[BudgetarySubItem, ...] = ()

    @property
    def as_dict(self) -> dict[str, str]:
        return {"id": self.id, "name": self.name, "amount": str(self.amount)}
    def as_dict(self) -> dict[str, Any]:
        return {
            "id": self.id,
            "name": self.name,
            "amount": str(self.amount),
            "subItems": [sub_item.as_dict for sub_item in self.sub_items],
        }
+18 −0
Original line number Diff line number Diff line
from dataclasses import dataclass
from decimal import Decimal


@dataclass(frozen=True, eq=False)
class BudgetarySubItem:
    """A sub-item of an item in a budget plan.

    Has a name and an amount, e.g.,
    Sommerfest, 350.00 €
    """

    name: str
    amount: Decimal

    @property
    def as_dict(self) -> dict[str, str]:
        return {"name": self.name, "amount": str(self.amount)}